Im ersten Teil dieser Serie habe ich erklärt, was iptables-persistent
ist und worin sich iptables
von UFW unterscheidet. Nun geht es darum, wie man eigene Regeln erstellt und speichert – Schritt für Schritt.
Was passiert eigentlich bei iptables?
iptables
ist ein Werkzeug zur Paketfilterung. Es entscheidet, welche Netzwerkpakete erlaubt oder blockiert werden. Dazu werden sogenannte Tabellen und Ketten verwendet.
Die wichtigsten Ketten:
-
INPUT: Hier landen alle eingehenden Pakete, also Verbindungen von außen zum Rechner.
-
OUTPUT: Diese Kette betrifft Pakete, die vom System selbst ausgehen.
-
FORWARD: Diese Kette ist relevant, wenn das System als Router fungiert und Pakete weiterleitet – zum Beispiel bei einem Heimrouter.
Beispiel: INPUT
Wenn jemand per SSH auf deinen Server zugreift, kommt das Paket über die INPUT-Kette.
Beispiel: OUTPUT
Wenn dein Rechner ein Update-Repository kontaktiert, verlässt das Paket dein System über OUTPUT.
Beispiel: FORWARD
Ein klassischer Router empfängt ein Paket über ein Interface und leitet es über ein anderes weiter – das ist FORWARD.
Standard-Policy: DROP oder ACCEPT?
Mit einer sogenannten Policy legst du fest, was mit Paketen passiert, für die es keine explizite Regel gibt.
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
Das bedeutet:
-
Alles Eingehende und Weitergeleitete wird standardmäßig blockiert
-
Ausgehende Verbindungen sind erlaubt
So schützt du deinen Rechner effektiv vor unerwünschtem Zugriff von außen.
Verbindungen gezielt erlauben mit conntrack
Eine wichtige Technik ist das Zulassen von bestehenden Verbindungen. Sonst würde selbst eine Antwort auf einen Download blockiert.
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
Hier passiert Folgendes:
-
-m conntrack
: verwendet das conntrack-Modul, um Verbindungszustände zu prüfen -
--ctstate ESTABLISHED,RELATED
: erlaubt Pakete, die zu einer bestehenden Verbindung gehören oder damit in Zusammenhang stehen (z. B. Datenkanäle bei FTP)
Das ist essenziell, um z. B. Webseiten aufrufen zu können oder Dateien herunterzuladen.
Regeln speichern mit iptables-persistent
Sobald alles funktioniert, speichert man die Regeln dauerhaft:
iptables-save > /etc/iptables/rules.v4
ip6tables-save > /etc/iptables/rules.v6
Beim nächsten Systemstart werden diese automatisch geladen – vorausgesetzt, iptables-persistent
ist installiert:
sudo apt install iptables-persistent
Zum Neuladen der Regeln nach einer Änderung genügt:
sudo netfilter-persistent reload
Fazit
Wer sich mit den Grundkonzepten von iptables
vertraut macht, kann sein System sehr flexibel absichern. iptables-persistent
sorgt dafür, dass diese Konfiguration auch nach einem Neustart bestehen bleibt.
In der kommenden Folge gehe ich auf die Gefahren hin, die entstehen können, wenn iptables zum Einsatz kommt.
Macht es nicht Sinn, den Fokus auf nftables zu legen?
iptables ist nur noch fallback halber in vielen distris und dienen als wrapper für nftables.
nftables ist das moderne System dbzgl.
iptables sind viel behandelt worden im Netz, auch für Anfänger.
nftbales für Anfänger aber wesentlich weniger. Oder gar das Zusammenspiel von nftables und fail2ban mit automatisch chains :)
Das war mehr oder weniger ein Versehen. Soweit ich weiß, schaut sich der Autor mittlerweile nftables an.
Hallo, vielen Dank für den Kommentar. Konnte den Artikel nicht löschen da ich keine Zeit hatte.
Werde noch was schreiben zu noftables
Hallo,
ja, es macht mehr Sinn, über nftables zu schreiben. War aber leider etwas zu sehr mit meinem eigentlichen Beruf beschäftigt und es nicht geschafft, den Artikel zu löschen.
Eine Richtigstellung wird von mir heute um 10 Uhr veröffentlicht.
Bei aktuellen Distributionen wird das iptables Verhalten nur noch emuliert da dort schon der Nachfolger netfilter im Einsatz ist. Geht noch aber nicht mehr native
Hi und danke für den Kommentar.
Ich beschäftige mich aktuell mit Nftables und werde darüber etwas schreiben. Ein Korrekturartikel wird heute Morgen veröffentlicht.