Как установить и настроить Fail2Ban на CentOS 7

Как установить и настроить Fail2Ban на CentOS 7

Многие запущенные на сервере службы для корректной работы должны держать порты открытыми. Однако каждый открытый порт — это потенциально слабое место в безопасности.

Подключение к серверу по протоколу SSH довольно безопасно, но в то же время служба SSHd должна оставаться открытой для Интернета, а это связано с рисками, так как любая служба, открытая для запросов из сети, является потенциальной брешью в защите. Журналы таких служб регулярно фиксируют серии попыток входа, что говорит об атаках методом подбора.

Fail2ban — это инструмент для предотвращения вторжений, который работает совместно с межсетевым экраном, установленным на сервере. Fail2ban анализирует файлы журналов и создаёт правила, которые могут автоматически изменять поведение брандмауэра и используются для блокировки попыток подключения после нескольких неудачных попыток.

Рассмотрим процесс установки и настройки fail2ban на CentOS 7.

Установка Fail2Ban

Поскольку Fail2ban недоступен напрямую из CentOS, необходимо установить EPEL — репозиторий содержащий пакеты Fedora для CentOS (выполняйте от имени суперпользователя):

sudo yum install epel-release

Затем установите Fail2ban:

sudo yum install fail2ban

Установленная программа уже имеет базовую конфигурацию, достаточную для начала работы и защиты сервера. Запустим службу:

sudo systemctl start fail2ban

Настройка Fail2ban на CentOS 7

Файлы конфигурации лежат в папке /etc/fail2ban:

  • jail.d — каталог с пользовательскими настройками для защиты отдельных сервисов;
  • action.d — здесь описаны действия, которые будут выполнены при блокировке;
  • filter.d — правила, в соответствии с которыми Fail2ban будет анализировать журналы для поиска подозрительных попыток входа;
  • fail2ban.conf — общая конфигурация;
  • jail.conf — список запрещающих правил.

Настройки в файлах, созданных при установке, изменять нельзя — можно сказать, что это шаблоны конфигурационных файлов. Они обновляются во время обновления приложения, а это означает, что все настройки, внесённые пользователями, будут стёрты. Для пользовательской настройки эти файлы нужно копировать и настраивать копии. Пользовательский файл jail.local переопределяет jail.conf.

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

Содержимое файла разбито на блоки в зависимости от области применения параметров.

В блоке [DEFAULT] расположены общие параметры, которые применяются к службам, включённым в Fail2ban, но не имеющим собственных блоков. За ним идут блоки с параметрами для отдельных служб, требующих защиты. Они имеют дефолтные настройки и отключены по умолчанию.

  • Первый параметр — Ignoreip. Это перечисление адресов, которые Fail2ban будет игнорировать и не сможет добавить их в бан. Вписать можно IP-адреса, маски подсети и хосты DNS; единичные адреса или диапазоны разделяют пробелом. Если вы подключаетесь к серверу с выделенного IP-адреса, то также добавьте его в список исключений.
  • Затем установите bantime. Параметр определяет, как долго хост-нарушитель будет оставаться в списке бана до автоматической разблокировки.
  • Следующая настройка — findtime, временной промежуток для максимального количество попыток входа.
  • Maxretry counts — максимальное количество попыток получить доступ, прежде чем IP-адрес хоста, пытающегося подключиться, будет заблокирован.
  • Banaction — обычно устанавливается «iptables»; параметр отсылает к файлу конфигурации в /etc/fail2ban/action.d/, где записаны действия для блокировки.
  • Action — сценарий действия, которое будет выполнено после banaction.

Bantime и findtime указываются в секундах.


Выбирайте для своих веб-проектов надёжного провайдера, которому можно поручить настройки и администрирование сервера. Например, аренда VPS от AdminVPS — это:

  • бесплатное администрирование,
  • NVMe-диски,
  • быстрая техподдержка,
  • защита от DDoS-атак,
  • доступная цена,
  • опция «Всё включено», которая позволит сэкономить на сисадмине.

Например, со следующими настройками хост с IP-адресом ХХХ.Х.Х.2 будет заблокирован на 10 минут, если за 10 минут с его адреса будет зарегистрировано 5 неудачных попыток получить доступ:

[DEFAULT]
ignoreip = ХХХ.Х.Х.1
banaction = iptables-multiport
bantime = 600
findtime = 600
maxretry = 5

Десятиминутного бана обычно достаточно, так как боты, попав в бан, чаще всего переключаются на следующую цель.

  1. Если на вашем сервере с CentOS 7 запущена служба Sendmail, то вы можете настроить уведомления от Fail2ban. Для этого введите свой e-mail в строке destemail, а в строке action укажите значение «%(action_mw)s».
  2. После того как вы выполнили базовые настройки, проверьте различные джейлы, доступные в параметрах конфигурации. Джейлы — это правила, которые Fail2ban применяет к любому данному приложению или файлу журнала. Кроме перечисленных выше настроек, каждый джейл содержит дополнительные:
  • filter — отсылает к файлу в директории /etc/fail2ban/filter.d/, содержащему правила анализа журнала службы;
  • logpath — директория лога с информацией о неудачных попытках получить доступ;
  1. Настройки SSH jail неактивны сразу после установки. Активируйте их, добавив «enabled = true» в модуль SSH jail.
[sshd]
enabled = true

Также укажите порт, который использует SSHd; если вы его не меняли, оставьте заданный по умолчанию.

  1. Вы можете включить любые другие модули jail таким же образом — добавив то же значение в строку enabled чуть ниже заголовка jail, такого как [sshd] в примере выше. Чтобы отключить модуль, укажите enabled = false. Внимательно проверьте все правила, прежде чем активировать их: при неправильной настройке они могут вызвать проблемы при запуске.
  2. Когда вы включите все нужные вам джейлы, сохраните файл конфигурации и выйдите из редактора.
  3. Затем перезапустите службу с помощью следующей команды:
sudo systemctl restart fail2ban
  1. Завершив настройку, добавьте Fail2ban в автозапуск.

Настройка Iptables

После этого вам следует проверить правила iptable на предмет недавно добавленных разделов jail для каждого из включённых модулей приложения.

sudo iptables -L

Забаненные IP-адреса появятся в виде списка. Вы также можете вручную забанить и разбанить IP-адреса из служб, для которых вы определили джейлы, с помощью следующих команд:

sudo fail2ban-client set <jail> banip <ipaddress>

Или:

sudo fail2ban-client set <jail> unbanip <ipaddress>

Теперь вы знаете всё необходимое о службе Fail2Ban, которая поможет предотвратить атаки на порты, а также можете сохранить себе эту инструкцию по настройке Fail2Ban на CentOS 7.

Читайте в блоге:

Что будем искать? Например,VPS-сервер

Мы в социальных сетях