Я пытаюсь написать регулярное выражение fail2ban, которое ловит любого, кто пытается ввести идентификатор пользователя «administrador». Например, эта запись в журнале:
Jan 2 09:55:01 mail2 dovecot: pop3-login: Disconnected: user=<administrador>, method=PLAIN, rip=::ffff:201.130.1.218
Вот регулярное выражение, которое у меня есть:
failregex = (?: pop3-login|imap-login): .*(?:Disconnected: user=\<administrador\>).*rip=(?P<host>\S*),.*
Он не улавливает указанную выше запись журнала, потому что синтаксис неправильный. Кто-нибудь может помочь?
Дальше экспериментировал и смог создать рабочий. Проблема была в разделе удаленного ip (rip). Вот что сработало:
failregex = (?: pop3-login|imap-login): .*(?:Disconnected: user=\<administrador\>).*rip=.*ffff\:(<HOST>).*
Хотя это может быть не очень эффективно. Любые предложения по его улучшению по-прежнему приветствуются.
Ваш шаблон начинается с "pop3" или "imap" ... Запись в журнале начинается с даты.
failregex = .*(pop3-login|imap-login).*administrator.*rip=<HOST>
Должно работать (хотя я не тестировал)
Также нашел это Вход Fail2Ban на DovecotWiki.