一、使用connlimit模块,控制并发访问(CC / DOS)量:
iptables -I INPUT -p tcp --dport 80 -m connlimit --connlimit-above 10 -j LOG --log-prefix "WEB Attack"
示例配置如下:
*filter
-A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 10 -j LOG --log-prefix "WEB Attack"
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
结果图:
效果图:
sudo tail -f /var/log/messages
二、使用limit模块,限制连接建立(DDOS/ SYN)频率,示例:
*filter
-P INPUT DROP
-A INPUT -j SYN-FLOOD
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A SYN-FLOOD -m limit --limit 100/sec --limit-burst 300 -j RETURN
-A SYN-FLOOD -j DROP
COMMIT
效果图:
*filter
-P INPUT DROP
-A INPUT -p tcp --dport 80 -m state --state NEW -m recent --set --name HTTP
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp --dport 7722 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -p tcp --dport 80 -m state --state NEW -m recent --update --seconds 300 --hitcount 10 --name HTTP -j LOG --log-prefix "HTTP Attack"
本例只打印日志,效果和并发控制相同。结果示例:
当然,还可以配合geoip模块进行地域控制。
来源:oschina
链接:https://my.oschina.net/u/1245193/blog/151045