ilLUTZmination.de back
Home
Projekte
Security
Typo3-fail2ban
Typo3-mod_security
Links
Suchen
Kontakt

Typo3-mod_security

Im Beitrag typo3-fail2ban habe ich beschrieben, wie mit fail2ban Brute-Force Attacken bei Typo3 verhindert werden koennen.

mod_security hat fuer diese Aufgabe einige Vorteile vor fail2ban:

  • Es ist moeglich nur fehlgeschlagene Anmeldungen zu erkennen, da mod_security die Antwort des Servers auswerten kann
  • die Reaktion erfolgt in Echtzeit und nicht wie bei fail2ban ggf. 1-2 Sekunden verzoegert. Lest dazu die allgemeinen Hinweise zur Sicherheit.

Ich empfehle daher aus heutiger Sicht dringend die Sicherheit mit mod_security zu erhoehen. Eine moegliche Regel ist

SecResponseBodyAccess On

### Typo3 Anmeldung
SecRule RESPONSE_BODY (?ims)(###login_error###) \
        "phase:4,id:'980008',t:lowercase,log,pass,pause:5000,setvar:ip.count_tpl=+1,\
        expirevar:ip.count_tpl=3600"
SecRule ip:count_tpl "@gt 3" setenv:MODSEC_ID=980008,setenv:MODSEC_TO=36000,\
        log,drop,exec:/usr/sbin/snortsam.sh

Funktionsweise

Mit SecResponseBodyAccess On wird die Auswertung der Antwort des Servers aktiviert.

Hinweis: Ggf. muss mod_deflate deaktivert werden, da mod_deflate die Antwort des Servers "verändert".

Wenn die Antwort des Scripts typo3/index.php LOGIN_ERROR enthaelt, wird die Antwort als Fehlversuch gezaehlt. Nach mehr als 3 Fehlversuchen wir die folgende Anfrage abgelehnt (drop) und die Firewall durch Aufruf des Scripts snortsam.sh geblockt.

Der Aufruf des Shell-Scripts snortsam.sh ist nicht unbedingt erforderlich, sperrt aber in diesem Fall den Versucher fuer 10 Stunden aus. Das macht bei Brute-Force Attacken schon Sinn.

Sperrung mit Vorwarnung

Mit den Funktionen von mod_security kann dem Anmelder sogar der Countdown seiner Versuche angezeigt werden. Dazu gibt es die Befehle append und prepend.

SecResponseBodyAccess On
SecContentInjection On

### Typo3 Anmeldung
SecRule RESPONSE_BODY (?ims)(###login_error###) \
            "phase:4,id:'980008',t:lowercase,log,logdata:'%{ip.count_tpl}'pass,\
            pause:5000,setvar:ip.count_tpl=+1,expirevar:ip.count_tpl=3600, \
            prepend:'<H2>Anmeldeversuch %{ip.count_tpl} von 3</H2>'"
SecRule ip:count_tpl "@gt 3" setenv:MODSEC_ID=980008,setenv:MODSEC_TO=36000,\
            log,drop,exec:/usr/sbin/snortsam.sh

Mit SecContentInjection On wird die Moeglichkeit aktiviert, vor oder nach der Web-Server Antwort zusaetzliche Informationen auszugeben.

Im Beispiel wir durch prepend:'<H2>Anmeldeversuch %{ip.count_tpl} von 3</H2>' angezeigt, dass die Anzahl der Anmeldeversuche beschraenkt ist. Diese Anzeige befindet sich ganz oben auf der Seite. Mit append statt prepend wuerde die Ausgabe am Ende der Seite erfolgen.