Home

 

 

Stateful Inspection

Nun ein wenig, über die interessanteste Neuerung von iptables.
Ein Firewall mit s. i. ist um einiges sicherer als ein normaler Paketfilter.
Er speichert die Verbindungsdaten in Tabellen, wie Quell- und Ziel IP-Adresse,
Port-Nummer - Paare, Protokolltypen, den Verbindungsstatus und timeouts.

Folgende vier Statusformen gibt es :

 

 

INVALID :   Das Paket gehört zu keiner bekannten Verbindung
ESTABLISHED: Das Paket gehört zu einer bekannten Verbindung, welche
schon in beiden Richtungen Pakete ausgetauscht hat.
NEW : Entweder das Paket startet eine neue Verbindung, oder es gehört zu einer, die noch keine Pakete in beiden Richtungen hatte
RELATED : Das Paket startet eine neue Verbindung, die mit einer bestehenden Verbindung verwandt ist (z.B. ftp).

 

Die Statustabelle kann man sich z.B mit cat /proc/net/ip_conntrack ansehen.

Die maximale Größe der Tabelle wird in /proc/sys/net/ip4/ip_conntrack_max
bestimmt.

Hier nun ein Beispiel:

iptables -A INPUT -p tcp -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp -m state --state NEW,ESTABLISHED -j ACCEPT

Dies erlaubt ausgehende Päckchen, die eine neue Verbindung initialisieren oder zu einer bereits bestehenden gehören. Eingehende Verbindungen werden nur gestattet, wenn sie zu einer bestehenden Verbindung gehören.
Da durch ein von aussen gesendetes ack-Paket wohl einen Tabelleneintrag erzeugt wird, sollte man sich versichern, daß nur Pakete mit einem syn-Flag gesetzt als neu betrachet werden :

iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP

to be continued.