Я не могу получить регулярное выражение для работы fail2ban. Я хочу сопоставить следующее:
[Tue Jun 24 10:22:14.528987 2014] [fcgid:warn] [pid 22526:tid 139757615011584] [client IP:PORT] mod_fcgid: stderr: user admin joomla authentication failure, referer: http://www.mydomain.com/administrator/index.php?option=com_login
Я попытался:
^\[.*\s*.*]* \[client <HOST>\] mod_fcgid: stderr: user .* joomla authentication failure, referer: .*
Любая помощь будет очень признательна.
Вам не нужно иметь сложное регулярное выражение, чтобы пропустить начальное поле времени. Я подозреваю, что это вызывает у вас проблемы. Для данной записи в журнале это работает, если я конвертирую ваш IP:PORT
в числовое значение ip: port.
'^.*[[]client <HOST>.*user .*joomla authentication failure,'
Вышеуказанное приведет к бану любого пользователя со слишком большим количеством ошибок аутентификации.
Я не знаю, используете ли вы его, но fail2ban-regex - отличный инструмент для этого
Всего 2 заметки:
IP:PORT
, даже если это подделка.<HOST>:[0-9]+
. Я предполагаю, что порт обязателен.Тест (последняя строка - регулярное выражение):
fail2ban-regex \
'[Tue Jun 24 10:22:14.528987 2014] [fcgid:warn] [pid 22526:tid 139757615011584] [client 1.2.3.4:1234] mod_fcgid: stderr: user admin joomla authentication failure, referer: http://www.mydomain.com/administrator/index.php?option=com_login' \
'^\[.*]* \[client <HOST>:[0-9]+\] mod_fcgid: stderr: user .* joomla authentication failure, referer: .*'
Меня устраивает.