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