Wie kann ich einen bestimmten Satz von iptables-Regeln permanent machen?

42

Gibt es eine "Best Practice" oder einen Standard, um ein paar Iptables-Regeln dauerhaft zu machen? Ich meine: automatisch beim Neustart des Systems angewendet?

Ich benutze einen VPS mit Ubuntu Server 10.04 LTS (Lucid Lynx).

Danke.

BIG EDIT: Ich möchte nicht, dass eine Regel beibehalten wird (wie dies beim iptables-persistentPaket der Fall ist). Ich möchte, dass nur mein eigener Satz neu geladen wird. Wenn durch Ausführen von iptables irgendwann andere Regeln hinzugefügt werden, sollten diese verworfen werden.

J. Bruni
quelle

Antworten:

52

Die einfachste Methode ist die Verwendung von iptables-save und iptables-restore , um die derzeit definierten iptables-Regeln in einer Datei zu speichern und (neu) zu laden (z. B. beim Neustart).

So würden Sie zum Beispiel rennen

sudo iptables-save | sudo tee /etc/iptables.conf

Speichern Sie Ihre aktuellen iptables-Regeln /etc/iptables.confund fügen Sie diese Zeilen ein in /etc/rc.local:

# Load iptables rules from this file
iptables-restore < /etc/iptables.conf
Riccardo Murri
quelle
3
+1 Ihre Antwort ist perfekt auf meine ursprüngliche Frage. Außerdem wurde mir klar, was ich wirklich will, und ich musste die Frage von "Wie kann ich iptables-Regeln dauerhaft festlegen?" Ändern. zu "Wie kann ich einen bestimmten Satz von iptables-Regeln permanent machen?"
J. Bruni
Wenn Sie können, nehmen Sie bitte eine kleine Änderung an Ihrer Antwort vor, um die Änderung in der Frage widerzuspiegeln ... Ich werde sie gerne annehmen! Ich muss es iptables-saveeinmal verwenden und immer neu laden (iptables-restore unter /etc/rc.local klingt gut).
J. Bruni
1
Wenn Sie permission deniedversuchen, Stack Overflow zu verwenden, >ist diese Antwort hilfreich.
David Tuite
2
Verwenden Sie sudo sh -c "iptables-save > /etc/iptables.conf"anstelle vonsudo iptables-save > /etc/iptables.conf
Rajat Gupta
31

Ein schnelles Update, da Sie möglicherweise 12.04 verwenden und die Dinge besser laufen.

Das iptables-persistentPaket löst nun dieses Problem. Installieren,

sudo apt-get install iptables-persistent

Die bei der Installation des Pakets definierten Regeln werden gespeichert und bei jedem weiteren Start verwendet. Neue geladene Regeln werden beim Neustart verworfen.

Die Konfigurationsdatei, wenn Sie sie ändern müssen (sobald sie iptables-persistentinstalliert ist), ist /etc/iptables/rules.v4bzw. /etc/iptables/rules.v6für ipv4- und ipv6-iptables.

user172020
quelle
Wenn Sie eine Änderung an vornehmen /etc/iptables/rules.v4, wie wird sie [offiziell] angewendet? Derzeit mache ichsudo iptables-restore < /etc/iptables/rules.v4
Bruno Bronosky
24

Besser /etc/rc.localist es, /etc/network/interfacesnach dem Speichern der Iptable-Regeln eine Zeile hinzuzufügen

post-up iptables-restore < /etc/iptables.up.rules

oder es ist das gleiche, um die Datei in /etc/network/if-down.d/oder /etc/network/if-post-down.d/oder /etc/network/if-pre-up.d/oder zu setzen /etc/network/if-up.d/.

Kreker
quelle
1
@Kreker: bitte klären Sie, wie Ihr Ansatz besser ist, als ein Wiederherstellungsskript auszuführen rc.local? funktioniert der andere Ansatz in einigen Fällen nicht?
Rajat Gupta
2
Wenn Sie es zur Netzwerkkonfiguration hinzufügen, wird es neu geladen, nachdem Sie den Befehl "service networking restart" ausgeführt haben. Es ist nicht auf Systemstarts beschränkt.
K. Darien Freeheart
4
Warum sollte man iptables-restore nach dem Hochfahren ausführen, wenn eine Schnittstelle ausfällt?
Alphadogg