chumeng 2011-04-30
一:
来自http://www.inetbase.com/scripts/的ddos脚本。这套脚本的开发初衷就是为了防止ddos攻击,它周期性运行(比如每隔一秒),每次运行时使用netstat命令记录下当前的网络连接情况,从记录的数据中筛选出客户机的IP并统计出每个客户IP的连接数,将连接数与设定的阈值相比,如果一个IP有过多的连接,它将被放入黑名单。放入黑名单的IP在一段时间内(比如10分钟以内)向服务器发送的请求将被iptables丢弃。
这个脚本的不足的地方是:当一个IPV4的连接使用IPV6的socket时,它的地址是类似::ffff:1.2.3.4这种形式的,脚本中没计算这样的地址,所以需要对脚本做一个略微的改动。
二:
来自http://www.symantec.com/connect/articles/hardening-tcpip-stack-syn-attacks的方法。这里的配置有三个思路:1)增大tcp的等待队列长度,使之能容纳更多的SYN_RECV请求。2)减小一个请求在tcp队列中的等待时间,使SYN_RECV这种半连接请求尽快过期以让出地方给那些正常的请求。3)开启tcp_syncookies。关于tcpsyn-cookies,在http://cr.yp.to/syncookies.html有详细介绍。
以上三个思路,在linux中的实现:
1)增大队列长度:
#sysctl-wnet.ipv4.tcp_max_syn_backlog="2048"2)减小等待时间:
改变/proc/sys/net/ipv4/tcp_synack_retries文件中的值。
3)开启syn-cookies:
[root@jcwkyl~]#echo1>/proc/sys/net/ipv4/tcp_syncookies
三:
来自http://dominia.org/djao/limitipconn2.html的一个apache的模块。这个模块叫做mod_limitipconn,用来限定某个Direcotry或者Location的最大连接数。
四:
来自http://bwmod.sourceforge.net/一个apache模块。这个模块叫做mod_bw,用来限制某个virtualhost下的网络带宽,可以限定大文件下载的速率,防止网络带宽被迅速耗尽。
http://blog.csdn.net/jcwKyl/archive/2010/06/20/5681959.aspx