Hohe Latenz/Timeout bei Apache & bestimmter Adressbereich

Apache, Lighttpd, nginx, Cherokee
Khlav Kalash
Posts: 3
Joined: 2010-06-21 17:56

Hohe Latenz/Timeout bei Apache & bestimmter Adressbereich

Post by Khlav Kalash » 2010-06-21 18:15

Hallo,

ich bin etwas ratlos derzeit.

Folgende Situation ist gegeben:

- Wordpress ist installiert auf einem Apache-MPM-Webserver (v2.2.9, ganz normal aus Lenny bzw. Dotdeb, Lenny=komplett aktuell)

- Die Maschine läuft wochenlang ohne Probleme und beantwortet pro Tag ca ~1,2 mio Requests.

Neulich ist folgendes passiert:

1. die HTTP-Latenz steigt extrem an, bis zum Timeout

2. die Last ist normal, unter oder um 1

3. die Bandbreite war zu dem Zeitpunkt ca. 8-10 Mbit/s, also auch nicht viel

4. Die Logs (syslog, shorewall, apache, mysql, php) zeigen keine Fehler an

5. Software wurde nicht verändert

PS:
Ergänzung: Starte ich an dieser Stelle den Apache neu, ist die Latenz ca. 5 Sekunden lang normal, erst dann steigt sie sofort sehr steil an. Ist vielleicht wichtig zu wissen.
/PS

Schlussfolgerung: Problem kommt irgendwie von außen. Also habe ich den Zugang zu Port 80 komplett beschränkt und nach und nach Adressbereiche wieder freigegeben. Ergebnis: gebe ich im Paketfilter Zugriffe von 119.0.0.0 frei, kommt es wieder zum o.g. Problem.

Das Kuriose ist nun, dass im Apache-Log (und auch sonst nirgendwo) kein Request von 119.0.0.0 vermerkt ist, während 119.0.0.0 freigegeben ist. Wenn ich "Zugriffe" von 119.0.0.0 wieder sperre, normalisiert sich die Latenz wieder.

/etc habe ich schon nach Vorkommnissen von "119." durchsucht -- explizit ist dieser IP-Adressbereich nirgendwo angegeben, d.h. aus Versehen ist für den Bereich auch nichts eingestellt.

Da die Konfig nachweislich nicht das Problem sein kann (denn genau die hat ja wochen- bzw. monatelang unverändert gut funktioniert), poste ich jetzt mal keine Config-Auszüge.

Ich bin wie gesagt ratlos und erwarte eigentlich auch nicht, dass jemand die Lösung aus dem Hut zaubert :)
Aber wenn jemand eine Ahnung hat, wo ich weiter nach dem Problem suchen kann, freue ich mich über einen Hinweis.

Danke :)
Khlav Kalash

Khlav Kalash
Posts: 3
Joined: 2010-06-21 17:56

Re: Hohe Latenz/Timeout bei Apache & bestimmter Adressbereich

Post by Khlav Kalash » 2010-06-21 18:50

Hi,

danke für den Hinweis. Der Angriff scheint derzeit nicht zu laufen. Wenn ich 119.0.0.0 freigebe, tut sich derzeit nichts und folglich dann auch zeigt Server-Status dann auch nichts Interessantes an :/

OMG Slow Loris... Was sich die Leute alles für kranken Sch* ausdenken. Meine Beobachtungen decken sich tatsächlich verdächtig genau mit einem Slow Loris-Angriff. Werde dann mal Gegenmaßnahmen ergreifen. Mittlerweile scheint die Website bekannt, beliebt und dadurch von Neidern gehasst genug zu sein, dass ich das machen muss.

Danke für den Tipp!

Khlav Kalash

User avatar
Joe User
Project Manager
Project Manager
Posts: 11138
Joined: 2003-02-27 01:00
Location: Hamburg

Re: Hohe Latenz/Timeout bei Apache & bestimmter Adressbereich

Post by Joe User » 2010-06-21 21:09

119/8 ist Asien, aber Asien ist gross, daher wären genauere IP-Ranges hilfreicher. An Slowlaris glaube ich weniger, eher an ein fehlerhaft konfiguriertes mod_proxy bei Khlav...
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.

Khlav Kalash
Posts: 3
Joined: 2010-06-21 17:56

Re: Hohe Latenz/Timeout bei Apache & bestimmter Adressbereich

Post by Khlav Kalash » 2010-06-22 10:36

F'up: Ich habe gestern selbst mal einen Slowloris-Angriff auf eine meiner Maschinen gemacht und die gleichen Effekte wie neulich auf dem Live-Server festgestellt.

Als erste Gegenmaßnahme habe ich mod_qos installiert. Bei einem Slowloris-Test mit dem Modul gab es nur einen kurzen Aussetzer von ca. 5-10 Sekunden, danach reagierte der Apache dann wieder.

FYI, Apache 2.2.15 bringt mod_reqtimeout mit, welches gegen solche Angriffe helfen soll. Nützt mir aber nichts, denn auf meinen Maschinen soll ich aus Kostengründen in der Regel nur fertige Pakete verwenden. Apache kompilieren mag ich sowieso nicht und soweit ich weiß gibt es für Lenny auch nur Apache 2.2.9. Daher mod_qos.

Danke nochmal für den Tipp :)

PS: mod_proxy ist nicht aktiv, daher konnte es nicht daran liegen.