Page 1 of 1

Fail2Ban - Typo3 Regeln

Posted: Wed 12. Jan 2022, 21:17
by alex-kehl
Hallo, entschuldigt bitte, dass ich einen vier Jahre alten Thread wiederbelebe.

Ich habe eine Typo3 10.2 Installation auf meinem Keyhelp-Server installiert. Nun habe ich in der Datei:

/home/users/user1/logs/access.log

immer wieder Fehlversuche von irgendwelchen Leuten die sich versuchen am System anzumelden. Die Zeile im Log sieht so aus:

5.188.xx.xxx - - [12/Jan/2022:20:45:46 +0100] "POST /typo3/?loginProvider=1433416747 HTTP/1.1" 200 2994 "https://www.domain.de/typo3/index.php" "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2224.3 Safari/537.36" 849 3873

Nun habe ich in der Datei jail.local folgendes eingetragen:

Code: Select all

[apache-typo3]
enabled  = true
port     = http,https
filter   = apache-typo3
protocol = tcp
logpath  = /home/users/user1/logs/access.log
maxretry = 3
#findtime = 60
und in der apache-typo3.conf folgendes:

Code: Select all

[INCLUDES]
before = apache-common.conf

[Definition]
failregex = ^<HOST> .*"POST /typo3/?loginProvider= HTTP/1.1" 200
                 ^<HOST> .*"POST /typo3/index.php HTTP/1.1"
ignoreregex =

führe ich nun den Befehl

Code: Select all

fail2ban-regex /home/users/user1/logs/access.log /etc/fail2ban/filter.d/apache-typo3.conf
aus erhalte ich alle Einträge als missed wie folgt:

Lines: 18430 lines, 0 ignored, 0 matched, 18430 missed

Nun habe ich schon gelesen, dass es wohl am Datumsformat der Logdatei liegt, dass fail2ban die Informationen der Log nicht auslesen kann. Kann man fail2ban beibringen auch dieses Format lesen zu können? In Typo3 soll man wohl über die Einstellung [SYS][ddmmyy] = d.m.Y. das Datumsformat ändern können, allerdings kann ich da eingeben was ich und wie ich möchte, ändert sich nichts in der Logdatei.
Würde mich freunen wenn ich hier Hilfe bekommen würde.

Ich möchte mich jetzt schon für eventuelle Hilfe bedanken


---

MOD-EDIT: Beitrag in neues Thema gewandelt

Re: Fail2Ban - Typo3 Regeln

Posted: Thu 13. Jan 2022, 09:19
by Alexander
Hallo!

Ohne es jetzt getestet zu haben aber die Regex

Code: Select all

^<HOST> .*"POST /typo3/?loginProvider= HTTP/1.1" 200
sollte eher so aussehen, damit sie für o.g. Zeile greift:

Code: Select all

^<HOST> .*"POST /typo3/\?loginProvider=.* HTTP/1\.1" 200

Re: Fail2Ban - Typo3 Regeln

Posted: Thu 13. Jan 2022, 14:28
by alex-kehl
Hallo Alexander,

vielen Dank für Deine Hilfe. Am Filter scheint es offensichtlich nicht zu liegen. Ich habe im fail2ban.log folgenden Eintrag gefunden:


2
2022-01-11 16:53:30,615 fail2ban.filter [551651]: WARNING Found a match for '37.201.x.xxx - - [11/Jan/2022:16:53:30 +0100] "POST /typo3/index.php?loginProvider=1433416747 HTTP/2.0" 303 - "https://www.domain.de/typo3/index.php?route=%2Flogin" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36 Edg/97.0.1072.55" 668 697' but no valid date/time found for '37.201.x.xxx - - [11/Jan/2022:16:53:30 +0100] "POST /typo3/index.php?loginProvider=1433416747 HTTP/2.0" 303 - "https://www.domain.de/typo3/index.php?route=%2Flogin" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36 Edg/97.0.1072.55" 668 697'. Please try setting a custom date pattern (see man page jail.conf(5)). If format is complex, please file a detailed issue on https://github.com/fail2ban/fail2ban/issues in order to get support for this format.

So wie ich es verstehe findet fail2ban nun tatsächlich die Fehlanmeldung, kann aber aufgrund des Datumformats die IP nicht sperren. Diesbezüglich war auch eben ursprünglich die Frage nach dem erweitern des Datumformats für fail2ban. Gibt es denn die Möglichkeit fail2ban ein weiteres Datumsformat wie Typo3 es wohl vorgibt [11/Jan/2022:16:53:30 +0100] beizubringen? Vielleicht hast du noch eine Idee dazu?

Re: Fail2Ban - Typo3 Regeln

Posted: Thu 13. Jan 2022, 15:01
by tab-kh

Re: Fail2Ban - Typo3 Regeln

Posted: Thu 13. Jan 2022, 16:56
by ShortSnow
Hallo,

ich hab da vor einer Weile auch mit experimentiert:

Code: Select all

[INCLUDES]
before = apache-common.conf

[Definition]
failregex = ^<HOST> .*"POST .*loginProvider.* 200.*
ignoreregex =

datepattern = ^[^\[]*\[({DATE})
              {^LN-BEG}
Mein failregex ist etwas auf Sparflamme... Hat aber funktioniert. Nur ist das blöde halt, das es diesen Eintrag immer gibt. Auch bei erfolgreichem Login. Ich hatte im Endeffekt keinen Nutzen davon. Kein Bot hat sich innerhalb von 60 Sekunden 3x angemeldet. Der Abstand war bis zu 1h. In dieser Zeit hatte ich Redakteure die sich häufiger Anmelden und nur durch erfolgreiche Logins geblockt wurden.

Meiner Meinung nach wird erst was bringen wenn es eine Möglichkeit gibt einen Logeintrag mit Error zu erzeugen. Da habe ich damals nichts gefunden. Wäre super, wenn's da was geben würde.

Ich lasse mir von allen Systemen die LoginWarnung zusenden. Und da kommt sehr selten was. Meistens Redakteure die kurz darauf nach Ihrem Passwort fragen. Einmal war es lediglich eine IP die Terror gemacht hat und die habe per Firewall manuell gesperrt.

Gruß Arne

Re: Fail2Ban - Typo3 Regeln

Posted: Fri 14. Jan 2022, 14:32
by alex-kehl
Hallo Arne,

auch Dir vielen Dank für die Hilfe. Bis auf eine optische Kleinigekeit hier die komplette Lösung, welche zumindest bei mir funktioniert:
[INCLUDES]
before = apache-common.conf

[Definition]
failregex = ^<HOST> .*"POST /typo3.*?loginProvider=.* HTTP/2.0" 200.*
^<HOST> .*"POST /typo3.*?loginProvider=.* HTTP/1.1" 200.*

ignoreregex =

datepattern = \[(%%d/%%b/%%Y:%%H:%%M:%%S %%z)\]
nun noch zu meinem "Schönheitsfehler" welchen ich noch gerne behoben hätte. Gebe ich

^<HOST> .*"POST /typo3.*?loginProvider=.* HTTP/2.0" 200.* funktioniert der Filter. Setze ich aber "/" für den Pfad so wie ich es gerne hätte:

^<HOST> .*"POST /typo3/?loginProvider=.* HTTP/2.0" 200.*

funktioniert der Filter leider nicht :(

Vielleicht gibts da noch eine Schönheits OP ;) für meinen Pfad.

Nochmals Vielen Dank allen

Re: Fail2Ban - Typo3 Regeln  [GELÖST]

Posted: Fri 14. Jan 2022, 15:12
by Alexander
Das Fragezeichen "?" ist ein Sonderzeichen im Kontext regulärer Ausdrücke und muss escaped werden, wenn man tatsächlich auf den Buchstaben "?" prüfen möchte.
Zum Escapen setzt du einfach dem Fragezeichen einen Backslash voran -> \?

Re: Fail2Ban - Typo3 Regeln

Posted: Fri 14. Jan 2022, 15:48
by alex-kehl
Nur der Vollständigkeit halber :D

Meine endgültige Lösung:

[INCLUDES]
before = apache-common.conf

[Definition]
failregex = ^<HOST> .*"POST /typo3/\?loginProvider=.* HTTP/2.0" 200.*
^<HOST> .*"POST /typo3/\?loginProvider=.* HTTP/1.1" 200.*

ignoreregex =

datepattern = \[(%%d/%%b/%%Y:%%H:%%M:%%S %%z)\]

Thema für mich erledigt, Vielen Dank für die Hilfe,
Nur gemeinsam ist man stark ;)