Blockieren Sie Anfragen in lighttpd, die mit HTTP/1.0 gestellt wurden, und lassen Sie nur HTTP/1.1 zu

Blockieren Sie Anfragen in lighttpd, die mit HTTP/1.0 gestellt wurden, und lassen Sie nur HTTP/1.1 zu

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.confwerden 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.)

verwandte Informationen