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 ACCEPT
der 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.
related/established
Leitung vorhanden ist, die nachfolgenden Regeln jedoch keine Aussage machenNEW
?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
iptables
Manpage:quelle
Mit dem Regelsatz "Oben" können Pakete mit einem
INVALID
Durchgangsstatus an TCP-Port 22 gesendet werdenACCEPT
/unix/57423/wie-verstehe-wieso-das-Paket-von- den-iptabellen- als- ungültig- eingestuft wurde
Durch das Aktivieren von STATE wird
NEW
sichergestellt, dass INVALID-Pakete nicht versehentlich akkreditiert werden.Und um die Bedeutungen zu klären:
quelle