GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Sollte ich die Paketrate mit iptables begrenzen?

Eine Ratenbegrenzung ist keine Verhinderung, sondern eher eine Einladung zu DoS - insbesondere in der oben vorgestellten Variante, wo Pakete verworfen werden, wenn eine bestimmte Rate nicht authentifizierter Pakete ohne Statusinformationen überschritten wurde. Da jeder in diesem Verbindungszustand ohne größeren Aufwand Pakete (einschließlich Quell-IP-Adressen) fälschen kann, entsteht ein neuer DoS-Angriffsvektor, der Ihre Ratenbegrenzungsfunktion nutzt.

Eine Ratenbegrenzung ist im Allgemeinen nur dann sinnvoll, wenn Sie

haben
  1. entweder ein vorhersagbares hartes oder weiches Verbindungslimit in Ihrer Konfiguration
  2. Setzen Sie das Ratenlimit für allgemeinen Traffic unterhalb dieses Limits, um lastunabhängig Verbindungen für priorisierten oder administrativen Traffic aufbauen zu können

Während 1. oft schwer genug zu bestimmen ist, um sich überhaupt die Mühe zu machen, funktioniert 2. offensichtlich nur, wenn Sie in der Lage sind, "priorisierten oder administrativen" Verkehr beim Verbindungsaufbau zuverlässig vom Rest zu unterscheiden - z. wenn es über eine andere Netzwerkschnittstelle kommt.

In anderen Fällen würde es die Ausfallsicherheit Ihres Systems eher verringern als erhöhen.


Das Problem mit -m limit ist die Begrenzung aller TCP-Pakete unabhängig von den Quell-IP-Adressen. Wenn Sie also eine niedrige Beschränkung für Syn-Pakete wie

haben
-A INPUT -p tcp  --syn -m limit --limit 30/s --limit-burst 30 -j ACCEPT
-A INPUT -p tcp --syn -j DROP

Nur ein Client mit der hping-Befehlszeile kann Ihren Server herunterfahren, indem er so viele TCP-Pakete mit dem SYN-Flag sendet, da die Begrenzungsregel übereinstimmt und viele Pakete unabhängig von den IP-Adressen der Quelle fallen lässt. Limit macht keinen Unterschied zwischen gutem und schlechtem Verkehr. Es wird auch den guten eingehenden Verkehr verringern.

hping könnte etwa so aussehen:

hping thetargetedhostip -p 80 -S -c 1000 -i u20000

Es ist besser, hashlimit zu verwenden, um eingehende TCP-Verbindungen pro IP-Adresse zu begrenzen . Die folgende Regel trifft nur zu, wenn 30 Pakete pro Sekunde empfangen werden, wodurch die Anzahl der autorisierten Pakete pro IP reduziert wird bis 15 Pakete pro Sekunde.

-A INPUT -p tcp --syn -m hashlimit --hashlimit 15/s --hashlimit-burst 30 --hashlimit-mode srcip --hashlimit-srcmask 32 --hashlimit-name synattack -j ACCEPT 
-A INPUT -p tcp --syn -j DROP

Tatsächlich bin ich ÜBERZEUGT, dass viele Server, die heute heruntergefahren werden, nicht aufgrund fehlender Ressourcen während eines Angriffs, sondern weil das Begrenzungsmodul den gesamten eingehenden Datenverkehr fallen lässt.


Linux
  1. Linux IPTables:So fügen Sie Firewall-Regeln hinzu (Beispiel:SSH zulassen)

  2. Wie kompiliert man eine .c-Datei mit OpenSSL-Includes?

  3. Begrenzen Sie Speicher und CPU mit lxc-execute

  4. Wie man iptables oder tc verwendet, um Pakete pro Client zu begrenzen.

  5. Beschränken Sie den SSH-Zugriff auf bestimmte Clients nach IP-Adresse

So führen Sie einen Befehl mit Zeitlimit (Timeout) in Linux aus

Analyse des Netzwerkverkehrs mit tcpdump

So sichern Sie eine Linux-Firewall mit IPTables-Regeln

Führen Sie Befehle mit einem Zeitlimit in Ubuntu 20.04 aus

Wie kann ich mit iptables weiterleiten?

Wie kann ich Dateien mit einer Größenbeschränkung komprimieren?