iptables常用的防御功能实例

作者:linux120 发布时间:October 18, 2014 分类:服务器配置

一、使用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

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

三、使用recent模块,控制访问频率,示例:

*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"

本例只打印日志,效果和并发控制相同。