Linux系统下的DDOS***防范

squid主要是利用其端口映射的功能,可以将80端口转换一下,其实一般的DDOS***可以修改/proc/sys/net/ipv4 /tcp_max_syn_backlog里的参数就行了,默认参数一般都很小,设为8000以上,一般的DDOS***就可以解决了。如果上升到 timeout阶段,可以将/proc/sys/net/ipv4/tcp_fin_timeout设小点。

  大家都在讨论DDOS,个人认为目前没有真正解决的方法,只是在缓冲和防御能力上的扩充,跟***玩一个心理战术,看谁坚持到最后,网上也有很多做法,例如syncookies等,就是复杂点。

sysctl -w net.ipv4.icmp_echo_ignore_all=1
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
sysctl -w net.ipv4.tcp_max_syn_backlog="2048"
sysctl -w net.ipv4.tcp_synack_retries="3"
iptables -A INPUT -i eth0 -p tcp --syn -j syn-flood
# Limit 12 connections per second (burst to 24)
iptables -A syn-flood -m limit --limit 12/s --limit-burst 24 -j RETURN

  可以试着该该:

  iptbales -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT

  虚拟主机服务商在运营过程中可能会受到******,常见的***方式有SYN,DDOS等。

  通过更换IP,查找被***的站点可能避开***,但是中断服务的时间比较长。比较彻底的解决方法是添置硬件防火墙。不过,硬件防火墙价格比较昂贵。可以考虑利用Linux系统本身提供的防火墙功能来防御。

  1. 抵御SYN

  SYN***是利用TCP/IP协议3次握手的原理,发送大量的建立连接的网络包,但不实际建立连接,最终导致被***服务器的网络队列被占满,无法被正常用户访问。

  Linux内核提供了若干SYN相关的配置,用命令:

  sysctl -a | grep syn

  看到:

net.ipv4.tcp_max_syn_backlog = 1024
net.ipv4.tcp_syncookies = 0
net.ipv4.tcp_synack_retries = 5
net.ipv4.tcp_syn_retries = 5
tcp_max_syn_backlog是SYN队列的长度,tcp_syncookies是一个开关,是否打开SYN Cookie

  功能,该功能可以防止部分SYN***。tcp_synack_retries和tcp_syn_retries定义SYN的重试次数。

  加大SYN队列长度可以容纳更多等待连接的网络连接数,打开SYN Cookie功能可以阻止部分SYN***,降低重试次数也有一定效果。

  调整上述设置的方法是:

  增加SYN队列长度到2048:

  sysctl -w net.ipv4.tcp_max_syn_backlog=2048

  打开SYN COOKIE功能:

  sysctl -w net.ipv4.tcp_syncookies=1

  降低重试次数:

  sysctl -w net.ipv4.tcp_synack_retries=3

  sysctl -w net.ipv4.tcp_syn_retries=3

为了系统重启动时保持上述配置,可将上述命令加入到/etc/rc.d/rc.local文件中

 netstat 工具来检测SYN***
  # netstat -n -p -t
  tcp0 0 10.11.11.11:23124.173.152.8:25882 SYN_RECV-
  tcp0 0 10.11.11.11:23236.15.133.204:2577 SYN_RECV-
  tcp0 0 10.11.11.11:23127.160.6.129:51748 SYN_RECV-
  ...
  LINUX系统中看到的,很多连接处于SYN_RECV状态(在WINDOWS系统中是SYN_RECEIVED状态),
  源IP地址都是随机的,表明这是一种带有IP欺骗的SYN***。
  # netstat -n -p -t | grep SYN_RECV | grep :80 | wc -l
  324
  查看在LINUX环境下某个端囗的未连接队列的条目数,显示TCP端囗22的未连接数有324个,
  虽然还远达不到系统极限,但应该引起管理员的注意。
  [root@pub wxjsr]# netstat -na | grep SYN_RECV
  tcp 0 0 58.193.192.20:80 221.0.108.162:32383 SYN_RECV
  tcp 0 0 58.193.192.20:80 125.85.118.231:2601 SYN_RECV
  tcp 0 0 58.193.192.20:80 222.242.171.215:2696 SYN_RECV
  tcp 0 0 58.193.192.20:80 116.52.10.51:2629 SYN_RECV
  tcp 0 0 58.193.192.20:80 218.171.175.157:1117
  [root@pub wxjsr]# netstat -na | grep SYN_RECV |wc
   11 66 979
  查看系统SYN相关的配置
  Linux内核提供了若干SYN相关的配置,用命令: sysctl -a | grep syn
  [root@metc apache2]# /sbin/sysctl -a | grep syn
  net.ipv6.conf.default.max_desync_factor = 600
  net.ipv6.conf.all.max_desync_factor = 600
  net.ipv6.conf.eth0.max_desync_factor = 600
  net.ipv6.conf.lo.max_desync_factor = 600
  net.ipv4.netfilter.ip_conntrack_tcp_timeout_syn_recv = 60
  net.ipv4.netfilter.ip_conntrack_tcp_timeout_syn_sent = 120
  net.ipv4.tcp_max_syn_backlog = 1280
  net.ipv4.tcp_syncookies = 1
  net.ipv4.tcp_synack_retries = 2
  net.ipv4.tcp_syn_retries = 5
  fs.quota.syncs = 18
  防范SYN***设置
  #缩短SYN- Timeout时间:
  iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT
  iptables -A INPUT -i eth0 -m limit --limit 1/sec --limit-burst 5 -j ACCEPT
  #每秒 最多3个 syn 封包 进入 表达为 :
  iptables -N syn-flood
  iptables -A INPUT -p tcp --syn -j syn-flood
  iptables -A syn-flood -p tcp --syn -m limit --limit 1/s --limit-burst 3 -j RETURN
  iptables -A syn-flood -j REJECT
  #设置syncookies:
  sysctl -w net.ipv4.tcp_syncookies=1
  /sbin/sysctl -w net.ipv4.tcp_max_syn_backlog=3000
  /sbin/sysctl -w net.ipv4.tcp_synack_retries=1
  /sbin/sysctl -w net.ipv4.tcp_syn_retries=1
  sysctl -w net.ipv4.conf.all.send_redirects=0
  sysctl -w net.ipv4.conf.all.accept_redirects=0
  sysctl -w net.ipv4.conf.all.forwarding=0
  /sbin/sysctl -w net.ipv4.icmp_echo_ignore_broadcasts=1
  /sbin/sysctl -w net.ipv4.conf.default.accept_source_route=0 # 禁用icmp源路由选项
  /sbin/sysctl -w net.ipv4.icmp_echo_ignore_broadcasts=1 # 忽略icmp ping广播包,应开启
  /sbin/sysctl -w net.ipv4.icmp_echo_ignore_all=1 # 忽略所有icmp ping数据,覆盖上一项

转载于:https://blog.51cto.com/aixuexi/1065974

Linux系统下的DDOS***防范相关推荐

  1. 计划任务执行php文件,linux系统下添加计划任务执行php文件方法

    在web开发过程中,经常需要设定一些定期执行的任务,比如商品定时上下架.我们以php文件为例,讲解linux下的计划任务. 方法/步骤 1.打开linux系统命令行界面. 在命令行界面中输入如下命令: ...

  2. linux的翻译系统开发,Linux系统下的翻译神器——Goldendict

    Linux系统下的翻译神器--Goldendict 学习Linux时明显感受到学习英文的重要性.绝大多数Linux的发行版英文版的功能要远强于中文.因此一款好的翻译软件是了解熟悉Linux系统的必需品 ...

  3. 实战证明LINUX系统下密钥对验证的安全性

    实战证明LINUX系统下密钥对验证的安全性  密钥对验证:要求提供匹配的密钥信息才能通过验证,首先在客户端创建一对密钥文件(公钥.私钥),后把公钥文件放到需要远程连接的服务器中.远程登录时,系统将使用 ...

  4. Linux系统下活用History命令

    Linux系统下可通过history命令查看用户所有的历史操作记录,在安全应急响应中起着非常重要的作用,但在未进行附加配置情况下,history命令只能查看用户历史操作记录,并不能区分用户以及操作时间 ...

  5. Win或Linux系统下用conda安装Open Babel

    一.安装Anaconda或Miniconda Win或者Linux系统下Anaconda或Miniconda安装,不赘述,网上很多教程. 二.利用conda安装openbabel install -c ...

  6. linux的软件包是独立的,Linux系统下软件包的安装

    (以下内容是云课堂Linux课程的笔记,个人纯手工记录,课程以RedHat系列为主) Linux系统下软件包的安装方式包括:源代码安装.本地二进制包安装(rpm命令手工安装).在线二进制包安装(yum ...

  7. Linux系统下如何加载U盘或移动硬盘

    Linux系统下如何加载U盘或移动硬盘 2007-05-15 00:00作者:赵彪出处:论坛整理责任编辑:原野 - 1.在插入U盘或硬盘之前,在命令行窗口运行:fdisk -l 命令,系统将显示目前所 ...

  8. linux 物理内存 分配,[linux物理内存分配]Linux系统下如何查看物理内存占用率

    你了解linux系统下如何查看物理内存占用率吗?跟着答.案.网 ZqNf.Com小编一起学习吧linux系统下如何查看物理内存占用率. linux系统下如何查看物理内存占用率方法 linux下看内存和 ...

  9. 重启部署在Linux系统下的tomcat服务

    2019独角兽企业重金招聘Python工程师标准>>> 重启部署在Linux系统下的tomcat服务具体的操作步骤: 1.在Winscp上建立连接,输入用户和密码,这个密码一般是看不 ...

最新文章

  1. Tarjan求割点桥
  2. 算法------四数相加 II (java 版本)
  3. .NET新手系列(五)
  4. 非看不可!飞猪技术专家教你在家高效办公!
  5. redis 双写一致性 看一篇成高手系列 一
  6. CodeForces - 1430E String Reversal(线段树+模拟)
  7. 如何构建基于.NET Core和云环境下的微服务技术体系?
  8. “光纤之父”高锟辞世!但他的诺奖演讲辞, 青年不可不读!
  9. python3实用编程技巧_6.python3实用编程技巧进阶(一)
  10. 用纯css实现的html5 logo标志
  11. ARM产品系列对应架构图
  12. mysql_分页、联合查询
  13. 我的工程学导论学习心得1
  14. 场景分析法设计测试用例
  15. 【STM8】两个单片机之间的Lora通讯实验
  16. 新品发布会直播推广的优势
  17. 计算机基础--作业5,计算机基础第5次作业-第五章-Powerpoint知识题 (精选可编辑)...
  18. 浅浅的记录一下seo搜索引擎优化
  19. 主流温度测量方案对比分析(含国产温度传感器芯片GX18B20)
  20. oracle如果查询出的值为null记为0

热门文章

  1. ajax传值到ashx接收反序列
  2. Python 框架篇
  3. Windbg调试命令详解(3)
  4. ES6 学习笔记(基础)
  5. 吴恩达《机器学习》课程总结(16)推荐系统
  6. 一步一步实现iOS QQ第三方登录
  7. linux shell 编写菜单脚本事例
  8. fiddler和xampp安装成功后,网站打不开的原因
  9. JGroups 入门实践(转)
  10. mysql5.5在linux下的集群,同步和配置优化