
Ich habe einen Lighttpd-Webserver, der PHP-generierte Webseiten bereitstellt. Dieser Server ist derzeit aufgrund eines DDoS-Bot-Angriffs mit hohem Datenverkehr konfrontiert und ich suche nach einer Möglichkeit, einige dieser Angriffe zu blockieren oder abzuschwächen.
Soweit ich weiß, bietet lighttpd die Möglichkeit, Anfragen über Remote-IP-Adressen zu blockieren, z. B. durch Setzen
$HTTP["remoteip"] == "12.34.56.0/24" {
url.access-deny = ( "" )
}
in lighttpd.conf
werden alle Anfragen aus dem IP-Bereich 12.34.56.0 - 12.34.56.255 blockiert.
Aufgrund der Natur von DDoS ist es jedoch nicht möglich, einzelne IP-Adressen oder Bereiche zu blockieren, da diese sich relativ häufig ändern.
Durch die Untersuchung des Zugriffsprotokolls habe ich festgestellt, dass die meisten Anfragen von Bots anscheinend das ältere HTTP/1.0-Protokoll verwenden, während der meiste legitime Datenverkehr HTTP/1.1 verwendet.
Meine Frage ist also:Gibt es eine Möglichkeit, in lighttpd alle über HTTP/1.0 eingehenden Anfragen zu blockieren/abzulehnen (und solche über HTTP/1.1 zuzulassen)?
Ich konnte eine solche Möglichkeit im offiziellenlighttpd-Konfigurationsdokumentation.
Anmerkungen:
- Mir ist bewusst, dass ein Teil des legitimen Datenverkehrs auch HTTP/1.0 verwenden könnte, aber ich hätte kein Problem damit, diesen ebenfalls zu blockieren.
- Die Bot-Anfragen scheinen kein gemeinsames Muster für Benutzeragenten oder HTTP-Referrer zu verwenden. Die Verwendung von Benutzern mit einem regulären Ausdrucksmuster scheint also keine Option zu sein.
Antwort1
Anstatt eine Lösung für anzugeben lighttpd
, würde ich Ihnen empfehlen,Fehler2Bandas auf allen Unix-basierten Systemen vorhanden ist. Es überwacht Änderungen in Protokolldateien und analysiert sie gemäß den Regeln für reguläre Ausdrücke. Bei einem übereinstimmenden Muster (in Ihrem Fall HTTP/1.0) blockiert es diese auf der Firewall-Ebene des Systems, was unerwünschte Verbindungen effektiver blockiert.
Wenn Sie außerdem ungewöhnlichen Datenverkehr feststellen, bei dem mehr bösartige als normale Anfragen auftreten, können Sie die folgende Firewall-Regel hinzufügen, um DDoS-Angriffe zu verlangsamen
iptables -A INPUT -p tcp --dport 80 -m limit --limit 20/minute --limit-burst 127 -j ACCEPT
Wenn Sie HTTP/1.0 auf dieser Ebene immer noch blockieren möchten lighttpd
, versuchen Sie, das HTTP-Protokoll folgendermaßen anzupassen:
env.SERVER_PROTOCOL == "HTTP/1.0" {
url.access-deny = ( "" )
}
nginx
(Die Lösung wurde nicht getestet, da ich schon vor langer Zeit umgestiegen bin , aber meiner Ansicht nach könnte sie funktionieren.)