Webmaster общности: Predpriemach.com | SearchEngines.bg

    Fail2ban и Exim в Ubuntu

    linux

    Програмата 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

    Това е всичко. Приятна работа!