海运的博客

用iptables自动封连接数较大的IP防CC

发布时间:April 14, 2012 // 分类:Shell,网络安全 // No Comments

此方法用于被动统计IP连接数,对连接数较大的IP用iptables封掉,如需主动限制,可参考通过iptables限制ip连接数防CC
Shell脚本如下:

#!/bin/bash
#Created by https://www.haiyun.me
num=100 #上限
list=`netstat -an |grep ^tcp.*:80|egrep -v 'LISTEN|127.0.0.1'|awk -F"[ ]+|[:]" '{print $6}'|sort|uniq -c|sort -rn|awk '{if ($1>$num){print $2}}'`
for i in $list
do
      iptables -I INPUT -s $i --dport 80 -j DROP
done

加入crontab计划任务

crontab -e
*/5 * * * * sh /path/file.sh #5分钟执行一次

Iptables限制同一IP连接数防CC/DDOS

发布时间:March 24, 2012 // 分类:网络安全 // No Comments

1.限制与80端口连接的IP最大连接数为10,可自定义修改。

iptables -I INPUT -p tcp --dport 80 -m connlimit --connlimit-above 10 -j DROP

2.使用recent模块限制同IP时间内新请求连接数,recent更多功能请参考:Iptables模块recent应用

iptables -A INPUT -p tcp --dport 80 --syn -m recent --name webpool --rcheck --seconds 60 --hitcount 10 -j LOG --log-prefix 'DDOS:' --log-ip-options
#60秒10个新连接,超过记录日志。
iptables -A INPUT -p tcp --dport 80 --syn -m recent --name webpool --rcheck --seconds 60 --hitcount 10 -j DROP
#60秒10个新连接,超过丢弃数据包。
iptables -A INPUT -p tcp --dport 80 --syn -m recent --name webpool --set -j ACCEPT
#范围内允许通过。

Centos/Linux服务器防火墙/iptables简单设置。

发布时间:February 29, 2012 // 分类:Iptables // No Comments

#/bin/bash
sshport=`netstat -lnp|awk -F"[ ]+|[:]" '/sshd/{print$5}'`
iptables -F #清除自带规则
iptables -X
iptables -P INPUT DROP #进入本机数据包默认拒绝
iptables -P OUTPUT ACCEPT #本起外出数据包允许
iptables -A INPUT -i lo -j ACCEPT #允许本地环回
iptables -A INPUT -m state --state INVALID  -j LOG --log-prefix "INVALID" --log-ip-options
#记录无效的数据包并丢弃
iptables -A INPUT -m state --state INVALID  -j  DROP
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT 
#允许已建立连接与出相关的数据包进入
iptables -A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT 
#允许目标端口为80的新连接进入
iptables -A INPUT -m state --state NEW -p tcp --dport $sshdport -j ACCEPT
#允许目标端口为22的新连接进入
iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 5/s --limit-burst 20 -j ACCEPT 
#允许ping回应,每秒5个,最多20个。
service iptables save #保存规则

注意:勿一条条执行,最好保存为脚本并运行,避免将自己关外面,也可设置定时任务5分钟后关闭Iptables防火墙,防止万一。

分类
最新文章
最近回复
  • chainofhonor: 感谢,用dnsmasq设置自动判断BIOS和UEFI成功了
  • 海运: 不好意思,这个是很多年前的,现在也许已经不适用,我现在也不用多线了。
  • CQ: -m state --state NEW 替换成-m conntrack --ctstate NEW
  • CQ: 你好,我入站已经成功分流,但是不知道出站怎么设置,PREROUTING替换成POSTROUTI...
  • K: 好的,谢谢,我去试试!
  • 海运: 可以试试3proxy
  • daha: PHP的怎么使用???
  • 海运: 换回了5.3内核,5.8用5.3 dtb虽然能开机且负载正常,但也有其它问题,不建议使用。
  • shangyatsen: 后面的内核高精度计时器的问题使用5.4或者5.3的dtb会正常吗?我也发现有这个日志出现。感觉...
  • 海运: 缺少相应模块?