Installation von ModSecurity2 auf Debian Etch

Version 1.0
Author: Falko Timme


Diese Anleitung veranschaulicht, wie man ModSecurity (Version 2) für die Verwendung mit Apache2 auf einem Debian Etch System installiert und konfiguriert. ModSecurity ist ein Apache Modul, das Intrusion Detection und Prävention für Web Programme bietet. Es zielt darauf ab, Web Programme von bekannten und unbekannten Attacken abzuschirmen, wie zum Beispiel SQL Injection Attacks, Cross-Site Scripting, Path Traversal Attacks, etc.

Ich möchte an dieser Stelle darauf hinweisen, dass dies nicht der einzige Weg ist, ein solches System einzurichten. Es gibt viele Varianten, dieses Ziel zu erreichen - dies ist der Weg, den ich gewählt habe. Ich übernehme keine Garantie, dass dies auch bei Dir funktioniert!

1 Vorbemerkung

Ich gehe davon aus, dass Apache2 auf Deinem Debian Etch System bereits installiert und voll funktionstüchtig ist.

2 Installation

In Debian Sarge war ModSecurity als .deb Paket in den offiziellen Paketdatenbanken verfügbar, in Debian Etch wurde es leider aus Lizenzgründen entfernt. Erfreulicherweise stellt der Originalbetreuer Pakete für Debian Etch in seiner eigenen Paketdatenbank bereit. Um diese zu installieren, müssen wir seine Paketdatenbank unserer /etc/apt/sources.list hinzufügen:

vi /etc/apt/sources.list


[...]
deb http://etc.inittab.org/~agi/debian/libapache-mod-security2/ etch/ [...]
Danach aktualisieren wir unsere Paketdatenbank wie folgt:

apt-get update

Nun können wir ModSecurity2 mit diesem einfachen Befehl installieren:

apt-get install libapache2-mod-security2

Das war's. Das ModSecurity2 Modul wird standardmäßig freigeschaltet und Apache2 wird automatisch neu gestartet.

3 Konfiguration

Jetzt werden wir ModSecurity2 konfigurieren. Am Einfachsten ist es, wenn wir das ModSecurity2 Quell-Paket von http://www.modsecurity.org/download/index.html runter laden (z.B. http://www.modsecurity.org/download/modsecurity-apache_2.1.1.tar.gz) und es entpacken. Es entählt eine Datei modsecurity.conf-minimal mit einer Basiskonfiguration für ModSecurity2, die ich hier benutzen werde (aber ich habe die Zeilen SecDebugLog und SecAuditLog angepasst, sodass ModSecurity2 in das /var/log/apache2 Verzeichnis loggt, Debians Standard Apache2 Log-Verzeichnis).

Wir öffnen Apaches Haupt-Konfigurationsdatei /etc/apache2/apache2.conf und fügen folgende Konfiguration ein, direkt vor dem Ende, wo die virtuellen Hosts eingefügt werden:

vi /etc/apache2/apache2.conf


[...]
<IfModule mod_security2.c> # Basic configuration options SecRuleEngine On SecRequestBodyAccess On SecResponseBodyAccess Off # Handling of file uploads # TODO Choose a folder private to Apache. # SecUploadDir /opt/apache-frontend/tmp/ SecUploadKeepFiles Off # Debug log SecDebugLog /var/log/apache2/modsec_debug.log SecDebugLogLevel 0 # Serial audit log SecAuditEngine RelevantOnly SecAuditLogRelevantStatus ^5 SecAuditLogParts ABIFHZ SecAuditLogType Serial SecAuditLog /var/log/apache2/modsec_audit.log # Maximum request body size we will # accept for buffering SecRequestBodyLimit 131072 # Store up to 128 KB in memory SecRequestBodyInMemoryLimit 131072 # Buffer response bodies of up to # 512 KB in length SecResponseBodyLimit 524288 </IfModule> # Include the virtual host configurations: Include /etc/apache2/sites-enabled/
Danach starten wir Apache neu (es sollte ohne Fehlermeldungen neu starten):

/etc/init.d/apache2 restart

Wenn Du keine Fehlermeldung erhältst, wird ModSecurity2 nun mit einer Basiskonfiguration ausgeführt. Diese Basiskonfiguration kannst Du nun ändern/erweitern, sodass sie Deinen Wünschen entspricht. Ein guter Ausgangspunkt ist die ModSecurity2 Documentation. In den ModSecurity2 Quellen gibt es noch mehr erweiterte Rulesets, die wir zuvor runter geladen haben (in der rules Paketdatenbank). Außerdem kannst Du Core Rulesets von http://www.modsecurity.org/download/index.html (z.B. http://www.modsecurity.org/download/modsecurity-core-rules_2.1-1.4.tar.gz) runter laden.

Christian Folini hat folgende Anleitung bereitgestellt: tutorial about Remo, a GUI for creating ModSecurity rulesets. Dies ist eine weitere großartige Variante, Deine eigenen ModSecurity2 Rulesets zu erstellen.

4 Links

2 Kommentar(e)

Zum Posten von Kommentaren bitte

Kommentare

Von: thomash

Hallo Falko!
Nach Aufruf von apt-get, wie von Dir beschrieben, gab's bei mir 2x die HTTP-Fehlermeldung 404 (not found).

Workaround:
libxml2 mit apt-get installieren
per dpkg die beiden Pakete libapache... und mod-security... installieren
Fehlermeldung, dass diese nicht konfiguriert werden können, ignorieren

jetzt nochmal apt-get install libapache... aufrufen; jetzt erfolgt die Konfiguration des Moduls korrekt

Etch sieht die Konfiguration -glaub ich- lieber in /etc/apache2/mods-... (Symlink nicht vergessen)


Danke für den Einstieg!
Gruß, Thomas


Von: benjaminbih

Ich habe es mal hier unter anderem user namen und anderem Board etwas anderst gemacht:

Kurzanleitung Mod_Security2 auf Debian 4.0 Etch mit Apache 2.x

(ich übernehme keinerlei Garantie das es auch so geht :D )[LIST=1]
[*][URL="http://www.modsecurity.org/"]mod_security2[/URL] downloaden und installieren
[*]cd /etc/apache2
[*]mkdir ./seucrity_rules
[*]Alle rules aus dem Heruntergeladenen mod_security2 Archiv (modsecurity_crs_xy_xy.conf) die man haben möchte in das Verzeichnis:
[code]/etc/apache2/security_rules[/code] hinein kopieren
[*]darauf achten das mod-security-load als Datei in
[code]/etc/apache2/mods-available[/code]und mod-security2.load als Verknüpfung in
[code]/etc/apache2/mods-enabled[/code]bestehen.
[*]In /etc/apache2 eine Datei namens:
mod_security2.conf
mit folgendem Inhalt anlegen:
[code][SIZE=2]
[/SIZE] [SIZE=2]Include /etc/apache2/securtiy_rules/*.conf
[/SIZE] [SIZE=2][/SIZE]
[/code]
[*][SIZE=2]In der Datei /etc/apache2/apache2.conf am Ende den Eintrag hinzufügen:
[/SIZE] [SIZE=2][code]Include /etc/apache2/mod_security2.conf[/code][/SIZE]
[*][SIZE=2]/etc/init.d/apache2 restart[/SIZE][/LIST][SIZE=2]Das wars normalerweise.
[/SIZE] [SIZE=2]Nun noch mit php info prüfen ob mod_security geladen wurde.

[/SIZE] [SIZE=2]Diese Anleitung dürfte auch zu 100% bei Ubuntu gelten. Bei Suse und anderen könnte es leicht abweichen , aber in etwa auch so machbar sein[/SIZE]