Page 1 of 1

Регулярка для fail2ban, защита админки WP

Posted: Sat Jun 18, 2016 7:45 pm
by abst
Коллеги, нужна ваша помощь по составлению регулярки для файла конфига fail2ban.
Что имеем:

1) Сообщения о неуспешной авторизации пишутся в /var/log/httpd/domains/domain.ru.error.log в виде

Code: Select all

[Sat Jun 18 19:20:15.575081 2016] [:error] [pid 6441] [client 5.166.162.172:56291] WP LOGIN FAILED for username: 121221, referer: http://domain.ru/wp-login.php
2) В файле /etc/fail2ban/filter.d/wordpress-auth.conf написано правило:

Code: Select all

[Definition]
failregex = \[*\]. \[*\]. \[*\] .\[client <HOST>\].* WP LOGIN FAILED.*
3) В jail.local секция:

Code: Select all

[wordpress]
enabled  = true
port     = http,https
filter   = wordpress-auth
logpath  = /var/log/httpd/domains/*.error.log
maxretry = 3
bantime  = 3600
Но в итоге не работает, чувствую что проблема регулярке, но самостоятельно ее решить, к сожалению, не могу. Надеюсь на вашу помощь.

Code: Select all

root@54161 ~]# fail2ban-regex /var/log/httpd/domains/domain.ru.error.log "\[*\]. \[*\]. \[*\] .\[client <HOST>\].* WP LOGIN FAILED for username:.*"

Running tests
=============

Use   failregex line : \[*\]. \[*\]. \[*\] .\[client <HOST>\].* WP LOGIN ...
Use         log file : /var/log/httpd/domains/domain.ru.error.log
Use         encoding : UTF-8


Results
=======

Failregex: 0 total

Ignoreregex: 0 total

Date template hits:
|- [# of hits] date format
|  [141] Year(?P<_sep>[-/.])Month(?P=_sep)Day 24hour:Minute:Second(?:,Microseconds)?
|  [141] (?:DAY )?MON Day 24hour:Minute:Second(?:\.Microseconds)?(?: Year)?
`-

Lines: 282 lines, 0 ignored, 0 matched, 282 missed [processed in 0.04 sec]
Missed line(s): too many to print.  Use --print-all-missed to print all 282 lines

Re: Регулярка для fail2ban, защита админки WP

Posted: Sat Jun 18, 2016 8:45 pm
by Mr.Erbutw
А логи fail2ban, без ошибок ?

Re: Регулярка для fail2ban, защита админки WP

Posted: Sun Jun 19, 2016 4:58 am
by Nanotraktor
Попробуйте вот так:

Code: Select all

\[:error\]\s\[pid\s\d+\]\s\[client\s<HOST>:\d+\]\sWP LOGIN FAILED for username:\s\d+,\sreferer:\shttp:\/\/domain.ru\/wp-login.php
Коряво, но возможно сработает. (domain.ru замените на нужный адрес)

Проверить "на местах" можно выполнив один из вариантов:

Code: Select all

fail2ban-regex путь_к_логу путь_к_фильтру
fail2ban-regex <строка из лога> путь_к_фильтру
fail2ban-regex <строка из лога> <строка регулярного выражения>

Re: Регулярка для fail2ban, защита админки WP

Posted: Sun Jun 19, 2016 7:49 am
by abst
В итоге совместными усилиями найдено решение:

Code: Select all

[Definition]
failregex = \[*.*?\]* \[*.*?\]* \[.*?\]* \[*client <HOST>:\d+\]*.* WP LOGIN FAILED.*
Надеюсь пригодится кому-то еще.