Sicherheit · 2 min read · Jan 11, 2026

Sichern Sie Ihren Apache mit mod_security

Sichern Sie Ihren Apache mit mod_security

Version 1.0
Autor: Falko Timme

Dieser Artikel zeigt, wie man mod_security installiert und konfiguriert. mod_security ist ein Apache-Modul (für Apache 1 und 2), das Intrusion Detection und Prevention für Webanwendungen bietet. Es zielt darauf ab, Webanwendungen vor bekannten und unbekannten Angriffen zu schützen, wie z.B. SQL-Injection-Angriffen, Cross-Site-Scripting, Path-Traversal-Angriffen usw.

Im ersten Kapitel werde ich zeigen, wie man mod_security auf Debian Sarge, Ubuntu 6.06 LTS (Dapper Drake) und Fedora Core 5 installiert, und im zweiten Kapitel werde ich beschreiben, wie man Apache für mod_security konfiguriert, was unabhängig von der verwendeten Distribution ist.

Ich möchte zuerst sagen, dass dies nicht der einzige Weg ist, ein solches System einzurichten. Es gibt viele Möglichkeiten, dieses Ziel zu erreichen, aber dies ist der Weg, den ich wähle. Ich gebe keine Garantie, dass dies für Sie funktioniert!

1 Installation

1.1 Debian Sarge

mod_security ist als Debian-Paket in den Standard-Debian-Repositories verfügbar, daher ist die Installation so einfach wie folgt:

apt-get install libapache2-mod-security
a2enmod mod-security
/etc/init.d/apache2 force-reload

1.2 Ubuntu 6.06 LTS (Dapper Drake)

Die Installation ist genau die gleiche wie auf Debian Sarge:

apt-get install libapache2-mod-security
a2enmod mod-security
/etc/init.d/apache2 force-reload

1.3 Fedora Core 5

Auf Fedora können Sie mod_security wie folgt installieren und aktivieren:

yum install mod_security
/etc/init.d/httpd restart

Sie sollten jetzt die Datei /etc/httpd/conf.d/mod_security.conf finden, die bereits eine grundlegende mod_security-Konfiguration enthält:

vi /etc/httpd/conf.d/mod_security.conf

| # Beispielkonfigurationsdatei für das mod_security Apache-Modul LoadModule security_module modules/mod_security.so # Aktivieren oder Deaktivieren der Filter-Engine SecFilterEngine On # Die Audit-Engine arbeitet unabhängig und # kann pro Server oder # pro Verzeichnis aktiviert oder deaktiviert werden SecAuditEngine RelevantOnly # Stellen Sie sicher, dass die URL-Codierung gültig ist SecFilterCheckURLEncoding On # Unicode-Codierungsprüfung SecFilterCheckUnicodeEncoding On # Nur Bytes aus diesem Bereich zulassen SecFilterForceByteRange 1 255 # Cookie-Formatprüfungen. SecFilterCheckCookieFormat On # Der Name der Audit-Protokolldatei SecAuditLog logs/audit_log # Soll mod_security POST-Nutzlasten überprüfen SecFilterScanPOST On # Standardaktion festlegen SecFilterDefaultAction "deny,log,status:406" # Einfaches Beispiel-Filter # SecFilter 111 # Verhindern von Path-Traversal (..) Angriffen # SecFilter "\.\./" # Schwächere XSS-Schutzmaßnahmen, aber erlaubt gängige HTML-Tags # SecFilter "<( |\n)*script" # Verhindern von XSS-Angriffen (HTML/Javascript-Injektion) # SecFilter "<(.|\n)+>" # Sehr grobe Filter zur Verhinderung von SQL-Injection-Angriffen # SecFilter "delete[[:space:]]+from" # SecFilter "insert[[:space:]]+into" # SecFilter "select.+from" # Erfordert HTTP_USER_AGENT und HTTP_HOST-Header SecFilterSelective "HTTP_USER_AGENT|HTTP_HOST" "^$" # Akzeptieren Sie nur Anfrage-Codierungen, die wir verarbeiten können # wir schließen GET-Anfragen davon aus, da einige (automatisierte) # Clients "text/html" als Content-Type bereitstellen SecFilterSelective REQUEST_METHOD "!^GET$" chain SecFilterSelective HTTP_Content-Type "!(^$|^application/x-www-form-urlencoded$|^multipart/form-data)" # Erfordert, dass Content-Length mit # jeder POST-Anfrage bereitgestellt wird SecFilterSelective REQUEST_METHOD "^POST$" chain SecFilterSelective HTTP_Content-Length "^$" # Akzeptieren Sie keine Übertragungs-Codierungen, von denen wir wissen, dass wir sie nicht verarbeiten # (und Sie benötigen es sowieso nicht) SecFilterSelective HTTP_Transfer-Encoding "!^$" # Einige gängige anwendungsbezogene Regeln von # http://modsecrules.monkeydev.org/rules.php?safety=safe #Nuke Bookmarks XSS SecFilterSelective THE_REQUEST "/modules\.php\?name=Bookmarks\&file=(del_cat\&catname|del_mark\&markname|edit_cat\&catname|edit_cat\&catcomment|marks\&catname|uploadbookmarks\&category)=(<[[:space:]]*script|(http|https|ftp)\:/)" #Nuke Bookmarks Marks.php SQL Injection Vulnerability SecFilterSelective THE_REQUEST "modules\.php\?name=Bookmarks\&file=marks\&catname=.*\&category=.*/\*\*/(union|select|delete|insert)" #PHPNuke allgemeiner XSS-Versuch #/modules.php?name=News&file=article&sid=1&optionbox= SecFilterSelective THE_REQUEST "/modules\.php\?*name=<[[:space:]]*script" # PHPNuke SQL-Injection-Versuch SecFilterSelective THE_REQUEST "/modules\.php\?*name=Search*instory=" #phpnuke sql insertion SecFilterSelective THE_REQUEST "/modules\.php*name=Forums.*file=viewtopic*/forum=.*'/'" # WEB-PHP phpbb quick-reply.php willkürlicher Befehl Versuch SecFilterSelective THE_REQUEST "/quick-reply\.php" chain SecFilter "phpbb_root_path=" #Thema Kalender Mod für phpBB Cross-Site-Scripting-Angriff SecFilterSelective THE_REQUEST "/calendar_scheduler\.php\?start=(<[[:space:]]*script|(http|https|ftp)\:/)" # phpMyAdmin: Sicher #phpMyAdmin Export.PHP Dateidisclosure-Sicherheitsanfälligkeit SecFilterSelective SCRIPT_FILENAME "export\.php$" chain SecFilterSelective ARG_what "\.\." #phpMyAdmin path vln SecFilterSelective REQUEST_URI "/css/phpmyadmin\.css\.php\?GLOBALS\[cfg\]\[ThemePath\]=/etc" |

Share: X/Twitter LinkedIn

Erhalte neue Beiträge in deinem Posteingang.

Kein Spam. Jederzeit abmelden.