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


1

Ich habe einen lighttpd-Webserver, der PHP-generierte Webseiten liefert. Dieser Server ist derzeit aufgrund eines DDoS-Bot-Angriffs starkem Datenverkehr ausgesetzt, und ich suche nach einer Möglichkeit, einige davon zu blockieren oder zu mildern.

Lighttpd bietet meines Wissens die Möglichkeit, Anfragen über eine entfernte IP-Adresse zu blockieren, zB durch Putten

$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 sie sich häufig ändern.

Beim Untersuchen des Zugriffsprotokolls stellte ich fest, dass die meisten Anfragen von Bots das ältere HTTP / 1.0-Protokoll zu verwenden scheinen, während der meiste legitime Datenverkehr HTTP / 1.1 verwendet.

Meine Frage lautet also: Gibt es eine Möglichkeit, alle über HTTP / 1.0 eingehenden Anforderungen zu blockieren / abzulehnen (und diese über HTTP / 1.1 zuzulassen), die in lighttpd eingehen?

Ich konnte eine solche Möglichkeit in der offiziellen Konfigurationsdokumentation von lighttpd nicht finden .

Anmerkungen:

  • Ich bin mir bewusst, dass legitimer Datenverkehr möglicherweise auch HTTP / 1.0 verwendet, aber es wäre in Ordnung, auch diese zu blockieren.
  • Die Bot-Anfragen scheinen kein gemeinsames Muster für Benutzeragenten oder HTTP-Verweise zu verwenden, daher scheint die Verwendung von solchen mit einem Muster für reguläre Ausdrücke keine Option zu sein.

Antworten:


1

Anstatt eine Lösung für anzugeben , lighttpdwürde ich Ihnen empfehlen, fail2ban zu verwenden , das auf allen Unix-basierten Systemen vorhanden ist. Es überwacht Änderungen in den Protokolldateien und analysiert sie gemäß den Regeln für reguläre Ausdrücke. Im Falle eines übereinstimmenden Musters (in Ihrem Fall HTTP / 1.0) wird es auf der Firewall-Ebene des Systems blockiert, wodurch unerwünschte Verbindungen wirksamer blockiert werden.

Wenn bei Ihnen ungewöhnlicher Datenverkehr auftritt, bei dem mehr böswillige Anforderungen als normale Anforderungen angezeigt werden, können Sie die folgenden Firewallregeln hinzufügen, um den DDoS-Angriff zu verlangsamen

iptables -A INPUT -p tcp --dport 80 -m limit --limit 20/minute --limit-burst 127 -j ACCEPT

Wenn Sie weiterhin HTTP / 1.0 auf lighttpdEbene blockieren möchten , versuchen Sie, das HTTP-Protokoll folgendermaßen abzugleichen:

env.SERVER_PROTOCOL == "HTTP/1.0" {
  url.access-deny = ( "" )
} 

(Die Lösung wurde nicht getestet, seit ich zu vor nginxlanger Zeit gewechselt bin , aber AFAIR könnte es funktionieren.)

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.