通常的安全策略一般可以基于以下两点制定。
(1)准许除明确拒绝以外的全部访问:所有未被禁止的都是合法的。
(2)拒绝访问除明确准许以外的全部访问:所有未被允许的都是非法的。
从合法的和非法的IP地址的数量来看,在发生SYN Flood攻击的时候,非法的IP地址显然大大多于合法的IP地址数量。因此,只要设置iptables的默认策略为拒绝iptables -P INPUT DROP、读取合法的IP地址的规则列表即可,可以明显提高响应的速度。不过,响应速度在更大程度上还是取决于读文件的快慢。
SYN Flood攻击虽然原理简单,但是造成的危害却十分严重。通过修改内核参数或使用TCP Cookie技术只能在一定程度上减轻SYN Flood攻击的影响;单独使用iptables建立包过滤防火墙则显得势单力薄,而且只有在遭受到攻击后才能根据数据报的特征(如源IP地址)进行包过滤,这种"亡羊补牢"对于大规模的DDoS更是收效甚微。将入侵检测系统和包过滤系统相结合,是一种比较好的抗SYN Flood攻击方法。文件的灵活性使得大多数入侵检测系统与iptables能够进行良好的集成。不过,使用文件仍然存在响应速度上的缺陷,在实时性方面还有待于进一步提高。
防DDoS脚本示范如下:
- #!/bin/bash
- netstat -an|grep SYN_RECV|awk '{print$5}'|awk -F: '{print$1}'|sort|uniq -c|sort -rn|awk
- '{if ($1>5) print$2}'>/tmp/dropip
- for i in $(cat /tmp/dropip)
- do
- /sbin/iptables -I INPUT -s $i -j DROP
- echo “$i kill at `date`” >>/var/log/ddos
- don
|