Ich verwende iptables auf Ubuntu Server. Es ist ein Webserver auf einem VPS.
Ich würde gerne wissen, ob ich Pakete auf Raten beschränken soll. Wenn ja, was sollte ich bewerten? Und sollte ich das global oder per IP-Adresse tun?
Referenz
Ich habe Leute gesehen, die dies vorgeschlagen haben:
# Limit packet traffic on a TCP or UDP port:
iptables -A INPUT -p $proto --destination-port $port --syn -m state --state NEW -m limit --limit $lim/s --limit-burst $lb -j ACCEPT
# Limit established/related packet traffic:
iptables -A INPUT -m state --state RELATED,ESTABLISHED -m limit --limit $lim/s --limit-burst $lb -j ACCEPT
Das oben Gesagte, ein globales Zinslimit, scheint zumindest für die Fälle, die ich mir vorstellen kann, nicht sehr nützlich zu sein. Gibt es einen Fall, in dem ich das Ratenlimit global festlegen sollte?
Ich glaube, dass ein Ratenlimit pro IP normalerweise besser ist:
# Add the IP to the list:
iptables -A INPUT -p $proto --destination-port $port --syn -m state --state NEW -m recent --set --name RATELIMITED
# Drop if exceeded limit:
iptables -A INPUT -p $proto --destination-port $port --syn -m state --state NEW -m recent --update --seconds $sec --hitcount $hc --rttl --name RATELIMITED -j DROP
# Accept if inside limit:
iptables -A INPUT -p $proto --destination-port $port --syn -m state --state NEW -j ACCEPT
Zusätzliche Frage: Remote-IPs können gefälscht werden. Wie kann man sie richtig einschränken?
Hierzu wurde eine weitere Frage hinzugefügt:
/server/340258/how-to-rate-limit-spoofed-ips-with-iptables
Das Ziel
Ich versuche, das Risiko einiger D / DoS-Angriffe und allgemeinen Missbrauchs zu verringern.
Verwandte
Wie kann ich SSH-Verbindungen mit iptables einschränken?
PS : Ich habe gerade eine verwandte Frage nur für ICMP geöffnet und sie enthält eine Ratenbegrenzung für dieses Protokoll: iptables | Arten von ICMP: Welche sind (potenziell) schädlich?
Das Problem mit -m limit ist die Begrenzung aller TCP-Pakete unabhängig von den Quell-IP-Adressen. Also, wenn Sie eine geringe Einschränkung für Syn-Pakete wie haben
Nur ein Client mit der Befehlszeile hping kann Ihren Server herunterfahren, indem er so viele TCP-Pakete mit dem SYN-Flag sendet, da die Limit-Regel übereinstimmt und viele Pakete unabhängig von den IP-Adressen der Quelle verworfen werden. Das Limit macht keinen Unterschied zwischen gutem und schlechtem Verkehr. Es wird auch den guten eingehenden Verkehr beeinträchtigen.
hping könnte so etwas sein wie:
Es ist besser, Hash-Limit zu verwenden, um eingehende TCP-Verbindungen pro IP-Adresse zu begrenzen . Die folgende Regel stimmt nur überein, wenn 30 Pakete pro Sekunde empfangen werden, wodurch die Anzahl der autorisierten Pakete pro IP auf 15 Pakete pro Sekunde reduziert wird .
Tatsächlich bin ich davon überzeugt, dass viele Server, die heute heruntergefahren werden, nicht durch Ressourcen während eines Angriffs ausgelastet sind, sondern weil das Limit-Modul den gesamten eingehenden Datenverkehr löscht.
quelle
Normalerweise beschränke ich die Regeln zur Ratenbegrenzung auf Server, von denen ich erwarte, dass sie:
Zum Beispiel die Anmeldeseite eines Hosting-Control-Panels, POP3, IMAP, SSH usw. Ich lasse HTTP-Dienste normalerweise weit offen und blockiere sie nur, wenn ein Problem vorliegt.
Sie möchten keinen guten Webverkehr verlieren. Ein Link auf slashdot kann Ihnen eine Menge Verkehr senden, und mit globalen Regeln können Sie möglicherweise kein Problem erkennen.
In Bezug auf gefälschte IPs können sie mit dieser Methode nicht blockiert werden und sind normalerweise kein Problem, da sich diese Regeln hauptsächlich auf die Begrenzung etablierter TCP-Verbindungen konzentrieren. Mit einer gefälschten IP kann die TCP-Verbindung niemals hergestellt werden.
quelle