通过iptables限制并发连接数20130515


前期通过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    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值