Warum sollte bei Verwendung der iptables-Firewallregeln der Status NEW für alle zulässigen Ports festgelegt werden?

23

Ich sehe oft iptables, die so konfiguriert sind, dass alle Pakete zu RELATED-Verbindungen und die spezifischen Service-Ports zu NEW-Verbindungen zugelassen werden.

Was ist der Grund für die Angabe von NEW? Wenn eine Verbindung nicht NEU ist, handelt es sich vermutlich um RELATED, sodass die spezifische Portregel auch nicht ausgeführt wird. Warum also die Service-Ports explizit mit NEW und nicht nur mit Protokoll und Portnummer definieren?

Dronus
quelle

Antworten:

21

Die Regeln in einer Netfilter-Firewall (iptables) werden nacheinander überprüft und das Schicksal des Pakets (ACCEPT, DROP, REJECT usw.) wird auf Basis der ersten Übereinstimmung bestimmt.

Indem Sie die Firewall in den Status "Statefull" und "First Rule" versetzen, wird -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPTder Großteil des legitimen Datenverkehrs zu Ihrem Server akzeptiert, nachdem Sie nur diese eine Regel erfüllt haben. Dieser Verkehr muss keine anderen Regeln überschreiten.

Abhängig von der Größe Ihrer Regelbasis kann dies einen signifikanten Unterschied in Ihrer Firewall-Leistung bedeuten.

Der einzige Datenverkehr, den die Firewall jetzt überprüfen muss, sind die explizit neuen Verbindungen.

Das heißt, Sie vergleichen eine Firewall für einen öffentlichen Webserver mit dem Zugriff für eine Handvoll Webmaster von ihren Arbeitsstationen aus:

-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp -m multiport --dports 80,443 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -m iprange --src-range 10.9.8.7-10.9.8.10 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited

Etwa 99% der legitimen Pakete gehören zu eingerichteten Verbindungen und erfüllen nur die erste Regel. Von den Paketen, die nicht mit dieser Regel übereinstimmen, sollten die meisten neue Verbindungen zu Ihrer Website sein. Das Multiport-Modul kann in einer einzigen Regel den Zugriff auf HTTP oder HTTPS gewähren. Die Webmaster melden sich von einer Reihe von Arbeitsstationen mit festen Adressen mit ssh und sftp an und alles andere wird abgelehnt.

Eine Firewall, bei der die Regeln logisch nach dem TCP-Port geordnet sind:

-A INPUT -p tcp  -m tcp --dport 22  --source 10.9.8.7 -j ACCEPT
-A INPUT -p tcp  -m tcp --dport 22  --source 10.9.8.8 -j ACCEPT
-A INPUT -p tcp  -m tcp --dport 22  --source 10.9.8.9 -j ACCEPT
-A INPUT -p tcp  -m tcp --dport 22  --source 10.9.8.10 -j ACCEPT
-A INPUT -p tcp  -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp  -m tcp --dport 443 -j ACCEPT

Hier müsste jedes Paket zu Ihrem HTTP-Webserver gegen 5 Regeln geprüft werden, bevor der Zugriff gewährt wird. Und mit mehr Diensten, die auf einem Server ausgeführt werden, kann dies leicht zu 50 oder mehr Regeln führen, wenn Sie beispielsweise fail2ban oder ähnliche Produkte verwenden.

HBruijn
quelle
1
Eine exzellente Antwort (+1 von mir!) Mit der Ausnahme, dass Sie sagen "Der Zugriff ist auf Basis des ersten Matches erlaubt ". Wenn es sich bei der ersten Übereinstimmung um ein DROP oder REJECT handelt, ist der Zugriff nicht möglich. Wenn es sich um ein LOG handelt, müssen Sie fortfahren, eine spätere Übereinstimmung zu finden. Und wenn sich Custom-Ketten einmischen, kann es ganz schön barock werden. Ich würde eher sagen, dass " das Schicksal des Pakets auf der Basis der ersten positiven Übereinstimmung bestimmt wird ".
MadHatter unterstützt Monica
5
Können Sie über den Fall nachdenken, in dem die related/establishedLeitung vorhanden ist, die nachfolgenden Regeln jedoch keine Aussage machen NEW?
Daniel Widrick
13

NEW bedeutet, dass das Paket eine neue Verbindung gestartet hat.

Es wird von so genannten Kernel-Modulen verwaltet ip_conntrack_*, die Ihre Firewall in einen statusbehafteten Zustand versetzen . Stateful Firewalls können Verkehrsströme überwachen.

Wenn Sie nur Protokoll und Portnummer angeben, ist Ihre Firewall nicht statusbehaftet, sondern statuslos. Bedeutet, dass es nur Pakete einschränkt oder blockiert. Diese Art von Firewalls kennen den Datenfluss nicht.

Ein gutes Beispiel ist FTP: Aktives FTP verwendet Port 21 als Steuerkanal, verwendet dann aber Port 20 als Datenkanal. Im Falle einer Stateful Firewall müssen Sie Port 20 nicht explizit öffnen, da es sich um eine zuvor neu hergestellte Verbindung zu Port 21 handelt.

Hier ist ein Auszug aus der iptablesManpage:

NEU - bedeutet, dass das Paket eine neue Verbindung gestartet hat oder anderweitig mit einer Verbindung verknüpft ist, bei der keine Pakete in beide Richtungen gesehen wurden.

ESTABLISHED - Das bedeutet, dass das Paket einer Verbindung zugeordnet ist, bei der Pakete in beide Richtungen gesehen wurden.

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

krisFR
quelle
1
Welcher Mechanismus verbindet den Port 20 mit dem Port 21? Kann eine geöffnete IP-Verbindung auf einen anderen Port übertragen werden?
Dronus
nf_conntrack_ftp.ko
mateusza
7
-A INPUT -m tcp -p tcp -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -DROP

Mit dem Regelsatz "Oben" können Pakete mit einem INVALIDDurchgangsstatus an TCP-Port 22 gesendet werdenACCEPT

Ungültig : Wenn keiner der vorherigen Zustände zutrifft, befindet sich das Paket im Zustand UNGÜLTIG. Dies kann durch verschiedene Arten von Stealth-Netzwerkprüfungen verursacht werden, oder es kann bedeuten, dass Ihnen die CONNTRACK-Einträge ausgehen (die Sie auch in Ihren Protokollen finden sollten). Oder es kann einfach nur gutartig sein.

/unix/57423/wie-verstehe-wieso-das-Paket-von- den-iptabellen- als- ungültig- eingestuft wurde


Durch das Aktivieren von STATE wird NEWsichergestellt, dass INVALID-Pakete nicht versehentlich akkreditiert werden.

Und um die Bedeutungen zu klären:

  • NEU : Dies ist eine neue Verbindung
  • ESTABLISHED : Dies ist ein Paket, das an einer aktuellen Verbindung beteiligt ist
  • RELATED : Dies ist eine neue Verbindung, die jedoch von einer vorhandenen Verbindung vorhergesagt wurde
  • UNGÜLTIG : Keine der oben genannten Aussagen trifft zu.
Daniel Widrick
quelle