Iptables start: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
(Die Seite wurde neu angelegt: „=Vorüberlegung= *Sowohl nftables als auch der Vorgänger iptables arbeiten mit Tabellen und Ketten. *Bei iptables sind diese standardmäßig vorhanden. *iptab…“)
 
Zeile 19: Zeile 19:
 
*Wird es lokal erzeugt, geht es durch die '''OUTPUT'''-Kette.
 
*Wird es lokal erzeugt, geht es durch die '''OUTPUT'''-Kette.
 
*Kommt es von außen und soll weitergeleitet werden, geht es durch die '''FORWARD'''-Kette.
 
*Kommt es von außen und soll weitergeleitet werden, geht es durch die '''FORWARD'''-Kette.
 +
{{#drawio:iptables-filter.png}}
  
 
=Funktionsweise=
 
=Funktionsweise=

Version vom 12. April 2025, 19:59 Uhr

Vorüberlegung

  • Sowohl nftables als auch der Vorgänger iptables arbeiten mit Tabellen und Ketten.
  • Bei iptables sind diese standardmäßig vorhanden.
  • iptables verwendet die Tabelle filter mit den drei Ketten INPUT, OUTPUT und FORWARD.
  • Die Konfiguration kann direkt über iptables-Befehle erfolgen oder über eine gespeicherte Datei wie /etc/iptables/rules.v4.
  • Wird keine Regel gesetzt, lautet die Default Policy standardmäßig ACCEPT.

Anzeigen der aktuellen Konfiguration

  • iptables -L -v -n
Chain INPUT (policy ACCEPT)
Chain FORWARD (policy ACCEPT)
Chain OUTPUT (policy ACCEPT)

Welchen Zustand haben wir denn nun?

  • Ein Paket durchläuft genau eine dieser Ketten:
  • Ist das Paket für den lokalen Rechner bestimmt, geht es durch die INPUT-Kette.
  • Wird es lokal erzeugt, geht es durch die OUTPUT-Kette.
  • Kommt es von außen und soll weitergeleitet werden, geht es durch die FORWARD-Kette.

Funktionsweise

Regeln

  • Jede dieser Ketten enthält eine Abfolge von Regeln.
  • Diese werden von oben nach unten durchlaufen.
  • Trifft eine Regel zu, wird sie angewendet und die Verarbeitung endet.
  • Am Ende greift die Default Policy der Kette.

Ziele der Filter-Ketten

  • ACCEPT: das Paket wird angenommen
  • REJECT: das Paket wird abgelehnt, es wird ein Fehlerpaket gesendet
  • LOG: das Paket wird protokolliert
  • DROP: das Paket wird still verworfen
filter table
INPUT OUTPUT FORWARD
rule 1 rule 1 rule 1
rule 2 rule 2 rule 2
rule 3 rule 3
rule 4
DEFAULT POLICY DEFAULT POLICY DEFAULT POLICY

Wir ändern nun die Default Policy auf DROP

  • Achtung: Es ist momentan keine gute Idee, dies zu aktivieren, wenn man per SSH eingeloggt ist.
  • Man würde sich sofort selbst aussperren.
  • Die Aktivierung erfolgt erst, wenn alle notwendigen Regeln gesetzt sind.
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP

Connection Tracking

  • Connection Tracking merkt sich, welche Verbindungen gerade bestehen.
  • Ein neu aufgebautes Paket hat den Status NEW.
  • Pakete, die zu einer bestehenden Verbindung gehören, haben den Status ESTABLISHED.
  • Zusätzlich gibt es RELATED für z. B. ICMP- oder FTP-Sekundärverbindungen.
  • Auch UDP wird mit Hilfe von Timern getrackt.
  • Für bestimmte Protokolle wie FTP oder SIP werden ggf. Helper-Module benötigt.

Ziel des Connection Tracking

  • Pakete mit Status ESTABLISHED oder RELATED sollen durchgelassen werden.
  • Nur neue Verbindungen werden gezielt erlaubt.
  • So lässt man nur bekannte oder kontrollierte Kommunikation durch.

Einbauen des Connection Tracking Grundgerüsts

iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

Regeln dauerhaft aktivieren

  • apt install iptables-persistent
  • iptables-save > /etc/iptables/rules.v4
  • systemctl enable netfilter-persistent
  • systemctl start netfilter-persistent