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

Това е всичко. Приятна работа!
Ако желаете да почерпите по кафе

Вашият коментар