Iptables-Regeln
Revision as of 11:08, 24 November 2025 by 62.91.65.109 (talk) (→Kommandozeilenparameter von iptables)
Contents
Iptables-Grundlagen
Chains
PREROUTING – Pakete, die in Empfang genommen wurden
INPUT – eingehende Pakete, bevor sie an die Empfängeranwendung ausgeliefert werden
OUTPUT – ausgehende Pakete, die soeben von einer Netzwerkanwendung erzeugt wurden
POSTROUTING – Pakete, die gerade über die Netzwerkschnittstelle gesendet werden sollen
FORWARD – Pakete, die nicht für den lokalen Rechner bestimmt sind, sondern die dieser per
IP-Forwarding (Routing) weiterleitet
Tabellen
nat – ermöglicht die Änderung von IP-Adressen und/oder Ports
Die zulässigen Chains sind OUTPUT, POSTROUTING und PREROUTING.
filter – Diese Tabelle bestimmt die Regeln für erlaubte und verbotene Datenpakete.
Die zulässigen Chains sind INPUT, OUTPUT und FORWARD
mangle – Über diese Tabelle können Sie Datenpaket-Header beliebig modifizieren.
Sie kann mit allen fünf Chains zusammenarbeiten.
alle Regeln besitzen ein Target (Ziel)
ACCEPT – Das Datenpaket wird akzeptiert, also an den nächsten Verarbeitungsschritt weitergereicht
DROP – Das Paket wird ersatzlos verworfen.
REJECT – Dieses Target verwirft auch das Paket, versendet aber zusätzlich eine Ablehnungsmitteilung an den Absender.
QUEUE – Das Paket wird aus dem Kernel in den Userspace weitergereicht,
wo es von einer spezialisierten Anwendung weiterverarbeitet werden kann.
RETURN – Das Paket wird in der ursprünglichen, aufrufenden Chain weiterverarbeitet;
dieses Target entspricht einem Rücksprung aus einem Unterprogramm und eignet sich
somit für benutzerdefinierte Regeln, die an bestimmten Stellen eingeschoben werden.
Kommandozeilenparameter von iptables
-t table oder --table table – Auswahl der Tabelle. -t filter verwendet zum Beispiel die Tabelle filter.
-A chain oder --append chain – Die Regel wird an die angegebene Chain angehängt. -A PREROUTING.
-I chain [Regelnummer] oder --insert chain [Regelnummer] – fügt eine neue Regel vor der angegebenen ein oder
an den Anfang der Chain, wenn keine Nummer angegeben wird.
-R chain Regelnummer oder --replace chain Regelnummer – ersetzt die angegebene Regel
durch die mitgelieferte neue Regel.
-D chain Regelnummer oder --delete chain Regelnummer – löscht die Regel mit der betreffenden Nummer aus der Chain.
-j Target – Hier wird das Target angegeben, entweder eines der zuvor genannten Standard-
ziele oder ein benutzerdefiniertes. -j DROP beispielsweise verwirft die betreffenden Pakete
-s [!]Quelladresse[/Maske], alternativ --src oder --source – Quelladresse oder Quelladressbereich eines Pakets.
Ein Ausrufezeichen steht für alle Pakete, die nicht aus der angegebenen Quelle stammen.
-s 192.168.1.0/24 legt zum Beispiel eine Regel für Pakete fest, die aus dem angegebenen Netz stammen;
-s !192.168.1.0/24 gilt dagegen für alle Pakete außer denjenigen aus dem benannten Netz.
-d [!]Zieladresse[/Maske], alternativ --dst oder --destination – Regeln für Datenpakete
mit einer bestimmten Zieladresse oder einem Zieladressbereich.
Ein Ausrufezeichen negiert die Angabe auch bei dieser Option.
-d 192.168.1.18 gilt beispielsweise für alle Pakete,die an diese IP-Adresse gesendet werden sollen.
-p [!]Protokoll oder --protocol [!]Protokoll – Regeln für Pakete, die das angegebene Transportprotokoll verwenden
beziehungsweise (mit Ausrufezeichen) nicht verwenden.
Zulässig sind alle Werte aus der Datei /etc/protocols, entweder numerisch oder anhand ihres Namens.
Wichtige Protokolle sind zum Beispiel tcp, udp und icmp (ping).
--source-port Portnummer oder --sport Portnummer – Quellport (TCP) oder Quell-Dienstnummer (UDP) von Paketen,
Beispiel --sport 25 oder --sport smtp für Pakete, die von einem SMTP-Server stammen
Iptables-Regeln
Iptables installieren
apt-get update apt-get install iptables
Iptables anzeigen
iptables -L -v
Iptables erstellen
iptables -A <chain> -i <interface> -p <protocol (tcp/udp) > -s <source> --dport <port no> -j <target>
Bsp. für ssh und http(s)
iptables -A INPUT -p tcp --dport 22 -j ACCEPT iptables -A INPUT -p tcp --dport 80 -j ACCEPT iptables -A INPUT -p tcp --dport 443 -j ACCEPT iptables -P INPUT DROP
Etablierte Verbindungen zulassen
iptables -A INPUT -i $WAN -m state --state ESTABLISHED,RELATED -j ACCEPT
$WAN muss durch die Bezeichnung der NIC ersetzt werden.
Dabei kann mit der Option --state folgende, meist genutzte Möglichkeiten eingestellt werden:
NEW - Das Datenpaket ist dem Server neu, in der Regel durch eine neue Verbindung.
ESTABLISHED - Das Datenpaket ist beim Server bereits ein- und ausgegangen.
RELATED - Das Datenpaket hat eine neue Verbindung gestartet, ist aber in einer bestehenden Verbindung involviert,
z. B. eine FTP-Datenübertragung oder ein ICMP-Fehler.
Pakete anhand der Source-Adresse filtern
iptables -A INPUT -s 10.10.10.1 -j DROP hier kann auch mit Ranges gearbeitet werden: iptables -A INPUT -m iprange --src-range 10.10.10.1-10.10.10.255 -j DROP
Regeln löschen
Alle Regeln löschen iptables -F Einzelne spezifische Regeln werden mit der Option -D gelöscht. Dabei muss zunächst die Nummer der Regel herausgefunden werden: iptables -L --line-numbers Anschließend kann eine spezielle Regel gelöscht werden: iptables -D INPUT 3
Regeln persistent Speichern
Um Regeln persistent zu halten, muss das Tool: Iptables-persistent installiert werden. Dieses sorgt dafür, dass gespeicherte Regeln bei einem Neustart geladen werden. apt-get install iptables-persistent Die Regeln werden in folgenden Dateien gespeichert. Es wird zwischen IPv4 und IPv6 differenziert: /etc/iptables/rules.v4 /etc/iptables/rules.v6 Um die aktuell geltenden Regeln zu speichern, muss folgender Befehl genutzt werden: iptables-save > /etc/iptables/rules.v4 ### oder ip6tables-save > /etc/iptables/rules.v6 Bei einem Neustart werden somit die Regeln automatisch geladen.