通过iptables限制并发连接数20130515

来源:互联网 发布:鼎力测试软件下载 编辑:程序博客网 时间:2024/06/05 07:11


前期通过iptables对用户ip的连接数量和发包速率记录log进行统计,后期对用户IP的连接数量和发包速率进行限制,以减轻恶意用户或者CC攻击对服务器资源的过大消耗,保证源站安全;修改系统内核参数增加同时打开SYN半连接的数量,缩短SYN半连接timeout值,已减轻SYN flood对前置机的影响
 
###for security log only
##log tcp connection limit
/sbin/iptables -A INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 150 -j LOG  --log-level 4 --log-prefix "iptables limit connection:"
/sbin/iptables -A INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 150 -j DROP
##log pkgs exceed a limit rate(测试后意义不大)
#/sbin/iptables -A INPUT -p tcp  --dport 80 -m limit --limit 10000/s --limit-burst 3000 -j  LOG  --log-level 4 --log-prefix "iptables limit rate:"


系统默认同时打开SYN半连接的数量为1024,需要调大
# more /proc/sys/net/ipv4/tcp_max_syn_backlog
1024
$ more /proc/sys/net/ipv4/tcp_syn_retries    
5
 
将drop的数据包记录到log
# vim /etc/rsyslog.conf
# for log iptables rules
 :msg, contains, "iptables limit connection"      -/var/log/iptables_conn.log
 :msg, contains, "iptables limit rate"            -/var/log/iptables_rate.log

# /etc/init.d/rsyslog restart

查看log
# tail -f /var/log/iptables_conn.log
May 15 07:22:00 nginx kernel: iptables limit connection:IN=eth1 OUT= MAC=78:2b:cb:74:86:fc:00:30:a3:4c:b8:0a:08:00 SRC=112.95.241.183 DST=1.79.233.105 LEN=60 TOS=0x00 PREC=0x00 TTL=50 ID=34034 DF PROTO=TCP SPT=60936 DPT=80 WINDOW=5840 RES=0x00 SYN URGP=0
May 15 07:22:00 nginx kernel: iptables limit connection:IN=eth1 OUT= MAC=78:2b:cb:74:86:fc:00:30:a3:4c:b8:0a:08:00 SRC=112.95.241.183 DST=1.79.233.105 LEN=60 TOS=0x00 PREC=0x00 TTL=50 ID=50703 DF PROTO=TCP SPT=57970 DPT=80 WINDOW=5840 RES=0x00 SYN URGP=0


查看iptable数据包匹配状态
# iptables -L -vn    

原创粉丝点击