Ich habe ein seltsames Problem mit meiner iptables-Firewall: Wenn ich zwei aufeinanderfolgende identische Regeln einstelle, die erste ist ACCEPT
und die zweite ist DENY
, wird das eingehende Paket abgelehnt (und als solches protokolliert).
Wie ist es möglich, dass das eingehende Paket von der ersten Regel ignoriert und von der zweiten abgefangen wird?
Die fwbuilder-Ansicht ist hier:
Hier ist der iptables
Dump:
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
In_RULE_0 all -- 0.0.0.0/0 0.0.0.0/0 state NEW
In_RULE_1 all -- 0.0.0.0/0 0.0.0.0/0
Chain FORWARD (policy DROP)
target prot opt source destination
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
In_RULE_0 all -- 0.0.0.0/0 0.0.0.0/0 state NEW
In_RULE_1 all -- 0.0.0.0/0 0.0.0.0/0
Chain OUTPUT (policy DROP)
target prot opt source destination
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
Chain In_RULE_0 (2 references)
target prot opt source destination
LOG all -- 0.0.0.0/0 0.0.0.0/0 LOG flags 0 level 6 prefix "FW RULE 0 -- ACCEPT "
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
Chain In_RULE_1 (2 references)
target prot opt source destination
LOG all -- 0.0.0.0/0 0.0.0.0/0 LOG flags 0 level 6 prefix "FW RULE 1 -- DENY "
DROP all -- 0.0.0.0/0 0.0.0.0/0
Ich habe es auch ACCEPT
nur mit der Regel versucht, aber es funktioniert nicht.
Der einzige Unterschied besteht für mich darin, dass die DENY
Regel nicht lautet state NEW
. Aber für die Dutzenden von Firewalls, die ich bereits konfiguriert habe und die einwandfrei funktionieren, ist das Gleiche.
Antwort1
Sie müssen Folgendes wissen: Eine Regel mit der -I
Option „iptables“ setzt eine Regel an den ANFANG der Liste. Eine Regel mit der -A
Option setzt eine Regel an das Ende der Liste.
In Ihrem Fall: Ich denke, Sie haben möglicherweise in beiden (fast identischen) iptables-Regeln "-I" verwendet, die zweite Regel wird am Anfang der Liste vor der ersten Regel eingefügt und daher haben Sie eine Regelliste mit den Regeln in der folgenden Reihenfolge erstellt:
match -s x.x.x.x action DROP
match -s x.x.x.x action ACCEPT
Da Ihr Paket beiden Regeln entspricht, DROP
wird die erste () in der Reihenfolge der tatsächlichen Betriebstabelle (die sich im RAM befindet) wirksam. Die Reihenfolge hat nichts mit der Reihenfolge in Ihrer iptable-Konfigurationsdatei zu tun.
Wenn Sie die Reihenfolge vertauschen, ist das Ergebnis anders.
Antwort2
OK, ich habe es gefunden. Es stellte sich heraus, dass meine FW vollkommen in Ordnung war, aber der virtuelle Host falsch konfiguriert war. Ich hatte keinen Fehler, aber iptables war nicht erlaubt. Als ich es erlaubte, wurde die FW betriebsbereit ... Kein Wunder, dass wir den Fehler auf der iptables-Ebene nicht finden konnten ... Danke für all die Hilfe :)
Antwort3
Ihre iptables In_RULE_0
gelten nur für NEUE Verbindungen, wenn Sie verwenden state NEW
.
Es wird auch auf Ihre FORWARD-Kette (Pakete durch den Server) eingestellt, nicht auf Ihre INPUT-Kette (Pakete an den Server).
Wie testen Sie? Pingen Sie eine bestimmte Schnittstelle des Servers an?
Können Sie die vollständige Ausgabe von: posten?
iptables -vnL
Versuchen Sie die folgende Regel, um den Verkehr in der INPUT-Kette zu protokollieren (Pings an die Serverschnittstelle)
iptables -I INPUT 1 -j In_RULE_0