Пользовательское правило запрета fail2ban не работает (неправильное использование failregex?) - PullRequest
0 голосов
/ 06 ноября 2019

В настоящее время я пытаюсь защитить наш сервер резервного копирования и его интерфейс, поскольку в настоящее время он не имеет какой-либо (дополнительной) защиты, кроме надежного пароля. Сервер резервного копирования основан на CentOS 7.x.

Расположение файла журнала:

/var/log/backup

Имена файлов журнала:

backuplog-2019310.log
backuplog-2019309.log
backuplog-2019308.log
backuplog-2019307.log

Ложные имена входа регистрируются как:

[2019-11-06T13:13:33+01:00] [Audit] Web login failure for account 'admin': Invalid authentication (Address=200.100.150.50:28534)
[2019-11-06T13:13:34+01:00] [Audit] Web login failure for account 'test': Invalid authentication (Address=120.30.40.20:28534)
[2019-11-06T13:13:35+01:00] [Audit] Web login failure for account 'info': Invalid authentication (Address=85.80.75.70:28534)
[2019-11-06T13:13:35+01:00] [Audit] Web login failure for account 'user': Invalid authentication (Address=25.125.155.190:28534)

В /etc/fail2ban/jail.local:

[backup]
enabled  = true
filter   = backup
logpath  = /var/log/backup/backuplog-*.log
port     = 80,443

Использование звездочки там разрешено, верно?

Пока я понимаюНадеюсь, правильно.

Однако у меня возникают проблемы с созданием правильного фильтра для этого пользовательского правила запрета fail2ban (= фильтр).

Пример /etc/fail2ban/filter.d/backup.conf:

[Definition]
failregex = [[]Web login failure for account []] .* Invalid authentication
ignoreregex =

Но это не работает. Итак, я предполагаю, что мой failregex неверен? Может быть, кто-то может посоветовать мне правильный failregex, чтобы он работал?

Я получаю следующие сообщения об ошибках при запуске fail2ban:

ERROR  NOK: ("No 'host' group in '[[]Web login failure for account []] .* Invalid authentication'",)

Так что я предполагаю, что failregex неверен?

// update 1 - ЕЩЕ ПРОБЛЕМЫ + ДОПОЛНИТЕЛЬНЫЙ ВОПРОС

Обмануть чуть больше. Это обновленный failregex:

failregex = [][] Web login failure for account .* <HOST>

Теперь я больше не получаю "ERROR NOK", но он все еще не работает. Это журнал fail2ban:

2019-11-06 14:44:39,111 fail2ban.filter         [20978]: WARNING Unable to find a corresponding IP address for authentication: [Errno -2] Name or service not known
2019-11-06 14:44:41,706 fail2ban.filter         [20978]: WARNING Unable to find a corresponding IP address for authentication: [Errno -2] Name or service not known
2019-11-06 14:44:42,082 fail2ban.filter         [20978]: WARNING Unable to find a corresponding IP address for authentication: [Errno -2] Name or service not known
2019-11-06 14:44:42,623 fail2ban.filter         [20978]: WARNING Unable to find a corresponding IP address for authentication: [Errno -2] Name or service not known

Так что же я здесь не так делаю?

Кроме того, если подумать, я использую "/ var / log / backup / backuplog-* .log "не так уж и велик. Особенно, когда создается все больше и больше файлов журнала. Верно?

Есть ли способ указать текущий или последний файл журнала, например backuplog-2019310.log?

Заранее спасибо.

Тем временем я буду немного дурачиться.

// update 2 - ОСНОВНАЯ ПРОБЛЕМА РЕШЕНА !!

Полагаю, я решил это с помощью следующего failregex:

failregex = Invalid authentication \(Address=<HOST>

Посмотрим, смогу ли я сделать это несколько лучше, очевидно. Но это хорошее начало для меня.

Так что, может быть, кто-то может помочь мне с проблемой в отношении файла журнала, как упомянуто выше. Для облегчения чтения я спрошу здесь снова:

Кроме того, если подумать, я думаю, что использование "/var/log/backup/backuplog-*.log" не так уж и здорово. Особенно, когда создается все больше и больше файлов журнала. Правильно?

Есть ли способ указать текущий или последний файл журнала, например backuplog-2019310.log?

Может быть, у кого-то есть решение для этого?

Заранее спасибо.

1 Ответ

0 голосов
/ 12 ноября 2019

Что касается регулярных выражений, всегда лучше использовать привязанные RE, поэтому либо в конце:

failregex = Invalid authentication \(Address=<HOST>\)\s*$

, либо в начале:

failregex = ^\[\] \[Audit\] Web login failure for account '[^']+': Invalid authentication \(Address=<HOST>

И отключите usedns для этогоjail, если в журнале не ожидаются имена хостов (или используйте <ADDR> вместо <HOST>, если f2b> = v.0.10).

Что касается текущего (последнего) файла журнала, просто создайте символическую ссылку в postrotate (см. https://stackoverflow.com/a/58430149/7161854).

...