У меня есть машина Centos 7 с FirewallD, а net.ipv4.conf.icmp_echo_ignore_all имеет значение 0. Я ищу некоторые конфигурации брандмауэра, чтобы отключить ответы ping на внешние IP-адреса, но разрешить некоторые IP-блоки (например, 192.168.1.0/ 24, 10.0.0.0/8 и т. Д.), Чтобы получать ответы на пинг.
Как я могу это сделать?
Вот решение с 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
Пожалуйста, дайте мне знать, работает ли это для вас или у вас есть дополнительные вопросы.