Fail2Ban fuer Wordpress Login

For topics beyond KeyHelp. / Für Themen jenseits von KeyHelp.
Post Reply
User avatar
Fezzi
Posts: 253
Joined: Wed 12. Dec 2018, 04:04

Fail2Ban fuer Wordpress Login

Post by Fezzi »

Hallo Zusammen...

ok, erst mal, ja ich weis es gibt viele Moeglichkeiten das abzufangen aber es interessiert mich ob man das nicht doch auch mit Fail2Ban abdecken kann.

Ich habe nun so einige Definitionen durchgespielt aber keine erkennt die/den Uebeltaeter zuverlaessig...

Folgendes Muster tritt bei einem Kunden immer wieder auf und ich wuerde gerne die entsprechende IP von Fail2Ban zuverlaessig erkennen lassen und dann ins Jail verfrachten sehen...

Code: Select all

 
 
2024-08-19 07:08:30 	188.166.191.228 		200 	POST //wp-login.php HTTP/1.1
2024-08-19 07:08:29 	188.166.191.228 		200 	POST //wp-login.php HTTP/1.1
2024-08-19 07:08:27 	188.166.191.228 		200 	POST //wp-login.php HTTP/1.1
2024-08-19 07:08:24 	188.166.191.228 		200 	POST //wp-login.php HTTP/1.1
2024-08-19 07:08:23 	188.166.191.228 		200 	POST //wp-login.php HTTP/1.1
2024-08-19 07:08:22 	188.166.191.228 		200 	POST //wp-login.php HTTP/1.1
2024-08-19 07:08:21 	188.166.191.228 		200 	POST //wp-login.php HTTP/1.1 
usw usw usw
Die wordpress.conf die ich erstellt habe sieht nun so aus:

Code: Select all

[Definition]
failregex = ^<HOST> -.*"(POST|GET).*(/wp-login.php|/xmlrpc.php).*"(200|401|403|404).*
ignoreregex =
und das jail so:

Code: Select all

[wordpress]
enabled = true
port = http,https
filter = wordpress
logpath = /home/users/*/logs/*/access.log
backend  = auto
maxretry = 7
findtime = 60m
bantime = 1w
Jedoch greift das nur einmal bei Neustart von Fail2Ban und danach wird nichts mehr erkannt...

Bis jetzt habe ich damit noch keine guten login Versuche gebannt...

Was mache ich hier falsch, bzw. wo liegt mein Denkfehler?

Danke schon mal in Voraus fuer Eure Hilfe und evtl. Hinweise...
Gruss

Fezzi

Everyone can do something, no one can do everything.
User avatar
Alexander
Keyweb AG
Posts: 4448
Joined: Wed 20. Jan 2016, 02:23

Re: Fail2Ban fuer Wordpress Login

Post by Alexander »

Vielleicht stört er sich in der Regex am fehlenden $ am Ende.
Mit freundlichen Grüßen / Best regards
Alexander Mahr

**************************************************************
Keyweb AG - Die Hosting Marke
Neuwerkstr. 45/46, 99084 Erfurt / Germany
http://www.keyweb.de - http://www.keyhelp.de
**************************************************************
User avatar
Fezzi
Posts: 253
Joined: Wed 12. Dec 2018, 04:04

Re: Fail2Ban fuer Wordpress Login

Post by Fezzi »

Alexander wrote: Mon 19. Aug 2024, 09:33 Vielleicht stört er sich in der Regex am fehlenden $ am Ende.
Hmmm... vielleicht... danke Alex.. manchmal sieht man den Wald vor lauter Baeumen nicht..
ich werde berichten... im Moment ist es sehr ruhig und die Login Flut ist vorbei... aber die kommen wieder...
Gruss

Fezzi

Everyone can do something, no one can do everything.
User avatar
Fezzi
Posts: 253
Joined: Wed 12. Dec 2018, 04:04

Re: Fail2Ban fuer Wordpress Login

Post by Fezzi »

Und da ist er wieder... mit zahllosen Versuchen, unentdeckt...

hat noch wer eine Idee was and der conf oder dem Jail falsch sein koennte das das einfach durchrutscht?

Code: Select all

2024-08-19 15:59:24 	188.166.191.228 		200 	POST //wp-login.php HTTP/1.1
2024-08-19 15:59:24 	188.166.191.228 		200 	POST //wp-login.php HTTP/1.1
2024-08-19 15:59:23 	188.166.191.228 		200 	POST //wp-login.php HTTP/1.1 
2024-08-19 15:59:22 	188.166.191.228 		200 	POST //wp-login.php HTTP/1.1
2024-08-19 15:59:21 	188.166.191.228 		200 	POST //wp-login.php HTTP/1.1
2024-08-19 15:59:21 	188.166.191.228 		200 	POST //wp-login.php HTTP/1.1 
2024-08-19 15:59:18 	188.166.191.228 		200 	POST //wp-login.php HTTP/1.1
2024-08-19 15:59:17 	188.166.191.228 		200 	POST //wp-login.php HTTP/1.1 

etc etc etc
Gruss

Fezzi

Everyone can do something, no one can do everything.
User avatar
Ralph
Posts: 1245
Joined: Mon 30. Mar 2020, 16:14

Re: Fail2Ban fuer Wordpress Login

Post by Ralph »

versuchs mal mit diesen Filter

Code: Select all

# /etc/fail2ban/filter.d/wordpress.conf
# Fail2Ban configuration file for wordpress
#
[Definition]

failregex = ^<HOST>.*].*POST.*wp-login\.php HTTP.*
            ^<HOST>.*].*xmlrpc\.php.*

ignoreregex =

Code: Select all

[wordpress]

enabled = true
port = http,https
filter = wordpress
logpath = /home/users/*/logs/*/access.log
maxretry = 3
findtime = 1800
bantime  = 1800
danach F2B neu starten Fehl Login produzieren und ins Log schauen

Code: Select all

tail -n 500 /var/log/fail2ban.log
### edit ###
der verwendet beim Login auch einen doppel slash // und umgeht somit deinen Filter mit einem /, also besser .*wp-login\.php verwenden, greift dann normalerweise immer.
User avatar
Fezzi
Posts: 253
Joined: Wed 12. Dec 2018, 04:04

Re: Fail2Ban fuer Wordpress Login

Post by Fezzi »

Hallo Ralph,

vielen Dank...
Ralph wrote: Mon 19. Aug 2024, 19:03
### edit ###
der verwendet beim Login auch einen doppel slash // und umgeht somit deinen Filter mit einem /, also besser .*wp-login\.php verwenden, greift dann normalerweise immer.
das macht Sinn... und ist mir gar nicht aufgefallen :oops: jedenfalls hat Deine failregex nach Aktivierung sofort einen boesen Buben rausgefischt... im Moment ist es sehr ruhig auf dem Server... aber die kommen bestimmt wieder... ich behalte das mal im Auge und werde berichten...

Danke Dir nochmal fuer das "Adlerauge" und den Filter....
Gruss

Fezzi

Everyone can do something, no one can do everything.
User avatar
Ralph
Posts: 1245
Joined: Mon 30. Mar 2020, 16:14

Re: Fail2Ban fuer Wordpress Login

Post by Ralph »

Fezzi wrote: Tue 20. Aug 2024, 03:13 das macht Sinn... und ist mir gar nicht aufgefallen :oops: jedenfalls hat Deine failregex nach Aktivierung sofort einen boesen Buben rausgefischt... im Moment ist es sehr ruhig auf dem Server... aber die kommen bestimmt wieder... ich behalte das mal im Auge und werde berichten...
Hallo Fezzi!
der Filter ist ist sehr strikt und war hierbei nur zum testen gedacht ... die Rückgabewerte (200|401|403|404) sollten normalerweise wieder rein, der prüft ansonsten nur die Anzahl der Requests in dem festgelegten Zeitraum auf eine wp-login.php ... kann unter Umständen auch nützlich sein, je nach Ausmaß der Attacken.

Das Problem ist hierbei auch WP bzw. Apache die solche URLs mit unendlichen slashes zulassen ....
https://mydomain.tld///////////wp-login.php
User avatar
Fezzi
Posts: 253
Joined: Wed 12. Dec 2018, 04:04

Re: Fail2Ban fuer Wordpress Login

Post by Fezzi »

Ralph wrote: Tue 20. Aug 2024, 09:11
der Filter ist ist sehr strikt und war hierbei nur zum testen gedacht ... die Rückgabewerte (200|401|403|404) sollten normalerweise wieder rein, der prüft ansonsten nur die Anzahl der Requests in dem festgelegten Zeitraum auf eine wp-login.php ... kann unter Umständen auch nützlich sein, je nach Ausmaß der Attacken.

Das Problem ist hierbei auch WP bzw. Apache die solche URLs mit unendlichen slashes zulassen ....
https://mydomain.tld///////////wp-login.php
Ok... danke fuer den Hinweis... jedenfalls faengt es jetzt sehr zuverlaessig die boesen Buben ein...

die .config sollte dann so aussehen incl. der Rueckgabewerte? Ich bin da noch nicht so firm mit den regex

Code: Select all

[Definition]
failregex = ^<HOST>.*].*POST.*wp-login\.php HTTP.*"(200|401|403|404).*
            ^<HOST>.*].*xmlrpc\.php.*"(200|401|403|404).*
ignoreregex =
Danke schon mal fuers checken...
Gruss

Fezzi

Everyone can do something, no one can do everything.
User avatar
Ralph
Posts: 1245
Joined: Mon 30. Mar 2020, 16:14

Re: Fail2Ban fuer Wordpress Login

Post by Ralph »

Fezzi wrote: Tue 20. Aug 2024, 12:26 die .config sollte dann so aussehen incl. der Rueckgabewerte? Ich bin da noch nicht so firm mit den regex
im log file zeigt ein Fail login
POST /wp-login.php HTTP/2.0" 200
:

dann sollte die regex so in etwa funktionieren (bei der xmlrpc.php diese Bedingung weglassen):

Code: Select all

[Definition]

failregex = ^<HOST>.*].*POST.*wp-login\.php HTTP.* (200|401|403|404).*
            ^<HOST>.*].*xmlrpc\.php.*

ignoreregex =

service fail2ban reload
Fehl Login produzieren
und log checken

Code: Select all

tail -n 500 /var/log/fail2ban.log | grep wordpress

die 401|403|404 kannst Du eigentlich weglassen, macht keinen großen Sinn ... kann aber auch drin bleiben wenn gewünscht :mrgreen:
also:

Code: Select all

[Definition]

failregex = ^<HOST>.*].*POST.*wp-login\.php HTTP.* 200.*
            ^<HOST>.*].*xmlrpc\.php.*

ignoreregex =
User avatar
Fezzi
Posts: 253
Joined: Wed 12. Dec 2018, 04:04

Re: Fail2Ban fuer Wordpress Login

Post by Fezzi »

Hallo Ralph,

ah, ok, got it... alles funktioniert wie gewollt...

vielen Dank fuer Deine Hilfe und die Erklaerungen... ich habe wieder was gelernt...
Gruss

Fezzi

Everyone can do something, no one can do everything.
sfsolutions
Posts: 4
Joined: Thu 1. Sep 2022, 12:15

Re: Fail2Ban fuer Wordpress Login

Post by sfsolutions »

Vielen Dank an Euch beide! Das hat mir endlich den "Serverfrieden" gebracht ...

im 90 Minuten schon 234 IP's gesperrt
Post Reply