Die Apache-Firewall
Seite 5: PrĂĽfe, was sich lange bindet
PrĂĽfe, was sich lange bindet
Bei Web-Servern mit mehreren Blogs, Foren und anderen PHP-Programmen kommt es bei umfangreichen Filterregelsätzen schnell auch zu falschen Treffern, so genannten false positives. Daher ist es grundsätzlich ratsam, das Verhalten neuer Filterregeln über einen längeren Zeitraum im Produktivbetrieb zu beobachten, bevor Zugriffe auf deren Grundlage tatsächlich blockiert werden. Dazu genügt es, SecFilterDefaultAction in /etc/apache2/conf.d/mod-security.conf auf "pass,log" statt des bisher verwendeten "deny,log,status:403" zu setzen.
Standardmäßig meldet mod_security zutreffende Filterregeln im Fehler-Log von Apache. Ein
# tail -f /var/log/apache2/error.log | grep mod_security
in der Kommandozeile genügt, um dem Modul bei der Arbeit zuzusehen. Wer umfangreichere Informationen über die Vorgänge benötigt, kann folgende Zeilen in /etc/apache2/conf.d/mod-security.conf einfügen:
SecAuditEngine RelevantOnly
SecAuditLog /var/log/apache2/mod-security.log
Durch die in der angegebenen Logdatei protokollierten Informationen lassen sich leicht störende Filterregeln und die dahinter stehenden Ursachen ausfindig machen.
Performance
Der Performanceverlust durch das Filtern mit mod_security hängt natürlich sehr stark vom Regelwerk ab, konkrete Zahlen können nur eigene Tests liefern. Erfahrungsberichte im Web sprechen typischerweise von einer um rund 10 Prozent erhöhten Systemlast. In der Praxis lässt sich die Performance-Einbuße von mod_security noch weiter verringern, indem statische Anfragen, beispielsweise nach reinen HTML-Dateien, Stylesheets und Bildern mit
SecFilterEngine DynamicOnly
grundsätzlich von der Filterung ausgeschlossen werden.
Fazit
Erst wer sich die umfangreiche Dokumentation auf der Website von mod_security zu Gemüte führt, kann einen guten Überblick über dessen Funktionsvielfalt erlangen. Insbesondere sei noch auf die Möglichkeiten zur Filterung ausgehender Server-Antworten, den weitgehend konfigurierbaren Logging-Machanismus und die diversen Aktionen und Suchorte für erweiterte Filterregeln hingewiesen.
mod_security ist ein mächtiges Werkzeug, das Gelegenheitsadministratoren schnell durch den Wartungsaufwand überfordern kann. Einerseits ist es sehr einfach, eine Basiskonfiguration aufzusetzen und Zugriffe mit gewissen Schlüsselbegriffen zu sperren oder auf gewisse IPs zu beschränken. Doch andererseits kommt es leicht zu Konflikten mit bereits installierten PHP-Programmen, die es durch geeignete, umfangreiche Tests im Voraus auszuschließen gilt. Auch die Möglichkeit, aktuelle Filterregelsätze aus dem Internet zu beziehen, befreit nicht von dieser Aufgabe, möchte man keine unerwarteten Probleme beim Zugriff auf seine Server erleben.
Für hochsichere und gut getestete Server hingegen ist mod_security ein mächtiges Werkzeug, das sich ohne große Probleme auch zu einem umfangreichen Intrusion-Prevention-System ausbauen lässt. Auch hat sich das Apache-Modul bereits im Kampf gegen andauernde Angriffe bewährt, wie beispielsweise beim DDoS-Angriff Ende 2005 gegen das Portal gulli.com. Admins sollten aber nicht vergessen, dass ein eng geschnürtes Intrusion-Prevention-Korsett ebenso pflegebedürftig ist, wie die Server-Applikationen, die es schützen soll.
Literatur
[1] http://www.modsecurity.org/, Homepage von mod_security
[2] Homepage des c't-Debian-Server
[3] http://www.gotroot.com/mod_security+rules, aktuelle Filterregelsätze für mod_security (cr)