Fail2ban и Exim в Ubuntu

Програмата fail2ban е популярен инструмент за защита. Принципът на работа е сравнително прост и ефективен: ако от хост за кратко време се запишат голям брой грешки в ауторизацията, този хост се блокира за известно време. Допълнително предоставя възможността за лесно добавяне и поддръжка за нови услуги и голям набор от предварително зададени настройки.
Определен недостатък е фактът, че са проектирани за стандартния формат на журнала и не работят с форматите на дневника, предлагани от поддръжниците на популярни дистрибуции. Пример за такава услуга е MTA Exim, чиито дневници от няколко години не съответстват на правилата в пакета fail2ban. Следва пример за конфигурация на fail2ban с поддръжка на текущия формат на дневника на MTA Exim.
Ще направим всичко по-долу на сървър, работещ на Ubuntu 18.04 LTS с MTA Exim, работещ на него. Първо, инсталирайте fail2ban:
apt install fail2banСлед това създайте файла „/etc/fail2ban/filter.d/exim-new.conf“, със следното съдържание:
[INCLUDES]
before = exim-common.conf
[Definition]
failregex = SMTP syntax error in \".+\" H=\[<HOST>\] NULL character\(s\) present \(shown as \'\?\'\)*$
authenticator failed for (?:[^\[\( ]* )?(?:\(\S*\) )?\[<HOST>\](?::\d+)?(?: I=\[\S+\](:\d+)?)?: 535 Incorrect authentication data \(set_id=.*\).*$
SMTP protocol error in \"[^"]*\" H=\([^)]*\) \[<HOST>\] \w+ authentication mechanism not supported
SMTP protocol synchronization error \([^)]*\): rejected (?:connection from|"\S+") %(host_info)s(?:next )?input=".*"\s*$
%(host_info)srejected RCPT [^@]+@\S+: (?:relay not permitted|Sender verify failed|Unknown user|Unrouteable address)\s*$
mode = normal
ignoreregex =Това отчита не само директните опити за търсене, но и опитите за изпращане на поща до несъществуващи адреси. Причината за това е доста проста, макар и не напълно очевидна: вместо да опита много двойки „влизане + парола“, да го наречем „хакера“ преминава през получателите, като компилира база данни с потенциални входни данни и след това може целенасочено да избира пароли за тях.
Като алтернатива можете да конфигурирате капан („catchmail“), който събира всички писма за несъществуващи пощенски кутии в една единствена пощенска кутия. Но това ще го разгледаме друг път.
Можете да тествате шаблона с командата:
fail2ban-regex /var/log/exim4/mainlog /etc/fail2ban/filter.d/exim-new.confТази команда ще покаже колко пъти правилният израз е работил в посочения дневник. Разбира се, тестването не е в празен дневник. След като се уверите, че регулярните изрази работят, преминете към включването на новия ни филтър. Създайте файла „/etc/fail2ban/jail.local“, ако той вече не съществува, и добавете следните редове към него:
[exim-new]
port = smtp,465,submission
logpath = %(exim_main_log)s
enabled = true
bantime = 6h
findtime = 15mСлед това рестартирайте fail2ban:
systemctl restart fail2banМоже да видите списъците със забранени адреси и обща статистика за нашия филтър с командата:
fail2ban-client status exim-newТова е всичко. Приятна работа!



