ubuntuusers.de

Apache Killer entschärfen - Rewrite

Status: Ungelöst | Ubuntu-Version: Server 8.04 (Hardy Heron)
Antworten |

ijonstichy

Anmeldungsdatum:
7. Februar 2008

Beiträge: 115

Hallo allerseits,

bestimmt hat sichs rumgesprochen: Seit gestern gibts ein Sicherheitsproblem beim Apachen:

http://www.heise.de/security/meldung/Tool-bringt-Apache-Webserver-zum-Stillstand-1329986.html

Beängstigenderweise funktioniert das sogar gut, daher hab ich nun versucht, den unter

http://www.heise.de/security/news/foren/S-klick-klack-und-hier-gabs-nur-noch-lange-Gesichter/forum-207873/msg-20685653/read/ geschilderten Workaround umzusetzen, leider bisher erfolglos. Vielleicht kann mir ja mal jemand nen Tipp geben?

Was bisher geschah:

  • Standardinstallation Apache (apt-get install apache2 blah ... ) - ist angeifbar!

daher:

  • sudo a2enmod rewrite

und in der /etc/apache2/sites-available/default ergänzt:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<Directory /xxx/xxx/www/>
 #

Options Indexes FollowSymLinks MultiViews
AllowOverride all
Order allow,deny
allow from all

<IfModule mod_rewrite.c>
 RewriteEngine On

# test - macht aus index.html -> index.php
# Rewrite regeln
   RewriteRule ^index.html$ index.php

# gegen den apache-tot
#
 RewriteCond %{REQUEST_METHOD} ^(HEAD|GET) [NC]
 RewriteCond %{HTTP:Range} ([0-9]*-[0-9]*)(\s*,\s*[0-9]*-[0-9]*)+
 RewriteRule .* - [F]
</IfModule>

</Directory>

dann noch /etc/init.d/apache2 force-reload

Ergebnis:

Umschreiben klappt nicht: wget bringt die index.html und keine index.php und mit dem Script kann man den Server immer noch ernsthaft beschädigen!.

Irgendwer ne Idee, was ich beim Einrichten von Rewrite noch vergessen hab?

Danke schon mal!

xabbuh Team-Icon

Anmeldungsdatum:
25. Mai 2006

Beiträge: 6411

Haben die Dateien index.html und index.php auch unterschiedlichen Inhalt, so dass du den Unterschied daran auch bemerkst?

Ansonsten kannst du versuchen mit RewriteLog dem Apache ein paar Informationen zu entlocken.

PomTom

Avatar von PomTom

Anmeldungsdatum:
13. November 2009

Beiträge: 158

Wohnort: Hinter den sieben Bergen, bei den sieben Zwergen

ijonstichy schrieb:

Umschreiben klappt nicht: wget bringt die index.html und keine index.php

Kein Wunder, denn

RewriteRule ^index.html$ index.php

erzeugt einen internen Rewrite, nicht aber einen Redirect auf index.php. Hierfür müsste die RewriteRule wie folgt aussehen:

RewriteRule ^/index\.html$ /index.php [R=301]

bzw. schöner

RewriteRule ^/(index)\.html$ /$1.php [R=301]

Inwiefern das von Bedeutung für die Abarbeitung der sonstigen Rewrite-Regeln ist, kann ich nicht sagen, da dies auch von der weiteren PHP-Konfiguration abhängen kann (aber nicht muss). Ich würde aber die Rewrite-Regelsätze zur Handhabung des Apache-Range-Header-Problems vor die Rewrite-Regel bezüglich der index.html / index.php stellen.

FoxMulder

Avatar von FoxMulder

Anmeldungsdatum:
23. April 2007

Beiträge: 105

Diese ReWrite Rules sollen nach einem Update wohl nicht mehr genügen. Mit einer geringen Anpassung des Perl Scripts kann man wohl dennoch den Apache zum kochen bringen.

Hier mal das Update von Heise:

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:

curl -I -H 'Range: bytes=0-0,0-1,1-2' http://<deine domain>/<einen static-content.jpg>

Hierbei sollte ein 403 Forbidden zurück geliefert werden.

Antworten |