Genug Sicherheit kann es für das eigene CMS nie geben. Typo3 kann mit fail2ban geben Brute-Force Attacken geschützt werden. So funktionierts:
Als root / Administrator auf dem Server fail2ban installieren.
[apache-typo3]
enabled = true
port = http,https
filter = apache-typo3
logpath = /var/log/apache*/*access.log
maxretry = 7
findtime = 3600
bantime = 7200
(das ist die Datei apache-typo3.conf im Ordner filter.d)
Die Datei muss mindestens folgenden Inhalt haben:
[Definition]
failregex = ^<HOST> -.*GET.*/login-alert-error\.gif
^<HOST> -.*POST.*/typo3/index\.php
ignoreregex =
Ladet Euch die fertige Datei der Einfachheit halber hier runter.
Fail2ban prüft die angegebene Protokolldatei (hier apaches access.log) in kurzen Zeitabständen nach Veränderungen. Wenn eine Anmeldung stattfindet, dann wird immer kurzfristig die Seite /typo3/index.php aufgerufen und von dort aus die Login-Parameter gepostet. Wenn die Anmeldung fehlschlägt, wird erstens das Bild login-alert-error.gif angezeigt und 2tens erneut versucht die Parameter zu posten.
In der Konfiguration habe ich festgelegt, dass 7 mal innerhalb einer Stunde (3600sec) diese Ereignisse auftreten dürfen. Danach wird die entsprechende IP-Adresse für 2 Stunden (7200sec) verbannt.
Die Parameter maxretry, findtime, bantime sollte jeder nach Lust und Laune einstellen, allerdings:
Werte von maxretry < 4 werden Ärger machen, denn da beim ersten Fehlversuch sowohl das Bild als auch das Script geladen werden, sind die ersten 2 Ereignisse von fail2ban schon mit einem Fehlversuch aufgebraucht !
Den dritten braucht man zu 2 ten Anmeldung.
Daher mein Tip: maxretry >= 5 einstellen !
Lest bitte auch meine allgemeinen Hinweise zur Sicherheit. Ich empfehle nämlich aus heutiger Sicht dringend die Sicherheit mit mod_security zu erhöhen, da es keine Verzögerung der Reaktion gibt wie bei fail2ban. Eine mögliche Regel ist
SecRule REQUEST_URI "typo3/index.php" "phase:1,id:'980008',t:lowercase, \
log,pass,pause:500,setvar:ip.count_tpl=+1,expirevar:ip.count_tpl=3600"
SecRule ip:count_tpl "@gt 6" setenv:MODSEC_ID=980008,setenv:MODSEC_TO=36000, \
log,drop,exec:/usr/sbin/snortsam.sh
Der Aufruf des Shell-Scripts snortsam.sh ist nicht unbedingt erforderlich, sperrt aber in diesem Fall den Versucher für 10 Stunden aus. Das macht bei Brute-Force Attacken schon Sinn.
Auch für die erfolgreiche Anmeldung wird 1 Versuch "verbraucht". Wenn also mehrere Benutzer gleichzeitig das Typo3 nutzen, sollte die Anzahl maxretry (fail2ban) so hoch gesetzt werden, dass sich jeder mindestens 1 mal anmelden kann + ein paar Fehlversuche.
Brute Force Risiken lauern leider auch beim xtc-modified. Meine Vorschläge gegen Angriffe könnt Ihr hier lesen
Typo3 Brute-Force
Typo3 Security
fail2ban avoid prevent protect brute force on typo3
xtc-modified brute force
xt-commerce security