Difference between revisions of "Iptables-Regeln"

From
Jump to: navigation, search
(alle Regeln besitzen ein Target (Ziel))
(Kommandozeilenparameter von iptables)
Line 47: Line 47:
 
-A chain oder --append chain    – Die Regel wird an die angegebene Chain angehängt.  -A PREROUTING.
 
-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
+
-I chain [Regelnummer] oder --insert chain [Regelnummer] – fügt eine neue Regel vor der angegebenen ein oder  
angegebenen ein oder an den Anfang der Chain, wenn keine Nummer angegeben wird.
+
                                                            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
 
</pre>
 
</pre>
  

Revision as of 11:08, 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.

-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.