it-swarm.com.de

iptables: Unterschied zwischen NEUEN, EINGESETZTEN und VERWANDTEN Paketen

Teil einer Firewall auf einem Server:

iptables -A INPUT -p tcp --dport 22 -m state NEW --state -m recent --set

iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 100 --hitcount 10 -j DROP

Wenn ich online suche, wird in dieser Regel immer NEU verwendet, aber es fällt mir schwer zu verstehen, warum ESTABLISHED und RELATED nicht verwendet werden.

So was :

iptables -A INPUT -p tcp --dport 22 -m state NEW,ESTABLISHED,RELATED --state -m recent --set

iptables -A INPUT -p tcp --dport 22 -m state --state NEW,ESTABLISHED,RELATED -m recent --update --seconds 100 --hitcount 10 -j DROP

Kann mir jemand erklären, wann genau ein NEUES Paket in ESTABLISHED und RELATED geändert wird?

47
Kris

Betrachten Sie ein NEUES Paket als einen Telefonanruf, bevor der Empfänger abgenommen hat. Ein etabliertes Paket ist das "Hallo". Und ein RELATED-Paket wäre, wenn Sie anrufen würden, um ihnen von einer E-Mail zu erzählen, die Sie ihnen senden wollten. (Die E-Mail wird in Beziehung gesetzt.)

Für den Fall, dass meine Analogie nicht so gut ist, denke ich persönlich, dass die Manpages gut damit umgehen:

NEU - bedeutet, dass das Paket eine neue Verbindung gestartet hat oder anderweitig einer Verbindung zugeordnet ist, die keine Pakete in beide Richtungen gesehen hat, und

ESTABLISHED - bedeutet, dass das Paket einer Verbindung zugeordnet ist, die Pakete in beide Richtungen gesehen hat.

RELATED - bedeutet, dass das Paket eine neue Verbindung startet, jedoch einer vorhandenen Verbindung zugeordnet ist, z. B. einer FTP-Datenübertragung oder einem ICMP-Fehler.

iptables (8) - Linux-Manpage

48
Aaron Copley

Asumming für Server und Client ein restriktives INPUT und offenes OUTPUT, d.h.

iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT

Und von iptables-extensions (8) über das Beispiel von FTP im aktiven Modus:

1. NEU

NEU Das Paket hat eine neue Verbindung gestartet oder ist anderweitig einer Verbindung zugeordnet, die keine Pakete in beide Richtungen gesehen hat.

Der Client an Port 50000 (Jeder zufällige nicht privilegierte Port) stellt eine Verbindung zum FTP-Server an Port 21 Her. Der Server würde mindestens dies benötigen, um diese eingehende Verbindung zu akzeptieren:

iptables -A INPUT --dport 21 -m state --state NEW -j ACCEPT

2. GEGRÜNDET

ESTABLISHED Das Paket ist einer Verbindung zugeordnet, die Pakete in beide Richtungen gesehen hat.

Jetzt auf der Clientseite hat er eine ausgehende Verbindung zum Server auf Port 21 Über einen lokalen Port 50000 Hergestellt und benötigt die folgenden iptables, damit die Antwort von server (21) eintreffen kann. zu client (50000):

Sudo iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT

3. VERBINDUNG

RELATED Das Paket startet eine neue Verbindung, ist jedoch einer vorhandenen Verbindung zugeordnet, z. B. einer FTP-Datenübertragung oder einem ICMP-Fehler.

Nachdem die FTP-Verbindung hergestellt wurde und eine Datenverbindung hergestellt werden soll, öffnet der Client einen Server-Socket (ja, bei aktivem FTP wird der Client zum Server für die Datenverbindung) an Port 60000 (Zu meinem Wenn Sie verstehen, dass der Client diesen Port 60000 als RELATED für die andere Verbindung von 50000->21 markiert, sendet er diese Portnummer mit dem Befehl FTP PORT an den Server. Dann öffnet der FTP-Server eine neue Verbindung von seinem Port 20 Zu Port 60000 Auf dem Client, und nun benötigt der Client Folgendes, damit diese neue Verbindung erfolgreich sein kann:

Sudo iptables -A INPUT -m state --state RELATED -j ACCEPT

Damit dies funktioniert, müssen Sie das Kernelmodul ip_conntrack_ftp Aktivieren, damit das System Verbindungen/Pakete als RELATED markieren kann (dies ist mein Verständnis, ich habe nicht zu viel darüber nachgedacht). ::

modprobe ip_conntrack_ftp
14
Jaime Hablutzel