Настройка Fail2ban

Fail2ban служба хранит свои файлы конфигурации в директории /etc/fail2ban. В ней существует файл со значениями по умолчанию под названием jail.conf.

Так как этот файл может быть изменен с помощью обновлений пакетов, его редактирование не рекомендуется. Вносить изменения нужно в файле jail.local, который переопределяет все параметры по умолчанию из файла jail.conf и имеет высший приоритет в исполнении.

Настройка fail2ban.local

  1. Перейдите в  /etc/fail2ban.
cd /etc/fail2ban
  1. Поскольку изменения конфигурации должны быть сделаны в файле fail2ban.local, определения в котором перезаписывают fail2ban.conf, то скопируем fail2ban.conf в fail2ban.local:
sudo cp /etc/fail2ban/fail2ban.conf /etc/fail2ban/fail2ban.local

Переменные, которые можно настроить в файле fail2ban.local:

fail2ban config screenshot
  • loglevel: Уровень детализации логов fail2ban. Принимает значения: CRITICAL, ERROR, WARNING, NOTICE, INFO, DEBUG .
  • logtarget: Записывает логи в определенный файл. По умолчанию, все логи записываются в файл /var/log/fail2ban.log. Вы также можете изменить значение на STDOUT, которое будет выводить все данные; STDERR будет выводить все ошибки; SYSLOG; и FILE, которое записывает логи в файл FILE.
  • socket: Расположение файла сокета.
  • pidfile: Расположение файла PID для хранения ID процесса сервера fail2ban.

Базовая настройка jail.local

  1. Вернитесь в папку /etc/fail2ban и скопируйте файл jail.conf в jail.local:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

      2. Если вы используете CentOS или Fedora, откройте jail.local установите значение backend:

backend=systemd
screenshot-jail-conf
  • ignoreip: добавьте в эту строку те IP-адреса, которые Fail2ban нужно игнорировать (не банить). По умолчанию, эта команда не будет банить только localhost.
  • bantime: время бана подозрительного IP-адреса в секундах. Если установить отрицательное число, бан будет постоянным. 
  • findtime: определяет промежуток времени в секундах, в течении которого программой будет определяться наличие подозрительной активности перед тем, как забанить IP-адрес.
  • maxretry: количество попыток получения доступа к серверу с одного IP до того, как он будет запрещен. По умолчанию, это 3.

Оповещения по email.

Если вы хотите получать оповещения по email каждый раз, когда срабатывает Fail2ban, настройте в файле jail.local:

  • destemail: email адрес, куда вы хотите отправлять письма.
  • sendername: Имя, под которым будет отправляться письмо.
  • sender: email адрес, с которого Fail2ban будет присылать письма.

Если вы не знаете, что написать в  sender, введите команду

sendmail -t user@email.com

где user@email.com — ваш адрес.

Потом проверьте email (включая папку “Спам”, если нужно) и скопируйте адрес отправителя. Именно он может быть использован для конфигурации выше.

  • action: определяет действия системы в случае превышения количества попыток получения доступа. По умолчанию, банит только пользователя. action_mw забанит и отправит email с отчетом; тогда как action_mwl забанит, отправит письмо с отчетом и все релевантные строки в файле лога.

Настройка jail2ban для различных сервисов

Кроме базовых настроек, jail.local также содержит различные настройки для большого числа распространенных сервисов, включая SSH. По умолчанию, она работает только для SSH.

Примерная конфигурация файла для защиты SSH:

[ssh]
enabled  = true
port = ssh
filter   = sshd
logpath  = /var/log/auth.log
maxretry = 6

Значение переменных:

  • enabled: определяет, включен фильтр или нет.
  • port: порт сервиса, на который ссылается Fail2ban. Если используется порт по умолчанию, тогда можно использовать имя сервиса. Если вы перенесли ваш SSH порт на 3456, замените ssh на 3456.
  • filter: фильтр, который будет использоваться.
  • logpath: расположение логов сервиса.
  • maxretry: перезапишет глобальное значение maxretry для определенного сервиса. Также можно добавить findtime и bantime.
  • action: это может быть дополнительной настройкой, если значение по умолчанию не подходит. Дополнительные действия можно найти в папке /etc/fail2ban/action.d .

Для защиты веб-сервера Apache можно использовать следующие настройки Fail2ban:

[apache]
enabled = true
port = http,https
filter = apache-auth
logpath = /var/log/apache2/error.log
maxretry = 3

[apache-multiport]
enabled = true
port = http,https
filter = apache-auth
logpath = /var/log/apache2/error.log
maxretry = 3

[apache-noscript]
enabled = true
port= http,https
filter = apache-noscript
logpath = /var/log/apache2/error.log
maxretry = 3

[apache-overflows]
enabled = true
port= http,https
filter = apache-overflows
logpath = /var/log/apache2/error.log
maxretry = 2

Не забудьте перезапускать Fail2ban после каждого редактирования конфигурационного файла!

На этом настройка Fail2ban завершена.

Если вдруг какой-то IP-адрес будет заблокирован по ошибке, удалите его из черного списка с помощью команды:

sudo fail2ban-client set JAIL unbanip IP 
  • JAIL — название секции файла jail.local, в соответствии с правилами которой была активирована блокировка.
  • IP — адрес, который нужно разблокировать.

Например:

sudo fail2ban-client set ssh-iptables unbanip 63.127.107.213

Надеюсь, это руководство было полезным для вас!