Mailinglisten-Archive |
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