遭遇同步(SYN)攻击的基本解决方法

时间:2006-12-19 15:54:10  来源:IT专家网  作者:佚名
曾几何时,Linux系统还被追捧为安全性较好的系统,很多系统管理员为自己管理的Linux服务器很少被攻击成功而感到自豪。但步入新的Internet年代,各种各样的攻击逐步盯上了Linux,而TCP/IP网络固有的缺陷也被Cracker大肆利用。

  很不走运,手下管理的多台Linux服务器也遭到了不同类型、不同程度的攻击,包括SYN攻击,CLOSE_WAIT攻击,抢占资源(如web的连接等)等等。如果是那些少量ip组成的大规模攻击,一般情况下封ip就能比较好的解决问题了。

  如果是DDOS就更难办了。这两天,有2台服务器遇到了大规模的SYN_RECV DDOS攻击。主要是针对web的,导致了web访问缓慢并停止服务,甚至机器失去了响应。要对付SYN攻击,得从多个方面入手,如果是分布很广的攻击,还得从交换机、路由器等更高一级的层次进行杜绝。

  下面是应付这几天攻击的基本方法:

  1)SYN cookie

  在linux下以root权限执行:

  echo 1 > /proc/sys/net/ipv4/tcp_syncookies

  这个方法打开了syncookie功能,但实际效果几乎感觉不到。

  2)增大backlog

  通过增加backlog的数值,可以一定程度减缓大量SYN请求导致TCP连接阻塞的状况,一般这个数值系统默认是1024,实验增加到1280~2048:

  echo "2048" > /proc/sys/net/ipv4/tcp_max_syn_backlog

  这样在强度不是很高的攻击下,系统响应能力提高了一点。

  3)缩短retries次数

  Linux系统默认的tcp_synack_retries是5次,将这个数值减少可以提高系统响应能力,实验改为2次:

  echo "2" > /proc/sys/net/ipv4/tcp_synack_retries

  修改后,SYN_RECV的数量有了少量减少,系统响应也快了一些。

  4)限制SYN频率

  上述的几个方法实际效果并不理想,尤其是DDOS攻击基本无效,目前比较有效的是对SYN的频率和次数进行限制,这样最大限度的控制了单个IP地址发动攻击的能力。

  例如将SYN请求的次数限制在30次每分钟,系统默认是5次/秒,显然太高,同时将burst从默认的5个降低到2个。

  /sbin/iptables -A INPUT -p tcp --tcp-flags SYN,ACK,FIN,RST SYN -m \

  limit --limit 30/m --limit-burst 2 -j ACCEPT

  注意: 该命令在shell下输入,'\'符号表示续行。

  进行此操作后,对正常的用户而言无任何感觉上的差异,而并发的SYN请求量下降了不少,服务响应基本正常了。

文章评论

共有 位CH网友发表了评论 查看完整内容