Apache2: Zugriffskontrolle mit mod_cband

Nachdem mein Server heute durch automatisierte Anfragen von Snap.com auf mein Blog quasi lahmgelegt wurde habe ich nun für nodomain.cc mod_cband aktiviert. Durch das Einbinden der Snap.com-Previews wurde mir schmerzvoll bewusst, wie leicht solch ein Apache-MySQL-Server doch in die Knie zu zwingen ist, vor allem bei einer hohen Anzahl von parallellen Anfragen.
Hier die Konfiguration:

# http://mod-cband.com/documentation
<IfModule mod_cband.c>
# limit speed of this vhost to 20Mbit/s, 5 request/s, 15 open connections
CBandSpeed 20Mbps 5 15

# in addition every remote host connecting to this vhost
# will be limited to 200kbit/s, 3 request/s, 2 open connections
CBandRemoteSpeed 20Mbps 3 2

# limit GoogleBot
CBandClassRemoteSpeed googlebot_class 20kb/s 2 3
</IfModule>

Nebenbei habe ich den GoogleBot noch ein bisschen beschränkt. Der Vorteil liegt auf der Hand: durch gezieltes “Bremsen” einzelner VHosts kann ich nun relativ flexibel auf solche “Angriffe” reagieren, egal welche Domain verrückt spielt. Werden die Limits überschritten, kommt ein 503er.

Sorry an dieser Stelle an alle, die heute mittag vom Ausfall betroffen waren. Durch die starke Auslastung und die vielen gleichzeitig geöffneten Verbindungen zur Datenbank hatte der MySQL-Server auch keine Lust mehr. Blöd, wenn die Benutzerauthentifizierung (POP3, IMAP, FTP, …) auch über die Datenbank läuft 😉 – ich habe sicherlich daraus gelernt!

Übrigens: bei einem Load von ca. 100 dauert das Login per SSH ca. 5 Minuten. Zum Glück gibt es die 1und1-Firewall, mit der ich schnell den Apache-Port geschlossen habe, damit sich das System wieder erholen konnte.

7 Replies to “Apache2: Zugriffskontrolle mit mod_cband”

  1. So, ich hab gerade nochmal von einem per DSL2000 angebundenen Rechner einen ApacheBench2 mit 2000 Zugriffen und 30 concurrent connections laufen lassen.
    Der Load auf dem Server blieb konstant bei ca. 8.00, andere Präsenzen waren noch mit sehr guter Geschwindigkeit zu erreichen und den übrigen Diensten ging es auch gut.
    Bei den Responses waren halt viele 503er dabei aber das macht ja nichts.
    Die Fehlermeldung spricht ja von Wartungsarbeiten oder Kapazitätsproblemen.

    Lessons learned 😉

  2. Sehr interessanter Tipp! *bookmark*
    Muss ich mir bei Gelegenheit auch mal ansehen. Zwar dürfte es relativ schwierig werden, durch viele Zugriffe die Last meines Servers (der hinter einer Home-DSL-Leitung hängt) in kritische Höhen zu treiben, da die begrenzte Bandbreite dem Effekt entgegentreten dürfte. Dennoch führt das volle Ausnutzen des Upstreams allein schon quasi zum totalen Erliegen des Nutz-Internet-Traffics 🙂

Leave a Reply

Your email address will not be published. Required fields are marked *