
Ich habe eine Centos 7-Maschine mit FirewallD, und net.ipv4.conf.icmp_echo_ignore_all ist auf 0 eingestellt. Ich suche nach Firewall-Konfigurationen, um Ping-Antworten an externe IP-Adressen zu deaktivieren, aber einigen IP-Blöcken (wie 192.168.1.0/24, 10.0.0.0/8 usw.) zu erlauben, Ping-Antworten zu erhalten.
Wie kann ich das machen?
Antwort1
Hier ist eine Lösung mitiptables
[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
So sollte es danach aussehen:
[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 arbeitet, indem es die Regeln, die es hat, in einer gegebenen Kette der Reihe nach von oben nach unten auswertet. In diesem Fall ist es die INPUT-Kette. Wenn iptables eine Regel findet, die seinen Bedingungen entspricht, führt es die in angegebene Aktion aus -j
.
In diesem Beispiel geben wir also an, dass die Aktion ist, wenn die Quelle von 10.0.0.0/8 oder 192.168.0.0/16 ist ACCEPT
. Wenn die Quelladresse nicht in diesem Bereich liegt, trifft sie die dritte Regel, die besagt, dass DROP
.
Hinweis: Sie müssen außerdem sicherstellen, dass Sie derzeit keine Regeln haben, die den gesamten ICMP-Verkehr akzeptieren, der vor diesen Regeln liegt.
Das -A INPUT
bedeutet, dass an die INPUT
Kette angehängt werden soll. Sie möchten also zunächst die gesamte Eingabekette auflisten und alle anderen ICMP-Regeln löschen, die dort vorhanden sind.
So listen Sie die INPUT-Kettenregeln auf:
iptables -v -n -L INPUT
Bitte lassen Sie mich wissen, ob dies für Sie in Ordnung ist oder ob Sie weitere Fragen haben.