iptables常用的防御功能实例

醉酒当歌 提交于 2020-04-25 13:23:23

一、使用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模块进行地域控制。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!