iptables常用的防御功能实例

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

结果图:

image

效果图:

sudo tail -f /var/log/messages

image

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

效果图:

image

三、使用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"

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

image

当然,还可以配合geoip模块进行地域控制。

posted @ 2013-07-22 13:48  higkoo  阅读(568)  评论(0编辑  收藏  举报