Здравствуйте, уважаемые читатели. Сегодня тема статьи: «Установка и пример настройки Fail2ban». Утилита Fail2ban, используется для контроля доступа к средствам аутентификации, путём проверки лог-файлов доступа.

При помощи утилиты Fail2ban, можно настроить контроль доступа к любым службам. В конфигурационном файле утилиты, уже присутствуют шаблоны для многих служб и сервисов. Кроме того, можно вручную конфигурировать утилиту для своих нужд.

Установка Fail2ban

  • Установку и настройку, будем производить в операционной системе CentOS 7.
  • Пакет Fail2ban отсутствует в базовой комплектации ОС, поэтому нужно подключить репозиторий epel-release:
# yum install epel-release
подключение репозитория epel-release
  • После подключения репозитория, можно установить и саму Fail2ban:
# yum install fail2ban
установка Fail2ban
  • Когда утилита будет установлена, нужно её запустить, и добавить в автозагрузку:
# systemctl start fail2ban
# systemctl enable fail2ban
запуск и добавление в автозагрузку Fail2ban

Файлы конфигурации Fail2ban

  • Файлы Fail2ban в системе, находятся по адресу /etc/fail2ban/.
  • Шаблон конфигурационного файла утилиты, это файл jail.conf:
 конфигурационный шаблонный файл Fail2ban jail.conf
  • Можно производить конфигурацию и в этом файле (Fail2ban примет настройки), но при обновлении утилиты, этот файл будет стёрт, и все Ваши настройки будут утеряны.
  • Поэтому нужно создать файл jail.local, путём копирования файла jail.conf, и производить настройки уже в файле jail.local.
# cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
создание файла jail.local для конфигурации Fail2ban
  • При считывании конфигурации, утилита будет считать настройки в файле jail.local приоритетными.
 jail.local создан
  • После установки и старта утилиты, начинают работать настройки по умолчанию, которые находятся в секции [DEFAULT].
  • Ниже, находится список наборов правил для служб, внесённых в конфигурацию утилиты по умолчанию. Эти наборы называются JAILS.
  • Каждый jail обрамлён в квадратные кавычки, и имеет название схожее с поддерживаемой службой.
JAILS в файле jail.local

JAILS в Fail2ban

  • Для проверки количества активных джейлов, нужно ввести команду:
# fail2ban-client status
проверка количества активных джейлов
  • На картинке нет активных джейлов.
  • В пару к каждому джейлу, по умолчанию есть файл фильтр, по которому происходит проверка на предмет нарушения.
  • Файлы фильтры находятся в директории /etc/fail2ban/filter.d, и имеют одинаковое название с сопряжённым джейлом.
директория filter.d для фильтров в fail2ban
  • Принцип конфигурации джейлов в целом схож, и состоит из нескольких строчек:
  1. Активация джейла.
  2. Имя фильтра.
  3. Действие при нарушении.
  4. Лог-файл для контроля.
  5. Период времени в секундах, в течение которого не должно быть превышено число попыток доступа.
  6. Разрешённое число попыток доступа в установленный период.
  7. Время блокировки в секундах, в случае нарушения.
  • Вот пример настройки для доступа по ssh-протоколу, которому соответствует джейл [sshd].
enabled = true
filter = sshd
action = iptables[name=SSH, port=22, protocol=tcp]
logpath = %(sshd_log)s
findtime = 600
maxretry = 3
bantime = 1200

Из примера следует:

  1. Джейл активен.
  2. Имя фильтра – sshd.
  3. Действие — блокировка брандмауэром на порту 22.
  4. Лог-файл для контроля.
  5. Период времени – 600 секунд.
  6. Разрешённое число попыток – 3 раза.
  7. Время блокировки в случае превышения – 1200 секунд.
  • В файле jail.local, находим секцию [sshd], и удалив всё не закомментированное, вставляем настройки представленные выше.
настройка джейла [sshd]
  • Чтобы настройки вступили в силу, нужно перезапустить Fail2ban:
# systemctl restart fail2ban
перезапуск Fail2ban
  • Если нужно проверить статус джейла, вводим команду:
# fail2ban-client status jail_name
  • Вместо jail_name, пишем имя нужного джейла без скобок.
  • Например для активированного нами джейла [sshd], команда и вывод будет таким:
просмотр статуса джейла
  • На картинке список пока пуст.

Ручная блокировка и разблокировка

  • При помощи Fail2ban, можно вручную заблокировать какой-нибудь ip-адрес, если Вы хотите произвести блокировку на время, соответствующее времени бана в джейле.
# fail2ban-client set jail_name banip 1.1.1.1

Вместо jail_name пишем имя джейла, а вместо 1.1.1.1 пишем ip-адрес, который нужно заблокировать.

ручная блокировка ip-адреса
  • И проверяем статус джейла:
# fail2ban-client status jail_name
статус джейла
  • На картинке виден заблокированный ip-адрес.
  • Если нужно снять блокировку до истечения срока указанного в джейле, то вводим команду:
# fail2ban-client set jail_name unbanip 1.1.1.1

Так же как и в случае с блокировкой, вместо jail_name пишем имя джейла, а вместо 1.1.1.1 пишем ip-адрес, с которого нужно снять блокировку.

снятие блокировки ip-адреса
  • Проверяем статус джейла:
# fail2ban-client status jail_name
блокировка ip-адреса снята
  • На картинке заблокированных ip-адресов нет.

В интернете можно найти много вариантов создания, и настройки, фильтров и джейлов, под любые нужды.

Сегодня мы рассмотрели тему: «Установка и пример настройки Fail2ban». Произвели установку Fail2ban, и сделали обзор настроек.

Надеюсь статья была вам полезна. До встречи в новых статьях.

С уважением, Андрей Бондаренко.


Видео на тему «Установка и пример настройки Fail2ban»: