phpbar.de logo

Mailinglisten-Archive

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

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

Yannik Hampe yannik at cipher-code.de
Di Mär 30 23:44:32 CEST 2010



Mario Haßler wrote:

> 
> Sicher? Wie gesagt, ich vermute, dass der Angreifer lediglich die
> Header abfragt. Dies kann ihm der Apache-Server beantworten, bevor
> auch nur ein PHP-Skript aufgerufen wird, und beispielsweise den
> Return-Code 404 liefern, wenn es die angeforderte Seite nicht gibt
> (und es auch keine Server-Regel gibt, die für den Fall etwas anderes
> vorsieht).

Wenn dein Apache eine Seite nicht findet und deswegen den Code 404
rausschmeißt, dann kann er dies tun bevor er ein php-Skript ausgeführt
hat, ja, richtig. Er MUSS es sogar vorher tun, denn das php-Skript hat
er ja offensichtlich vorher nicht gefunden und wird es dementsprechend
auch nicht ausführen.

Wenn Apache aber ein Skript findet, dann kann der Apache die Anfrage
NICHT so schnell beantworten. Wenn die Seite nicht existiert, dann ist
der code 404, das ist klar, aber nur weil das Skript da ist, heißt es
noch lange nicht, dass der code 200 ist. Das php-Skript könnte noch eine
Authentifizierung verlangen (code 401: Unauthorized). Das Skript
verwaltet vielleicht mehrere Seiten, die per url-Parameter ausgewählt
werden. In diesem Fall kann erst das php-Skript 404 ausgeben. (In php-code:
<?php
header("HTTP/1.1 404 Not Found");
?>
).
Die header werden dann gesendet, wenn dein php-Skript die erste Ausgabe
erzeugt:
<?php
echo "bla";
head(...); // geht nicht, da bereits etwas ausgegeben wurde
?>
Bevor du eine Ausgabe gemacht hast, ist aber noch alles drin. (Beliebter
Fehler: Whitespacezeichen vor der ersten php-Klammer (<?php). Dann das
ist auch eine Ausgabe).

> 
> Wie kann ich denn beeinflussen, welche Zugriffe in die Log-Dateien
> (access.log, error.log) kommen und welche nicht? (Von der Seite habe
> ich das noch gar nicht betrachtet.)

Da rate ich dir mal zu der Doku von Apache. Erstmal musst du dir aber
sowieso überlegen, nach welchen Kriterien du denn entscheiden willst.
Eine Möglichkeit wäre es Apache's Fehlerprotokoll komplett zu
deaktivieren und dann für einzelne Ordner in denen deine Projekte liegen
wieder zu aktivieren.

> 
> Mmh... von einer "Teergrube" (oder engl. "tarpit") habe ich vor Jahren
> mal was gehört, aber das war im Zusammenhang mit Mail-Servern, als
> Schutz vor Massen-Mailings (Prinzip: Je mehr Mails pro Zeiteinheit
> ausgeliefert werden sollen, desto länger verzögert der Mail-Server).

Ist ja auch das selbe Prinzip. Der Ausdruck Teergrube ist auch im
englischen zu dem Thema nicht unüblich.
http://de.wikipedia.org/wiki/Teergrube_(Informationstechnik)
> 
> Nein, gemeint war: dass der eine Angreifer nach ein, zwei Adressen
> aufgibt und nicht seine ganze Liste mit 20 bis 30 Adressen auspro-
> biert (das error.log-Beispiel war nur ein kleiner Ausschnitt!).

Eher unwahrscheinlich. Vermutlich stecken da irgendwelche zusammen
gehackten einfachen Skripte dahinter, die deine Antwortgeschwindigkeit
nicht messen und sich auch nicht errechnen, ob es sich weiterhin bei dir
lohnt. Aber ein Versuch wäre sicherlich ganz interessant. Berichte doch
mal von deinen Ergebnissen.
> 
> Danke nochmals.
> 
> Viele Grüße,
> 
> Mario Haßler

Yannik

php::bar PHP Wiki   -   Listenarchive