Назад | Перейти на главную страницу

Как создать фильтр fail2ban для атак phpmyadmin

Я пытаюсь понять, как создать фильтр failregex для fail2ban, чтобы защититься от атак ниже. Я пробовал следующие выражения failregex, но они ничего не соответствуют из / var / log / https / error_log

failregex = ^\[[^\]]+\] \[error\] \[client <HOST>\].*File does not exist: .*pma* *\s*$

ИЛИ

failregex = ^[[^\]]+\] \[error\] \[client <HOST>\] File does not exist: *phpyadmin* *\s*$

Вот зонды, для которых я пытаюсь создать правила

[Sat Aug 05 15:42:46 2017] [error] [client 109.188.133.141] File does not exist: /var/www/vhosts/default/htdocs/phpmyadmin2015
[Sat Aug 05 15:42:46 2017] [error] [client 109.188.133.141] File does not exist: /var/www/vhosts/default/htdocs/phpmyadmin2016
[Sat Aug 05 15:42:47 2017] [error] [client 109.188.133.141] File does not exist: /var/www/vhosts/default/htdocs/phpmyadmin2017
[Sat Aug 05 15:42:48 2017] [error] [client 109.188.133.141] File does not exist: /var/www/vhosts/default/htdocs/PMA2014
[Sat Aug 05 15:42:49 2017] [error] [client 109.188.133.141] File does not exist: /var/www/vhosts/default/htdocs/PMA2015
[Sat Aug 05 15:42:49 2017] [error] [client 109.188.133.141] File does not exist: /var/www/vhosts/default/htdocs/PMA2016
[Sat Aug 05 15:42:49 2017] [error] [client 109.188.133.141] File does not exist: /var/www/vhosts/default/htdocs/PMA2017
[Sat Aug 05 15:42:50 2017] [error] [client 109.188.133.141] File does not exist: /var/www/vhosts/default/htdocs/PMA2018
[Sat Aug 05 15:42:52 2017] [error] [client 109.188.133.141] File does not exist: /var/www/vhosts/default/htdocs/pma2015
[Sat Aug 05 15:42:52 2017] [error] [client 109.188.133.141] File does not exist: /var/www/vhosts/default/htdocs/pma2016
[Sat Aug 05 15:42:52 2017] [error] [client 109.188.133.141] File does not exist: /var/www/vhosts/default/htdocs/pma2017
[Sat Aug 05 15:42:53 2017] [error] [client 109.188.133.141] File does not exist: /var/www/vhosts/default/htdocs/pma2018

Выражения регулярных выражений неправильно распознают формат, в котором создаются журналы. Любая помощь будет принята с благодарностью. Мне просто нужно одно правило подстановки, которое сканирует: а) файл не существует и б) любую из следующих строк в этой строке ошибки pma *, php *

Спасибо за предложения, приведенные выше, но после бесчисленных попыток вот выражения, которые сработали.

[Definition]
ignoreregex = 
failregex = \[client <HOST>\] File does not exist:.*(?i)MyAdmin.*
\[client <HOST>\] File does not exist:.*(?i)mysqlmanager.*
\[client <HOST>\] File does not exist:.*(?i)PMA.*
\[client <HOST>\] File does not exist:.*(?i)pma.*   
\[client <HOST>\] File does not exist:.*(?i)php-my-admin.*  
\[client <HOST>\] File does not exist:.*(?i)myadmin.*   
\[client <HOST>\] File does not exist:.*(?i)administrator.*     
\[client <HOST>\] File does not exist:.*(?i)xmlrpc.*            
\[client <HOST>\] File does not exist:.*(?i)testproxy.* 
\[client <HOST>\] File does not exist:.*(?i)phpMyAdmin.*
\[client <HOST>\] File does not exist:.*(?i)db.*    
\[client <HOST>\] File does not exist:.*(?i)sql.*       

Если у кого-то есть plesk на centos, они могут использовать эти правила для предотвращения атак. Мой сервер продолжал запускать процесс apache при 100% загрузке процессора.

Самая очевидная ошибка, которую я вижу, здесь -

pma* *\s*$

Это соответствует pm, вслед за a ноль или более раз. Затем после этого он соответствует пробелу ноль или более раз, за ​​которым следует \s (пробел или табуляция) ноль или более раз.

Так что в основном это должно заканчиваться pma за которым следует ноль или более пробелов. То же самое с другим регулярным выражением.

Вы должны попробовать что-то вроде pma.*\s* (при условии, что вам нужно учесть возможные пробелы в конце строки.

Изменить - полное выражение должно быть примерно таким, хотя, очевидно, я не могу его проверить.

\[client <HOST>\] File does not exist: .+pma