Инструменты пользователя

Инструменты сайта


Боковая панель

Связь

fail2ban

Fail2ban

Основной задачей Fail2ban является обнаружение и блокирование отдельных IP-адресов, с которых производятся попытки несанкционированного проникновения в защищаемую систему. Такие "враждебные" IP-адреса определяются по результатам наблюдения за файлами журналов - log-файлами (например, /var/log/secure, /var/log/auth.log, /var/log/apache/access.log и т.д.). Если с какого-либо IP-адреса выполняется слишком много попыток зарегистрироваться в защищаемой системе или производятся какие-либо другие подозрительные действия, то хост с этим IP-адресом блокируется на некоторый интервал времени, определённый системным администратором, т.е. ни один пакет, посланный с такого заблокированного хоста, не будет принят. Такая блокировка выполняется посредством изменения правил (rules) сетевого экрана (iptables).

Описанная выше функциональная схема позволяет защищаться от так называемых "brute force" атак, т.е. от многочисленных попыток войти в систему с различными вариантами паролей. Атаки такого рода достаточно часто практикуются сетевыми взломщиками.

Использование Fail2ban (Debian)

  • Установка в Debian
    # aptitude install fail2ban
  • Параметры настройки, содержащиеся в .local-файлах, имеют преимущество над аналогичными параметрами, записанными в .conf-файлах. На практике это означает, что сначала считывается содержимое .conf-файлов, а затем содержимое .local-файлов, поэтому значения ранее определённых параметров могут быть заменены.
    cd /etc/fail2ban;
    cp -p fail2ban.conf fail2ban.local;
    cp -p jail.conf jail.local;
  • jail.local
    [DEFAULT]
     
    # "ignoreip" can be an IP address, a CIDR mask or a DNS host
    ignoreip = 127.0.0.1/8
    # bantime в секундах, если указать отрицательное число (-1), то заблокирует навечно.
    bantime  = 600
    maxretry = 3
     
    # Адрес, на который слать уведомления о событиях
    destemail = admin@example.org
    # Имя пользователя от которого приходят сообщения, по умолчанию Fail2Ban
    sendername = you name computer
     
     
    # Какое из действий выполнить, например  action_mw, action_mwl и др.
    action = %(action_mwl)s
  • рабочий jail.local для SSH, Pure-FTPd(syslog вместо auth.log)
    jail.local
    [DEFAULT]
    ignoreip = 127.0.0.1/8
    #bantime  = -1
    bantime  = 600
    maxretry = 3
    backend = auto
    destemail = admin@example.org
     
    # ACTIONS
    banaction = iptables-multiport
    #mta = sendmail
    mta = mail
    protocol = tcp
    chain = INPUT
    action = %(action_mwl)s
     
    # JAILS
     
    [ssh]
     
    enabled  = true
    #mta = mail[name=ssh Atacced!!!]
    port     = ssh
    filter   = sshd
    logpath  = /var/log/auth.log
    maxretry = 6
     
    [pure-ftpd]
     
    enabled  = true
    #mta = mail[name=pure-ftpd Atacced!!!]
    port     = ftp,ftp-data,ftps,ftps-data
    filter   = pure-ftpd
    #logpath  = /var/log/auth.log
    logpath  = /var/log/syslog
    maxretry = 6
  • Можно вручную тестировать фильтры, например для Pure-FTPd
    syslog
    Nov 19 15:56:17 cz5234 pure-ftpd: (?@10.26.10.251) [WARNING] Authentication failed for user [dark33]
    Nov 19 15:56:19 cz5234 pure-ftpd: (?@10.26.10.251) [WARNING] Authentication failed for user [dark33]
    # fail2ban-regex /var/log/syslog /etc/fail2ban/filter.d/pure-ftpd.conf
  • RoundCube
    [roundcube-auth]
    
    enabled  = true
    filter   = roundcube-auth-new
    port     = http,https
    #logpath  = /var/log/roundcube/userlogins
    logpath  = /var/log/roundcube/errors

    Изменим регулярное выражение

    roundcube-auth-new.conf
    failregex = ^\s*(\[(\s[+-][0-9]{4})?\])?(: IMAP Error)?: (FAILED login|Login failed) for .*? from <HOST>(\. .* in .*?/rcube_imap\.php on line \d+ \(\S+ \S+\))?$

    Проверим правило

    # fail2ban-regex /var/log/roundcube/errors /etc/fail2ban/filter.d/roundcube-auth-new.conf

Использование Fail2ban (RHEL/CentOS)

По молчанию утилиты Fail2ban нет в стандартном репозитории. Fail2ban можно поставить например из EPEL repository используя YUM.

Управление запрещенными IP

Управление запрещенными IP (manage bans IPs).

  • Просмотр запрещенных IP в iptables:
    iptables -L
  • Для разблокирования конкретного IP, нужно узнать номер строки правила и потом удалить строку под этим номером с указанием имени Chain. Например, удалим 60 строку правила для цепи fail2ban-ssh:
    iptables -nvL --line-numbers
    iptables -D fail2ban-ssh 60

Bug Fail2ban 1970

Версия демона Fail2ban 0.8.6 присылает на почту уведомление с неправильной датой 1970-01-01 01:00. Варианты решения:

  • Обновить Fail2ban
  • Использовать в jail.local mta = mail вместо mta = sendmail
  • Во всех конфигурационных файлах "/etc/fail2ban/action.d/sendmail*.conf " заменить строчку
    Date: `date -u +"%%a, %%d %%h %%Y %%T +0000"`

    на

    Date: `date --rfc-2822 -u`

Ссылки

fail2ban.txt · Последние изменения: 2016/03/17 16:54 (внешнее изменение)