ilLU[TZ]mination main menu
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:
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
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.
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.