Ich habe derzeit meine OUTPUT-Kette auf DROP eingestellt. Ich möchte es in REJECT ändern, damit ich den Hinweis habe, dass es meine Firewall ist, die mich daran hindert, irgendwohin zu gelangen, anstatt ein Problem mit dem Dienst zu haben, auf den ich zugreifen möchte (sofortige Ablehnung statt Zeitüberschreitung). Iptables scheint dies jedoch nicht zu interessieren. Wenn ich meine gespeicherte Regeldatei manuell bearbeite und versuche, sie wiederherzustellen, wird iptables-restore v1.4.15: Can't set policy 'REJECT' on 'OUTPUT' line 22: Bad policy name
sie angezeigt und das Laden der Regeln wird verweigert. Wenn ich versuche, dies manuell einzustellen ( iptables -P OUTPUT REJECT
), erhalte ich, iptables: Bad policy name. Run 'dmesg' for more information.
aber es gibt keine Ausgabe in dmesg.
Ich habe bestätigt, dass die entsprechende Regel im Kernel kompiliert wurde, und habe neu gestartet, um sicherzustellen, dass sie geladen ist:
# CONFIG_IP_NF_MATCH_TTL is not set
CONFIG_IP_NF_FILTER=y
***
CONFIG_IP_NF_TARGET_REJECT=y
***
CONFIG_IP_NF_TARGET_LOG=y
CONFIG_IP_NF_TARGET_ULOG=y
(Sternchen hinzugefügt, um die zutreffende Regel hervorzuheben)
Alles, was ich finden kann, besagt, dass REJECT (im Allgemeinen) eine gültige Richtlinie / ein gültiges Ziel ist, aber ich kann nichts finden, das besagt, dass es für die Ketten INPUT, FORWARD oder OUTPUT nicht gültig ist. Mein Google-Fu hilft nicht. Ich bin auf Gentoo, wenn das einen Unterschied macht. Hat hier jemand einen Einblick?
quelle
iptables
fraglichen Regeln anzeigen?Antworten:
REJECT
ist eine Zielerweiterung , während eine Kettenrichtlinie ein Ziel sein muss . Die Manpage sagt das (obwohl es nicht wirklich klar ist), aber einiges von dem, was es sagt, ist völlig falsch.Die Richtlinie kann nur
ACCEPT
oderDROP
in integrierten Ketten sein. Wenn Sie alle Pakete ablehnen möchten, die nicht mit den vorherigen Regeln übereinstimmen, stellen Sie einfach sicher, dass die letzte Regel mit allen übereinstimmt, und fügen Sie eine Regel mit einerREJECT
Zielerweiterung hinzu. Mit anderen Worten, nachdem Sie alle relevanten Regeln hinzugefügt haben, tun Sie diesiptables -t filter -A OUTPUT -j REJECT
.Siehe „was sind die mögliche Kettenpolitik“ Gewinde auf der Netfilter - Liste für weitere Details.
quelle
Ich konnte es nicht dokumentiert finden, aber ein Verweis hier zeigt an, dass die einzigen zulässigen Richtlinien ACCEPTor DROP sind. Dies wird bestätigt, indem man sich die Quelle von
libiptc
(die für die Manipulation der Regeln verantwortlich ist) in Zeile 2429 ansieht, in der sich der Code befindetDer ursprüngliche Thread schlägt vor, am besten REJECT am Ende der Kette hinzuzufügen, das sein sollte
iptables -A OUTPUT -j REJECT
.Beachten Sie, dass der Code unmittelbar davor wie folgt lautet:
Sie können die Richtlinie also überhaupt nicht für eine benutzerdefinierte Kette festlegen.
quelle
-p
dient zum Abgleichen eines Protokolls; er meinte-A
wie meine Antwort sagt.REJECT
onOUTPUT
macht keinen Sinn; aREJECT
gibt ein ICMP-Paket zurück, das ein Netzwerk durchlaufen müsste.Fügen Sie
-j LOG
als letzte Regel (daher vor derDROP
Richtlinie) eine neue hinzu, um zu sehen, was in derOUTPUT
Kette so weit kommt.quelle
REJECT
ICMP-Paket nicht auf der lo-Schnittstelle zurückgegeben werden? Ich bin damit einverstanden, dass aLOG
für die Fehlerbehebung nützlich ist, aber ich hatte wirklich gehofft, mich daran zu erinnern, dass "Oh, ja ... das wird wahrscheinlich durch meineDROP
iptables-Standardeinstellung blockiert " anstelle von Fehlerbehebungen für 5 Minuten den Kollegen dazu auffordert Der Zugriff auf den XYZ-Server erkennt, dass er wahrscheinlich lokal ist , was mein häufigster Ansatz ist, da mein typischer Arbeitstag selten Dinge trifft, für die ich noch kein Loch geöffnet habe. Natürlich muss ich das vielleicht besser berücksichtigen, aber eine WohnungREJECT
ist offensichtlicher.ethX
dielo
Schnittstelle aus vielen Gründen Datenverkehr auf der Schnittstelle generiert . Sie sind sehr unabhängig; Sie können leicht Ketten auf die eine und nicht auf die andere anwenden.