phpbar.de logo

Mailinglisten-Archive

[php] "Server-Attacken" lähmen?

[php] "Server-Attacken" lähmen?

Thomas Koudela thomas at koudela.net
Mo Mär 29 19:25:24 CEST 2010


Am Montag, den 29.03.2010, 16:04 +0200 schrieb "Mario Haßler":
> Hallo allerseits!
> 
> Ich werte regelmäßig error.logs aus und ärgere mich dann über sowas:
> 
> [Thu Mar 25 21:00:40 2010] [error] s15281379.rootmaster.info  File does not exist: /www/shop/admin/file_manager.php
> [Thu Mar 25 21:00:40 2010] [error] s15281379.rootmaster.info  File does not exist: /www/onlineshop/admin/file_manager.php
> [Thu Mar 25 21:00:40 2010] [error] s15281379.rootmaster.info  File does not exist: /www/store/admin/file_manager.php
> [Thu Mar 25 21:00:40 2010] [error] s15281379.rootmaster.info  File does not exist: /www/cart/admin/file_manager.php
> [Thu Mar 25 21:00:40 2010] [error] s15281379.rootmaster.info  File does not exist: /www/boutique/admin/file_manager.php
> [Thu Mar 25 21:00:40 2010] [error] s15281379.rootmaster.info  File does not exist: /www/oscommerce/admin/file_manager.php
> [Thu Mar 25 21:00:40 2010] [error] s15281379.rootmaster.info  File does not exist: /www/osc/admin/file_manager.php
> [Thu Mar 25 21:00:40 2010] [error] s15281379.rootmaster.info  File does not exist: /www/catalog1/admin/file_manager.php
> [... usw. ...]

Kenn' ich. Allerdings habe ich selten wie in diesem Fall acht in einer
Sekunde.

> Hier versucht also ein "Angreifer" durch systematisches Ausprobieren
> herauszufinden, ob ich ein bestimmtes Software-Paket installiert habe,
> vermutlich um bei Erfolg dessen Sicherheitslücke auszunutzen. Da die
> Software nicht installiert ist, passiert zwar nichts weiter als der
> Eintrag von lauter 404-Fehlermeldungen in die error.log, aber ich würde
> gerne dem "Angreifer" eins auswischen.

Rache als Motiv? ;-)

> Meine Überlegung dazu: Der Server ist so konfiguriert, dass im Fehler-
> fall 404 ein bestimmtes PHP-Skript aufgerufen wird. Dies könnte ich
> mit Mustern füttern (hier z. B. "admin/file_manager.php") und bei
> einem Treffer die Antwort an den Anfrage-Sender verzögern, sodass es
> diesem zu lange dauert und er hoffentlich von weiteren Anfragen ab-
> sieht. Meine Fragen hierzu:
> 
>  1. Ist das sinnvoll? Ist es wahrscheinlich, dass weitere Anfragen
>     ausbleiben, wenn die erste verzögert wird?

Nö. Du wirst wahrscheinlich in der Summe die gleiche Anzahl an Angriffen
haben, aber besser verteilt.

>  2. Geht das überhaupt? Der Angreifer fragt evtl. nur die Header ab
>     und nicht den Seiteninhalt. (Er braucht ja nur den Return-Code
>     200 oder 404 wissen.) Liefert der Apache-Server diese Header
>     bzw. diesen Return-Code bereits aus, bevor mein Skript überhaupt
>     dran kommt und die Antwort verzögern kann?

Die Header werden erst gesendet, sobald die erste Ausgabe ausgeführt
wird. Insofern würde die Antwort tatsächlich verzögert.

>  3. Könnte sich ein solches Verzögern nachteilig auf meine Seiten
>     oder den Server, auf denen meine Seiten liegen, auswirken?
>     (Serverlast, offene Prozesse, ...)

Eine PHP-Datei - selbst wenn sie außer der Ausgabe nur eine
sleep-Anweisung beherbergt - benötigt natürlich mehr Rechenaufwand als
das HTML-Äquivalent. Und als offener Prozess zählt sie während dieser
Zeit wohl auch. Ein Nachtunen und einen leichten Performanceeinbruch
musst Du bei einem Server, welcher am Limit fährt, wohl in Kauf nehmen.

>  4. Welche Alternativen gibt es? Kann man die Anzahl der Zugriffe
>     pro Zeiteinheit begrenzen? Vielleicht sogar dynamisch, d. h.
>     je mehr gefragt wird, desto langsamer reagieren?

Da müsst ich jetzt selber googlen.

>  5. Sollte man das überhaupt in Erwägung ziehen oder lieber die
>     Finger davon lassen?

Diese Anfragen treten normalerweise nicht in einem Umfang auf, dass sie
einen nennenswerten Anteil der Serverlast ausmachen. Ich würde diese
"Fehler" aber nicht mitloggen lassen. Erstens übersieht man so die
wichtigen Fehlermeldungen und zweitens schreibt Dein System dadurch
dauernd in eine Datei, was unnötig Ressourcen verbraucht.

> Wenn viele Seiten sich in der beschriebenen Weise "zur Wehr" setzen
> würden, dann könnte man diese Angreifer doch gut lahm legen, oder?

Nö. Während Dein Server mit der Antwort wartet, hat der Angreifer auch
nichts zu tun... Und kann weitere Anfragen starten.

> Mir ist bewusst, dass mein Anteil klein ist, aber mir geht es ja in
> erster Linie um den "Schutz" meiner Seiten.

Der einzige Schlüssel zum Schutz gegen solche Attacken ist IMO fremden
PHP-Code immer gegenzulesen. Gerade in beliebter OpenSource-Software
wird gerne mal ein Trojaner versteckt. (Habe selber vor Jahren mal
schlechte Erfahrung gemacht.)

> Mir ist auch klar, dass manche Fragen eher den Server berühren (hier:
> Apache), aber vielleicht kennt sich der eine oder andere ja auch damit
> aus.
> 
> Freue mich über jede Antwort.
> 
> Viele Grüße,
> 
> Mario Haßler

Hoffe es war was nützliches dabei.

Schöne Grüße,
Thomas Koudela


php::bar PHP Wiki   -   Listenarchive