Frage

Welche Techniken und / oder Module sind robust Rate zu implementieren Begrenzung? (Anfragen | Bytes / ip / Zeiteinheit) in Apache

War es hilfreich?

Lösung

Die beste

  • mod_evasive (sich auf die Verringerung der DoS-Exposition)
  • mod_cband (beste für 'normale' Bandbreitenkontrolle gekennzeichnet)

und der Rest

Andere Tipps

Wie bereits erwähnt in Blog Post scheint es möglich, mod_security zu verwenden, um eine Ratenbegrenzung pro Sekunde zu implementieren.

Die Konfiguration ist so etwas wie folgt aus:

SecRuleEngine On

<LocationMatch "^/somepath">
  SecAction initcol:ip=%{REMOTE_ADDR},pass,nolog
  SecAction "phase:5,deprecatevar:ip.somepathcounter=1/1,pass,nolog"
  SecRule IP:SOMEPATHCOUNTER "@gt 60" "phase:2,pause:300,deny,status:509,setenv:RATELIMITED,skip:1,nolog"
  SecAction "phase:2,pass,setvar:ip.somepathcounter=+1,nolog"
  Header always set Retry-After "10" env=RATELIMITED
</LocationMatch>

ErrorDocument 509 "Rate Limit Exceeded"

Es gibt zahlreiche Wege, einschließlich Web-Application-Firewalls, aber die einfachste Sache zu implementieren, wenn ein Apache mod verwenden.

Eine solche mod ich empfehlen, ist Mod_qos . Es ist ein freies Modul, das veryf wirksam gegen certin DOS, Bruteforce und Slowloris Attacken ist. Dies wird Ihre Serverbelastung ziemlich viel nachlassen.

Es ist sehr mächtig .

Die aktuelle Version von der Mod_qos Modul Kontrollmechanismen implementiert zu verwalten:

  • Die maximale Anzahl gleichzeitiger Anforderungen an einen Standort / Ressource (URL) oder virtueller Host.

  • Die Begrenzung der Bandbreite, wie die maximal zulässige Anzahl von Anfragen pro Sekunde zu einer URL oder dem Maximum / Minimum der heruntergeladenen Kbytes pro Sekunde.

  • Begrenzt die Anzahl der Anfrageereignisse pro Sekunde (Anfrage Bedingungen).

  • Begrenzt die Anzahl der Anfrageereignisse innerhalb eines bestimmten Zeitraums.
  • Es kann auch erkennen, sehr wichtige Personen (VIP), die den Zugang kann Web-Server ohne oder mit weniger Einschränkungen.
  • Allgemeine Anforderungszeile und Header-Filter zu verweigern, nicht autorisierte Operationen.

  • Anfrage Körperdaten Begrenzung und Filterung (mod_parp erfordert).

  • Begrenzt die Anzahl der Anfrageereignisse für einzelne Clients (IP).

  • Beschränkung der TCP-Verbindungsebene, beispielsweise die maximale Anzahl der erlaubt Verbindungen von einer einzelnen IP-Quelladresse oder dynamisch Keep-Alive-Kontrolle.

  • IP-Adressen wieder Vorzugsweise bekannt, wenn Server aus der freien TCP läuft Verbindungen.

Dies ist ein Beispiel-Konfigurations von dem, was Sie es für verwenden können. Es gibt Hunderte von möglichen Konfigurationen an Ihre Bedürfnisse anpassen. Besuchen Sie die Website für weitere Informationen über die Kontrollen.

Sample configuration:
# minimum request rate (bytes/sec at request reading):
QS_SrvRequestRate                                 120

# limits the connections for this virtual host:
QS_SrvMaxConn                                     800

# allows keep-alive support till the server reaches 600 connections:
QS_SrvMaxConnClose                                600

# allows max 50 connections from a single ip address:
QS_SrvMaxConnPerIP                                 50

# disables connection restrictions for certain clients:
QS_SrvMaxConnExcludeIP                    172.18.3.32
QS_SrvMaxConnExcludeIP                    192.168.10.

http://opensource.adnovum.ch/mod_qos/

In Apache 2.4 gibt es ein neues Lager Modul namens mod_ratelimit . Für Modemgeschwindigkeiten emulieren, können Sie mod_dialup . Obwohl ich sehe nicht, warum Sie konnte einfach nicht mod_ratelimit für alles verwendet werden.

Leider mod_evasive wird nicht funktionieren, als wenn sie in nicht-prefork Konfigurationen (letzte Apache-Setups sind hauptsächlich MPM)

verwendet erwartet

Eine weitere Option - Mod_qos

Nicht einfach zu konfigurieren -. Aber leistungsstarke

http://opensource.adnovum.ch/mod_qos/

Abhängig von, warum Sie wollen Grenze bewerten.

Wenn es gegen eine Überlastung der Server zu schützen ist, macht es wirklich Sinn NGINX davor zu setzen, und konfigurieren Rate dort Begrenzung . Es macht Sinn, weil NGINX viel weniger Ressourcen verbraucht, so etwas wie ein paar MB pro zehntausend Verbindungen. Also, wenn der Server überschwemmt wird, NGINX die Raten tut Begrenzung (eine unbedeutende Menge von Ressourcen) und nur den zulässigen Verkehr auf Apache übergeben.

Wenn alles, was Sie sind nach Einfachheit, so etwas wie mod_evasive verwenden.

Wie üblich, wenn es gegen DDoS oder DoS-Angriffe zu schützen, ist, einen Dienst wie Cloudflare verwenden, die auch geschwindigkeitsbestimmend sind.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top