Frage Stellen Sie bei Verwendung von iptables-Firewall-Regeln den Status NEW an allen zulässigen Ports fest.


Ich sehe oft Iptables konfiguriert, um alle Pakete auf RELATED-Verbindungen und die bestimmten Service-Ports zu neuen Verbindungen zu ermöglichen.

Was ist der Grund für NEW? Wenn eine Verbindung nicht NEW ist, wird RELATED angenommen, also wird die spezifische Port-Regel auch nicht ausgeführt. Warum also die Serviceports explizit mit NEW definieren und nicht nur Protokoll und Portnummer?


21
2018-02-27 13:18


Ursprung




Antworten:


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

Indem die Firewall statisch und die erste Regel so typisch wird -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT Die überwiegende Mehrheit des legitimen Datenverkehrs zu Ihrem Server wird akzeptiert, nachdem nur diese einzelne Regel übergeben wurde. Dieser Verkehr muss keine anderen Regeln durchlaufen.

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

Der einzige Datenverkehr, den die Firewall jetzt validieren muss, sind die explizit neuen Verbindungen.

I.e. Vergleiche eine Firewall für einen öffentlichen Webserver mit Zugriff für einige Webmaster von ihren Workstations:

-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

Ungefähr 99% der legitimen Pakete gehören zu den etablierten Verbindungen und treffen nur die erste Regel. Von den Paketen, die dieser Regel nicht entsprechen, sollten die meisten neue Verbindungen zu Ihrer Website sein. Das Multiport-Modul kann den Zugriff auf HTTP oder HTTPS in einer einzigen Regel gewähren. Die Webmaster melden sich von einer Anzahl von Workstations mit festen Adressen mit ssh und sftp an und alles andere wird zurückgewiesen.

Eine Firewall, bei der die Regeln logisch vom 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 alles und jeder Paket zu Ihrem HTTP-Webserver müsste gegen 5 Regeln überprüft werden, bevor der Zugriff gewährt wird. Und mit mehr Diensten, die auf einem Server laufen, der leicht 50 Regeln oder viel mehr werden kann, wenn Sie zum Beispiel fail2ban oder ähnliche Produkte verwenden würden.


19
2018-02-27 16:01



Eine ausgezeichnete Antwort (+1 von mir!) Außer dass du sagst "Der Zugriff ist auf einer ersten Übereinstimmungsbasis erlaubt"Wenn das erste Spiel zufällig ein DROP oder REJECT ist, erlaubt dies keinen Zugriff. Wenn es ein LOG ist, dann müssen Sie weiterhin ein späteres Match finden, und wenn benutzerdefinierte Ketten involviert werden, können die Dinge ziemlich barock werden sag lieber das "Das Schicksal des Pakets wird auf einer Grundlage von zuerst dispositivem Spiel bestimmt". - MadHatter
Können Sie über den Fall nachdenken, in dem die related/established Zeile ist vorhanden, aber die nachfolgenden Regeln werden nicht bestätigt NEW ? - Daniel Widrick


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

Es wird von Kernel-Modulen namens aufgerufen ip_conntrack_* das macht deine Firewall Staatsbürgerlich. Stateful Firewalls können Verkehrsströme beobachten.

Wenn Sie nur das Protokoll und die Portnummer angeben, ist Ihre Firewall nicht zustandsbehaftet, sondern zustandslos. Bedeutet, dass es nur Pakete einschränkt oder blockiert. Diese Art von Firewalls kennt keinen Datenfluss.

Ein gutes Beispiel ist FTP: aktives FTP verwendet Port 21 für den Steuerkanal, verwendet dann aber Port 20 für den Datenkanal. Im Falle einer Stateful-Firewall müssen Sie Port 20 nicht explizit öffnen, da er mit einer früheren neu eingerichteten Verbindung an Port 21 zusammenhängt.

Hier ist ein Auszug von iptables man seite:

NEW - was bedeutet, dass das Paket eine neue Verbindung gestartet hat, oder   andernfalls mit einer Verbindung verbunden, in der keine Pakete gefunden wurden   Beide Richtungen.

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

RELATED - bedeutet, dass das Paket eine neue Verbindung beginnt, aber   ist einer bestehenden Verbindung zugeordnet, z. B. FTP-Daten   Übertragung oder ein ICMP-Fehler.


13
2018-02-27 13:43



Welcher Mechanismus verbindet Port 20 mit Port 21? Kann eine geöffnete IP-Verbindung zu einem anderen Port übertragen werden? - dronus
nf_conntrack_ftp.ko - mateusza


-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

Der obige Regelsatz lässt Pakete an den TCP-Port 22 mit einem Status von INVALID durch ACCEPT

Ungültig: Wenn keiner der vorherigen Zustände zutrifft, befindet sich das Paket im Zustand INVALID. Dies kann durch verschiedene Arten von Stealth-Network-Probes verursacht werden, oder es könnte bedeuten, dass Sie keine CONNTRACK-Einträge mehr haben (die Sie auch in Ihren Protokollen sehen sollten). Oder es kann einfach ganz gutartig sein.

https://unix.stackexchange.com/questions/57423/how-to-understand-why-the-packet-was-sidered-invalid-by-the-iptables


STATE ansprechen NEW stellt sicher, dass INVALID-Pakete nicht versehentlich akzeptiert werden.

Und um die Bedeutungen zu verdeutlichen:

  • NEU: Dies ist eine neue Verbindung
  • ETABLIERT: Dies ist ein Paket, das an einer aktuellen Verbindung beteiligt ist
  • VERBUNDEN: Dies ist eine neue Verbindung, wurde jedoch von einer bestehenden Verbindung abgeleitet
  • UNGÜLTIG: Keine der oben genannten gilt.

4
2018-02-27 16:32