Heute “durfte” dieser Webserver eine Spam-Attacke ungeheuren Ausmaßes aushalten (drum auch der kurze Ausfall heute Mittag(was zu viel ist, ist zu viel…), weshalb ich nun endlich mod_security  auf dem Server eingerichtet habe. Wie das geht, zeige ich nun im folgenden.

Was ist überhaupt mod_security?

ModSecurity is an embeddable web application firewall. It provides protection from a range of attacks against web applications and allows for HTTP traffic monitoring and real-time analysis with no changes to existing infrastructure.

Ganz einfach eine z.B. in einen Webserver integrierte Firewall, welche keine Packete analysiert, sondern direkt die Befehle fürs HTTP-Protokoll. So erkennt diese z.b. SQL-Injections, phpBB-Exploit-Attacken und vieles mehr.

Wie man über ein schnelles apt-cache search libapache2-mod-security herausfinden kann, gibt es bereits ein packet für apache2 und mod-security auf Debian. Leider ist dieses älter als 1.9 (momentan ist es um genau zu sein 1.8.7-1), weshalb man den “exclude”-Befehl, mit welchem man bestimmte Seitenaufrufe (welche irrtümlich von mod_security als Angriff eingeschätzt werden) wieder ausschließen kann, leider nicht verwenden kann.

“Geht gar nicht” dachte ich mir und wollte schon fast selbst kompilieren (wäre auch ok gewesen, immerhin gibts ja schon mod_security2.0.4….), da stolperte ich auf der Hersteller-Seite auf der Downloadseite über einen Link zu debian-unofficial.org (Link nicht mehr verfügbar), welche das Packet in einer Version > 1.9 dort anbieten.

Ein kurzes einfügen in die /etc/apt/sources.list von:

1
deb http://ftp.debian-unofficial.org/debian sarge main contrib non-free restricted

und anschließendes:

1
2
apt-get update
apt-get install libapache2-mod-security

brachte mir die Software auf den Server. Doch aktivieren musste man sie auch noch:

1
a2enmod mod-security

Damit war’s im Apachen aktiviert, doch noch nix konfiguriert. BITTE DEN APACHE2 NOCH NICHT NEUSTARTEN! Folgender Inhalt muss in eine Datei (Name beliebig) in /etc/apache2/conf.d/:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
SecFilterEngine On
SecAuditLog /var/log/apache2/audit.log
SecFilterDefaultAction deny,log,status:500.
SecFilterScanPOST On
SecFilterCheckURLEncoding On
SecFilterCheckCookieFormat On
SecFilterCheckUnicodeEncoding Off
SecFilterNormalizeCookies On
SecFilterCookieFormat 1
SecServerResponseToken Off
SecFilterForceByteRange 1 255
SecServerSignature "Server secured with the Help of Uli's Blog - https://wolf-u.li"
SecUploadDir /tmp
SecUploadKeepFiles Off
SecAuditEngine RelevantOnly
SecFilterDebugLevel 0
Include /etc/apache2/mod-security/exclude.conf
Include /etc/apache2/mod-security/rules.conf
Include /etc/apache2/mod-security/rootkits.conf
Include /etc/apache2/mod-security/apache2-rules.conf
Include /etc/apache2/mod-security/useragents.conf
Include /etc/apache2/mod-security/proxy.conf
Include /etc/apache2/mod-security/blacklist.conf
Include /etc/apache2/mod-security/blacklist2.conf
Include /etc/apache2/mod-security/recons.conf
Include /etc/apache2/mod-security/badips.conf

Damit obige Config funktioniert muss noch etwas heruntergeladen werden. Nämlich die Rules, welche festlegen, was geblockt werden soll. Entweder man verwendet hier ganz einfache Rules oder professionelle(zweiteres beschreibe ich im folgenden):

1
2
3
4
cd /etc/apache2/
wget http://www.gotroot.com/downloads/ftp/mod_security/apache2/apache2-gotrootrules-latest.tar.gz
tar xfvz apache2-gotrootrules-latest.tar.gz
mv apache2 mod-security

Nun muss der Apache2 noch neu gestartet werden:

1
/etc/init.d/apache2 restart

Damit ist der WebServer mit mod_security ausgestattet. Aber man sollte auf jeden Fall die logs monitoren, ob nicht vielleicht Seiten geblockt werden, die eigentlich ok sind. Die kann man über das Logfile /var/log/apache2/audit.log anschauen ;)

Übrigens kann man die Regeln (welche immer mal wieder aktualisiert werden) auch automatisch herunterladen lassen, wozu es hier  ein Script gibt.

Bei Fehlern,Fragen, Anmerkungen oder Anregungen einfach einen Kommentar hinterlassen ;) Greetz

PS: Übrigens sehr interessant ist das Handbuch zur Software!