概述
上篇文章介绍了关于iptables防火墙的日志记录,本期文章结合防DDos攻击场景分享iptables防火墙的高级应用——limit参数。
小试牛刀
利用ping测试工具测试iptables防火墙limit参数。
测试步骤:
1、更改iptables防火墙INPUT、FORWORD和OUTPUT对应Chain(链)的默认策略为DROP(参考上期文章);
2、创建含有limit参数的策略并记录日志;
iptables -N ICMP_ACCEPT_LIMIT
iptables -A ICMP_ACCEPT_LIMIT -j LOG --log-prefix "ICMP_ACCEPT_LIMIT_Packet:" --log-level 4
iptables -A ICMP_ACCEPT_LIMIT -j ACCEPT
#创建含有limit参数的策略;
iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 6/m --limit-burst 2 -j ICMP_ACCEPT_LIMIT
iptables -A OUTPUT -p icmp --icmp-type echo-reply -m limit --limit 6/m --limit-burst 2 -j ICMP_ACCEPT_LIMIT
备注:
-m limit: 启用limit扩展;
–limit 6/m; 允许每分钟6个连接;
–limit-burst 2: 只有当连接达到limit-burst值时才启用limit/m限制。
3、更改iptables日志存储文件(参考上期文章);
4、测试PC ping 测试linux系统并查看linux系统的iptables防火墙记录日志。
(1)、测试PC ping 10 个报文至Linux主机(192.168.1.195),如下图所示。
(2)、查看linux主机iptables防火墙日志记录文件,如下图所示。
22:36:42和22:36:43,linux主机收到测试PC的ICMP请求报文;
22:36:54和22:37:05,linux主机收到测试PC的ICMP请求报文;
22:36:43-22:36:54之间相差10秒;
22:36:54-22:37:05之间相差10秒;
WHY?
22:36:42和22:36:43的请求报文数2个,达到了limit-burst值,从而触发了–limit 6/m参数设置(每分钟允许6个连接,即每10秒允许一个连接),因此在测试PC至linux主机的10个ping包过程中,产生了这样的现象。
总结
iptables防火墙limit参数不但可限制ICMP协议,而且可限制TCP的建立,详情可参考上述案例。不足之处,欢迎各位小伙伴留言交流。