Wie können Linux-Kernel-Firewall-Regeln durch eine Version gesteuert werden?

383
Styne666

Unser Router ist CentOS, aber wir verwenden nur iptables, um die Firewall-Regeln des Linux-Kernels zu ändern. Es gibt ein Skript, das der Versionskontrolle unterliegt und alle Ketten / Regeln zurücksetzt. Dabei werden jedoch alle vorhandenen Verbindungen verworfen und im Allgemeinen während der Geschäftszeiten ein Chaos verursacht. Dies bedeutet, dass die übliche Methode zum Ändern der Firewall-Regeln iptables"on-the-fly" verwendet wird. Dies kann dazu führen, dass Änderungen an der Firewall nicht zur Versionskontrolle zurückkehren.

Ich versuche herauszufinden, wie Sie überprüfen können, ob seit einer bestimmten Version des Skripts in Subversion Änderungen an der Firewall vorgenommen wurden.

Die Ausgabe von unterscheidet iptables --listsich ziemlich von einer Zeile im Skript, die normalerweise etwas ähnelt iptables -A chain -j ACCEPT -s 192.168.1.100.

Gibt es eine einfachere / bessere Möglichkeit, die Regeln der Linux-Kernel-Firewall unter Versionskontrolle zu halten?

Ich bin offen für Vorschläge alternativer Tools oder Betriebssysteme, solange sie Open Source und etabliert sind.

0

1 Antwort auf die Frage

0
Styne666

Als ich das fragte, wurde mir klar, dass es iptables-saveund gibt iptables-restore. Ich bin jedoch an diesem Punkt nicht sicher, wie das funktionieren würde. Ich werde per Post als eine Antwort, aber ich denke, die wirkliche Lösung ist ein bisschen komplizierter sein wird.

Man könnte verwenden, iptables-savewelche die aktuell geladenen Ketten nach stdout druckt. Sie können den -tSchalter auch verwenden, um benutzerdefinierte Ketten festzulegen . Sie können also jede Kette einzeln in eine Datei ausgeben und die Version kontrollieren. Ich sehe jedoch keine einfache Möglichkeit, Ketten nacheinander neu zu laden, da das Äquivalent iptables-restorenicht über einen entsprechenden Schalter verfügt ( -tstattdessen test).

Die andere Einschränkung dieser Methode ist mir aufgefallen, dass es keine Möglichkeit gibt, die eingebauten Ketten einzeln zu speichern (dh INPUT, OUTPUT und FORWARD). Die einzige Möglichkeit, diese herauszuholen, besteht darin, den -tSchalter nicht zu verwenden und alles auszugeben.

Es wäre etwas Skripting nötig, um das Ganze in etwas zu packen, das man einfach speichern und neu laden könnte.