
Ich möchte alle fremden Verbindungen zu einem Port protokollieren, nicht unsere IP-Blöcke. Für einen einzelnen Bereich sieht die Regel folgendermaßen aus:
-A INPUT ! -s 10.20.0.0/16 -p tcp -m tcp --dport 8443 -m state --state NEW -j LOG --log-level 1 --log-prefix "New 8443 Connection"
Logischerweise besteht die Idee darin, Verbindungen zum Port nicht zu protokollieren, wenn sie von oder 8443
kommen . Gehe ich das Problem mit der falschen Logik für iptables an? Ist das mit iptables überhaupt möglich?10.20.0.0/16
10.30.0.0/16
Bitte beachten Sie, dass es sich hierbei nur um Beispiel-IP-Bereiche handelt und nicht um die, für die ich keine Protokolleinträge mehr schreiben möchte.
Antwort1
Sie können ein IPset verwenden:
-A INPUT -p tcp -m tcp --dport 8443 -m set ! --match-set OUR_IP4 src -j LOG
Beachten Sie, dass das IPset mit einem separaten Tool verwaltet werden muss (einschließlich Erstellen/Wiederherstellen beim Booten).
Sie können eine Unterkette verwenden:
-A INPUT -p tcp -m tcp --dport 8443 -j FOOSERVICE
-N FOOSERVICE
-A FOOSERVICE -s 10.20.0.0/16 -j RETURN
-A FOOSERVICE -s 10.30.0.0/16 -j RETURN
-A FOOSERVICE -j LOG --log-prefix "New connection to foo: "
-A FOOSERVICE -j RETURN
# optional; subchains always return at the end