Hallo zusammen....
falls es noch nicht zu euch vorgedrungen ist hier einmal eine wichtige Info vom derzeitigen Heise Newsletter:
"Tool bringt Apache-Webserver zum Stillstand"
Ein bislang unbekannter Fehler in der Verarbeitung von Byte-Range-Headern lässt sich ausnutzen, um mit einem einzigen PC einen Apache-Webserver 2.2 zum Stillstand zu bringen. Auf der Mailing-Liste Full Disclosure ist dafür das Perl-Skript "Apache Killer" erschienen, das das Problem eindrucksvoll demonstriert.
Das Tool sendet GET-Requests mit mehreren "Byte Ranges", die zu einer sehr hohen Speicherbelegung des Systems führen. Die Angabe von "Bytes Ranges" ermöglichen dem Browser, etwa bestimmte Teile eines Dokuments nur teilweise zu laden, etwa die Bytes 500 bis 1000. Auf diese Weise knüpfen etwa auch Download-Clients an abgebrochene Downloads an. Das soll den Bandbreitenverbrauch verringern. Die Angabe mehrerer Teile im Header in unsortierter Folge bringen aber den Apache offenbar aus dem Tritt.
Einen offiziellen Patch gibt es noch nicht, als Workaround funktionieren jedoch Rewrite-Regeln, die nur noch einen einzigen Range-Requests in GET und HEAD-Headern erlauben. Für die meisten Anwendungen sollte das kein Problem sein. Um die Regeln zu aktivieren, müssen Administratoren das Modul mod_rewrite im Apache-Webserver laden.
Alternativ soll es auch helfen, über das Modul mod_header und die Konfiguration
RequestHeader unset Range im Header enthaltene Range-Requests komplett zu löschen. Vermutlich dürfte dies aber zu größeren Problem führen, als die Anzahl der Ranges zu beschränken. Admins sollten mit dem Tool die Wirksamkeit ihrer Maßnahmen prüfen, bevor es andere tun.
Wichtig...der "erste" Workaround greift wohl nur bedingt. Mit einigen Anpassungen des Exploid Scripts kann der Apache weiter zum kochen gebracht werden.
Deswegen hier ein Update der ReWrite Rules:
Update: Anscheinend sind die verlinkten Rewrite-Regeln ungenügend. Sie verhindern zwar die geschilderten Angriffe, diese lassen sich jedoch auch über RequestRange-Header durchführen. Ein erweiterter Regelsatz könnte etwas wie diese Regeln enthalten:
RewriteEngine On
RewriteCond %{REQUEST_METHOD} ^(HEAD|GET) [NC]
RewriteCond %{HTTP:Range} ([0-9]*-[0-9]*)(\s*,\s*[0-9]*-[0-9]*)+ [OR]
RewriteCond %{HTTP:Request-Range} ([0-9]*-[0-9]*)(\s*,\s*[0-9]*-[0-9]*)+
RewriteRule .* - [F]
Einfach in die VHosts mit rein und den Apache restarteten...dann sollte es "save" sein.
Testen kann man dies wohl wie folgt:
Hierbei sollte ein 403 Forbidden zurück geliefert werden.