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:
|
|
und anschließendes:
|
|
brachte mir die Software auf den Server. Doch aktivieren musste man sie auch noch:
|
|
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/
:
|
|
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):
|
|
Nun muss der Apache2 noch neu gestartet werden:
|
|
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!