Difference between revisions of "Iptables-Regeln"

From
Jump to: navigation, search
(Tabellen)
(alle Regeln besitzen ein Target (Ziel))
Line 38: Line 38:
 
         dieses Target entspricht einem Rücksprung aus einem Unterprogramm und eignet sich  
 
         dieses Target entspricht einem Rücksprung aus einem Unterprogramm und eignet sich  
 
         somit für benutzerdefinierte Regeln, die an bestimmten Stellen eingeschoben werden.
 
         somit für benutzerdefinierte Regeln, die an bestimmten Stellen eingeschoben werden.
 +
</pre>
 +
 +
 +
=== Kommandozeilenparameter von iptables ===
 +
<pre>
 +
-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.
 +
 +
 
</pre>
 
</pre>
  

Revision as of 11:01, 24 November 2025

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.