在 CentOS 7 防火墙上禁用 ICMP 回复,但某些 IP 块除外

在 CentOS 7 防火墙上禁用 ICMP 回复,但某些 IP 块除外

我有一台装有 FirewallD 的 Centos 7 机器,并且 net.ipv4.conf.icmp_echo_ignore_all 设置为 0。我正在寻找一些防火墙配置来禁用对外部 IP 地址的 ping 回复,但允许某些 IP 块(如 192.168.1.0/24、10.0.0.0/8 等)获取 ping 回复。

我怎样才能做到这一点?

答案1

这是一个解决方案iptables

[root@ttucker ~]# iptables -A INPUT -m iprange --src-range 192.168.0.0-192.168.255.255 -p ICMP --icmp-type 8 -j ACCEPT
[root@ttucker ~]# iptables -A INPUT -m iprange --src-range 10.0.0.0-10.255.255.255 -p ICMP --icmp-type 8 -j ACCEPT
[root@ttucker ~]# iptables -A INPUT -p ICMP --icmp-type 8 -j DROP

之后的样子应该是这样的:

[root@ttucker ~]# iptables -v -n -L INPUT | grep icmp
    0     0 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0            source IP range 192.168.0.0-192.168.255.255 icmptype 8
    0     0 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0            source IP range 10.0.0.0-10.255.255.255 icmptype 8
    0     0 DROP       icmp --  *      *       0.0.0.0/0            0.0.0.0/0            icmptype 8

Iptables 的工作方式是按照给定链上从上到下的顺序评估其拥有的规则。在本例中,它是 INPUT 链。当 iptables 找到与其条件匹配的规则时,它会采取 中指定的操作-j

因此,在这个例子中,我们规定如果源来自 10.0.0.0/8 或 192.168.0.0/16,则操作为ACCEPT。如果源地址不在该范围内,则它会触发第三条规则,该规则规定DROP

注意:您还需要确保当前没有任何当前规则接受先于这些规则的所有 ICMP 流量。

-A INPUT附加到链中的方法。INPUT因此,您首先要列出整个输入链,并删除其中存在的任何其他 ICMP 规则。

以下是列出 INPUT 链规则的方法:

iptables -v -n -L INPUT

如果这对您有用或者您有任何其他问题,请告诉我。

相关内容