Iptables-Regeln

From
Revision as of 11:01, 24 November 2025 by 62.91.65.109 (talk) (alle Regeln besitzen ein Target (Ziel))
Jump to: navigation, search

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.


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.