iptables löscht alle eingehenden ICMP-Anforderungen mit Ausnahme einer IP

7

Derzeit habe ich so etwas wie:

iptables -A INPUT -p ICMP --icmp-type 8 -j DROP
iptables -A INPUT -s x.x.x.x -p ICMP --icmp-type 8 -j ACCEPT

Wenn ich jedoch den zweiten Befehl ausführe, sieht es so aus, als würde iptables einfach angehalten. Ich muss ausbrechen, um zum Terminal zurückzukehren. Vielleicht mache ich alles falsch, aber ein Einblick wäre hilfreich.

Quadrat
quelle
1
Sie müssen es auch umdrehen, damit das AKZEPT zuerst angezeigt wird, oder -Azu-I
Patrick
@Patrick Wenn ich das mache, scheint es, als würde es am Anfang beendet und schreibt die Regel nicht.
Square
2
Ihre erste Regel muss die letzte sein, wenn Sie iptables -L -nvsich die Zähler ansehen und überprüfen, wenn Sie Ihre Regeln testen. Sie werden feststellen, dass es wahrscheinlich inkrementell ist, die Pakete zu verwerfen, ohne Ihre andere Regel zu erreichen.
Xenoterracide

Antworten:

9

Sie müssen Ihre Regeln in umgekehrter Reihenfolge ausführen. Iptables reagiert empfindlich auf die Reihenfolge, in der Befehle ausgeführt wurden. Wenn eine Regel übereinstimmt, werden keine weiteren Regeln überprüft, sondern nur diese eingehalten. Wenn Sie den Drop zuerst festlegen, wird die Akzeptanzregel niemals getestet. Wenn Sie die spezifische Akzeptanz mit der Quell-IP festlegen und dann die allgemeinere Richtlinie zum Löschen festlegen, wirkt sich dies auf das erwartete Verhalten aus.

iptables -A INPUT -s x.x.x.x -p ICMP --icmp-type 8 -j ACCEPT
iptables -A INPUT -p ICMP --icmp-type 8 -j DROP

Sind Sie sicher, dass Sie eine gültige IP-Adresse eingegeben haben? Vielleicht können Sie diesem Befehl ein Präfix voranstellen, um strace iptables …zu sehen, was er tut, während er zu hängen scheint.

Caleb
quelle
Danke für die tolle Erklärung. Sieht so aus, als ob dies auch mit einem anderen Regelsatz passiert ist und es hängen geblieben ist!
Square
3

Lassen Sie ICMP nicht ohne weiteres fallen! Sicher, einige der ICMP-Anfragen sind gefährlich, aber der Rest ist unbedingt erforderlich, damit das Netzwerk funktioniert (denken Sie an "Ziel nicht erreichbar" und diesen Zoo).

vonbrand
quelle
ICMP ist nicht erforderlich, damit ein Netzwerk funktioniert.
Natalie Adams
1
Die ICMP-Filterung unterbricht die MTU-Entdeckung. Viel Glück beim Versuch, Jumbo-Frames zu verwenden, ohne dass ICMP funktioniert.
Stefan Skoglund
-2

Sie müssen eine Regel hinzufügen wie:

$ iptables -A INPUT -s x.x.x.x -p icmp --icmp-type echo-reply -j ACCEPT
Luciano Facchinelli
quelle
Ich habe es gerade versucht, und es hat das Gleiche getan - ohne Erfolg.
Square
Sie führen diesen Befehl in dieser Reihenfolge aus? Regeln in iptables werden, soweit es mich betrifft, von unten nach oben ausgeführt
Luciano Facchinelli
Dies ist nur eine alternative Syntax für die Regel, die das OP bereits ausgeführt hat.
Caleb