动态黑名单:

动态黑名单:

如果数据包数大于每秒 2 个(测试时数据包数减少),我尝试阻止来自服务器的 icmp ping。我分别尝试了这 2 条规则,但似乎没有帮助:

iptables -A INPUT -p icmp --icmp-type echo-request -m recent --update --seconds 1 --hitcount 2 -j DROP

iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT --match limit --limit 2/s --limit-burst 2

这些规则有什么问题?

我正在使用以下命令从另一台服务器 ping,但 ping 继续得到回复 -

ping -n -i 0.2 192.168.2.86

另外,当我检查 iptables -nvL 输出时 - 规则的数据包数量并没有增加......

使用的机器是 centos 6.8

一些进展:我在表末尾添加了一个默认删除规则:

iptables -A INPUT -p icmp -m icmp -j DROP

然后添加此规则会丢弃超出限制的 ping

iptables -A INPUT -p icmp -m icmp --icmp-type 8 -m limit --limit 2/second -j ACCEPT -m comment --comment "icmprule1"

仍然无法完全阻止服务器。

答案1

下面开始,添加辅助 ICMPSCAN 链(并将跳转规则放在 INPUT 链的第一位):

iptables -N ICMPSCAN
iptables -I INPUT -p icmp -m icmp --icmp-type echo-request -j ICMPSCAN 
iptables -A ICMPSCAN -m recent --set --name badicmp --rsource 
iptables -A ICMPSCAN -m recent --update --seconds 1 --hitcount 2 --name badicmp --rsource -j DROP

注意:可以在 INPUT 中设置设置/更新规则,而无需辅助规则,但我更喜欢将这些规则放在不同的链中。

注2:可以在--set之后添加附加规则来记录事件......

动态黑名单:

现在,要根据最近的命中次数触发器添加永久的动态黑名单,我们可以利用 ipset 功能。ipset 适用于 centos 6.x ,并且 iptables 支持 ipset,但您可能需要先安装它。

以下是符合您需求的 iptables/ipset 规则:

iptables -F ICMPSCAN
iptables -N ICMPSCAN
ipset -N banned_hosts iphash
iptables -I INPUT -p icmp -m icmp --icmp-type echo-request -j ICMPSCAN 
iptables -A ICMPSCAN -m recent --set --name badicmp --rsource 
iptables -A ICMPSCAN -m recent --update --seconds 1 --hitcount 2 --name badicmp --rsource -j SET --add-set banned_hosts src
iptables -A ICMPSCAN -m set --set banned_hosts src -j DROP

您可以使用 ipset 列表列出当前禁止列表的内容,例如:

# ipset list banned_hosts
Name: banned_hosts
Type: hash:ip
Header: family inet hashsize 1024 maxelem 65536
Size in memory: 8284
References: 2
Members:
192.168.122.1

并管理设置列表,例如删除一个 IP 地址,如:

# ipset del banned_hosts 192.168.122.1

另请参阅此页面:http://www.linuxjournal.com/content/advanced-firewall-configurations-ipset

相关内容