Я пытаюсь понять, как создать фильтр 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