O'Reilly logo

PHP-Sicherheit: PHP/MySQL-Webanwendungen sicher programmieren by Stefan Esser, Christopher Kunz

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

27712.3 mod_security
die Anwendung erweitert wird, müssen entsprechende Anpassungen
stattfinden.
Bei Anwendungsgebieten wie CMS- oder Blogsoftware, die einen
sehr breiten Wertebereich für Variablen haben – schließlich kann ein
Texteingabefeld auch bei legitimer Nutzung beliebige Werte, sogar
HTML-Code enthalten –, ist eine Whitelist nicht praktisch umsetzbar,
da sie auch beliebige Werte erlauben müsste und somit unnütz wäre.
Eine Blacklist kann hier zumindest solche als unerwünscht bekannte
Inhalte ausfiltern. Ist jedoch der Variablenbereich stets eng definiert,
etwa bei Shopsoftware, die fast ausschließlich mit numerischen Werten
arbeitet, leistet eine Whitelist praktische Dienste, um bequemen Pro-
grammierern explizite Casts auf Integer, Float etc. abzunehmen.
In Produktionsumgebungen, insbesondere auf Hosting-Servern,
werden Sie meist mit Blacklist-basierten Ansätzen arbeiten müssen, um
die bekanntesten Angriffe abzuwehren. Da im PHP-Umfeld die Mehr-
zahl aller Crackingversuche auf publizierten Exploits beruht, die etwa
alte phpBB- oder Mambo-Versionen zum Ziel haben, können Sie mit
einigen spezialisierten Regeln sehr viele Sicherheitslücken umschiffen,
die sonst zu einer Kompromittierung des Webservers führen können.
12.3 mod_security
Offiziell ist mod_security ein Modul zur »Web Intrusion Detection
and Prevention«, also der Feststellung und Verhinderung von Einbrü-
chen in Webserver. Neben einer Version für Apache ist auch eine Java-
Implementierung verfügbar, die als Servlet-Filter zwischen Browser
und Applikation geschaltet wird. Da jedoch JSP-Applikationsserver
nur sehr selten in Verbindung mit PHP benutzt werden, soll dieses
Kapitel sich auf die Apache-Version von mod_security konzentrieren.
Verschiedene Hersteller bieten sogenannte »Web Application Fire-
walls« (WAF) an, die extrem gesprochen nichts anderes als mod_secu-
rity tun – nämlich regelbasiert sämtliche in ein Netzwerk eingehenden
(und womöglich auch die ausgehenden, sofern sie als Proxy agieren)
HTTP-Requests gegen ein Regelset zu filtern, um Angriffe zu vermei-
den. Im Gegensatz zu mod_security (und auch mod_parmguard) wer-
den WAFs jedoch auf einem dem eigentlichen Webserver vorgelagerten
Server untergebracht. Damit kann bei einem Servercluster die Umkon-
figuration der produktiven Webserver unterbleiben, und die WAF
agiert als Blackbox. Das minimiert den Administrationsaufwand, ist
aber meist nicht die kosteneffektivste Lösung.
12 Webserver-Filter für Apache278
12.3.1 So funktioniert’s
Die Konfiguration des Apache-Moduls mod_security erfolgt über eine
Liste von möglichen Angriffsmustern, die mit regulären Ausdrücken
beschrieben werden. So ist mod_security ein sehr flexibles Werkzeug,
das nicht nur zur Erkennung von Angriffen, sondern auch für andere
nützliche Aufgaben eingesetzt werden kann. Eine mod_security-Regel
könnte zum Beispiel erkennen, dass im Query-String oder in POST-
Variablen die Zeichenfolge »/etc/passwd« vorkommt, und jeden
HTTP-Request mit dieser Zeichenfolge aufzeichnen und ablehnen.
Außerdem können anhand bestimmter eingehender Anfragen Aktio-
nen ausgelöst werden. So könnte eine Art Authentifizierung über einen
Header namens »X-Geheim« durchgeführt werden – mod_security
findet diesen Header in der Anfrage und führt ein Skript aus. Mit
etwas Fantasie kann der Administrator eine große Bandbreite von Auf-
gaben an mod_security delegieren, sollte aber nie dessen eigentliche
Bestimmung vergessen. Mit Spielereien, wie sie auf der Homepage des
freien Apache-Moduls vorgestellt werden, kann ein unbedarfter Web-
master schnell mehr Sicherheitslücken öffnen als stopfen.
Neben dem Regelwerk, das zur Erkennung und Bekämpfung von
webbasierten Angriffen dient, verfügt mod_security über eine recht gut
funktionierende, wenn auch etwas unflexible Rootjail-Umgebung und
URL-Rewriting-Fähigkeiten. Diese sollten jedoch auch nur im Zusam-
menhang mit Sicherheitsverstößen und nicht etwa als Ersatz für das in
dieser Hinsicht viel umfangreichere mod_rewrite verwendet werden.
12.3.2 Gefahren durch mod_security
Vor der Installation sollten Sie sich über die Gefahren im Klaren sein,
die die Benutzung von mod_security mit sich bringt.
1. Da mod_security kein umfangreiches Regelwerk mitbringt, ist der
Webserver-Admin zunächst auf sich selbst gestellt, um Regeln
aufzustellen und deren Auswirkungen zu testen. Dabei kann jede
Regel fast unübersehbare Nebeneffekte haben, die einen ausführli-
chen Test vor dem Einsatz in Produktionsumgebungen unumgäng-
lich machen. Bei größeren Systemen, zum Beispiel Hosting-Ser-
vern, kann es notwendig werden, ein dediziertes Testsystem mit
Kopien von jeder auf dem Wirksystem installierten PHP-Anwen-
dung aufzusetzen, um Regeln testen zu können. Regeln, die Explo-
its für bekannte Applikationen verhindern, ohne Probleme mit an-
deren Anwendungen hervorzurufen, werden wir später in diesem
Kapitel vorstellen.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required