English
 电子信箱
 加入收藏

  威盾防火墙 >> 新闻中心 >> 业界动态 >> 防范DDoS 攻击

 

防范DDoS 攻击

威盾防火墙 2015-01-22

 

防范DDoS 攻击

几乎所有的主机平台都有抵御DDoS 的设置。以Linux 操作系统为例,其防范技术主要分为3 大类:第一类是通过合理配置系统,达到资源最优化和利用最大化;第二类是通过加固TCP/IP 协议栈来防范DDoS ;第三类是通过防火墙、路由器等过滤网关,有效地探测攻击类型并阻击攻击。

必须明确的是,DDoS 攻击在TCP 连接原理上是合法的,除非TCP 协议重新设计,明确定义DDoS 和其他正常请求有何不同,否则不可能完全阻止DDoS 的攻击,我们所做的只是尽可能地减轻DDoS 攻击所带来的危害。

1. 服务器设置

除了防范他人攻击外,也要提防不要成为被人利用的对象。可以通过以下方法来实现:

(1)安全配置系统,杜绝攻击漏洞,及时安装系统补丁程序。

(2)关闭不必要的服务,并优化服务。

(3)有规律地查看日志。

(4)利用相关工具检查文件完整性。

2、加固TCP / IP 协议栈

这里通过修改TCP / IP 参数来控制连接资源的利用。

(1)SYN Cookies 技术

限制同时打开的SYN半连接数。以RedHat Linux 为例,通过在启动环境中设置以下命令来启用SYN Cookies :

  1. #echo 1> /proc/sys/net/ipv4/tcp_  
  2. syncookies 

也可以通过修改其他参数, 或者使用/proc/sys/net/ipv4/netfilter/ip_contrack_* 来实现。

(2)增加最大半连接数

加大未连接队列空间。Linux 使用变量tcp-max-syn_backlog 来定义backlog 队列容纳的最大半连接数。在RedHat Linux 中,该变量的默认值为256,在RHEL AS Linux中则是1024。该数值是远远不够的,一次强度不大的SYN 攻击就能使半连接队列占满。通过以下命令可以修改此变量值:

  1. #sysctl -W net.ipv4.tcp_max_syn_  
  2. backlog="2048" 

(3)缩短SYN 半连接的Timeout 时间

RedHat Linux 使用变量tcP_synack_retries 定义重传次数,其默认值是5,总超时时间需要3 分钟。

  1. #sysctl -W net.ipv4.tcp_ synack_  
  2. retries="0" 

(4)及时更新系统补丁

可以添加如下脚本到Linux 的/etc/sysctl.conf 文件,重启后会自动启动,达到防御DDoS 的效果。

  1. ## add by geminis for syn crack  
  2. net.ipv4.tcp_syncookied=1 
  3. net.ipv4.tcp_max_syn_backlog="2048" 
  4. net.ipv4.tcp_synack_ retries="1" 

3. 防火墙防御

在网关超时设置处,将防火墙SYN 转发超时参数设置为小于服务器的Timeout。如果客户端在防火墙的Timeout时间内无响应,防火墙将发送终止RST 消息给服务器,使服务器从队列中删除该半连接,节省开销。

需要注意的是,网关超时参数设置不宜过小也不宜过大,超时参数设置过小会影响,正常的通信,设置过大则会影响防范SYN drome 攻击的效果,必须根据所处的网络环境来设置参数。

(1)SYN 网关:SYN 网关的原理是代替客户端发送ACK 消息,然后转发数据。SYN 网关收到服务器的SYN/ACK 包后,将该包转发给客户端,同时以客户端的名义给服务器发ACK 确认包。此时,服务器由半连接状态进入连接状态。当客户端确认包到达时,如果有数据则转发,否则丢弃。一般服务器所能承受的连接数量比半连接数量要大得多,所以这种方法能有效地减轻对服务器的攻击。

(2)SYN 代理:当客户端SYN 包到达过滤网关时,SYN 代理并不转发SYN 包,而是以服务器的名义主动回复SYN+ACK 包给客户。收到客户的ACK 包表明是正常访问,此时防火墙向服务器发送ACK 包,并完成三次握手。这里的防火墙作为独立的服务器,需要有较强的抵抗DDoS 攻击的能力。使用专用NP(网络处理器)及专用操作系统的高档防火墙都会具备这种功能。

  1. #!/bin/sh  
  2. #定义变量  
  3. MAX_TOTAL_SYN_RECV="1000" 
  4. MAX_PER_IP_SYN_RECV ="20" 
  5. MARK="SYN_RECV" 
  6. #定义链接状态为"SYN_ RECV"  
  7. PORT="80" 
  8. LOGFILE="/var/og/netstat_$MARK-  
  9. $PORT"  
  10. LOGFILE_IP="/var/log/netstat_  
  11. connect_ip.log"  
  12. DROP_IP_LOG="/var/log/netstat_syn_  
  13. drop_ip.log"  
  14. #iptables初始化,拒绝非法包和不明状态包  
  15. ,允许请求包和已连接的包进入  
  16. iptable -F -t filter  
  17. iptable -A INPUT -p TCP --syn -m  
  18. stat --state NEW -j DROP  
  19. iptables -A INPUT -p ALL - m state  
  20. --state INVALID -j DROP  
  21. iptables -A INPUT -p ALL -m state  
  22. -state ESTABLISHED,RELATED -j ACCEPT  
  23. #初始化变量  
  24. if [-z $MARK];then  
  25. MARK="LISTEN" 
  26. fi  
  27. if [-z $PORT];then  
  28. SPRT="tcp" 
  29. else  
  30. SPORT=":$PORT" 
  31. fi#  
  32. end  
  33. #保存netstat结果到指定记录文件中便于分析  
  34. netstat -atun|grep $MARK |grep  
  35. $SPORT 2>/dev/null >$LOGFILE  
  36. if [-s $DROP_IP_ LOG]; then  
  37. for i in `less$DROP_IP_ LOG|awk  
  38. '{print $1}`;  
  39. do  
  40. /sbin/iptables -A INPUT -p ALL -s  
  41. $i -j DROP  
  42. done  
  43. fi  
  44. for i in 'less $LOGFILE_ IP';  
  45. #统计同一IP的SYN-RECV状态  
  46. R E P E A T _ C O N N E C T _ N U M = ' g r e p $ i  
  47. $LOGFILE|wc -l  
  48. #如果超过预设的统一IP连接数,则拒绝此IP连  
  49. 接包进入  
  50. if [$REPEAT_CONNECT_ NUM -gt $MAX_  
  51. PER_IP_SYN_RECV];then  
  52. echo "$I $REPEAT_ CONNEC_NUM" >> 
  53. $DROP_ IP_LOG  
  54. iptables -A INPUT -p ALL -s $i -j  
  55. DROP  
  56. fid  
  57. one  
  58. #统计所有状态为SN_ RECV的数据包,如果数  
  59. 量超过预设则重置状态  
  60. ALL_CONNETC='uniq -u $LOGFILE|wc -l ' 
  61. echo $ALL_CONNECT  
  62. if [$ALL_CONNECT -gt $MAX_TOTAL_  
  63. SYN_ REC];then  
  64. echo $ALL_CONNECT  
  65. exit  
  66. fi 

该脚本一旦发现有恶意连接的IP 地址后,会马上生效,利用Iptables 命令阻止该IP 地址的任何请求,直到管理员手动去除为止。但是这种做法在某些情况下显得过于严格,因为该IP 也可能是一个公共出口。

解决方法是再配合一个释放IP,运行于cron 服务中,设置成每隔一段时间自动从Iptables 规则中去掉该IP 地址,时间可以根据具体网络连接情况设置。

【责任编辑:云霞 TEL:(010)68476606】

相关内容: 最新内容:
防御DDoS攻击的11种方法[2015-01-22]
利用GFW来防止DDOS攻击[2015-01-22]
DDoS 攻击过程看起来是这样的[2015-01-22]
企业面对深层攻击 IPS精确阻断技术成为解决关键[2015-01-21]
实战攻略:ARP病毒发起欺骗攻击解决方法[2015-01-21]
ScanSafe:近期3波SQL注入攻击100万中国网站[2015-01-21]
防御DDoS攻击的11种方法[2015-01-22]
利用GFW来防止DDOS攻击[2015-01-22]
DDoS 攻击过程看起来是这样的[2015-01-22]
IPS:互联网安全的盾牌[2015-01-21]
企业面对深层攻击 IPS精确阻断技术成为解决关键[2015-01-21]
企业中Web业务的安全现状[2015-01-21]