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.