Установка и пример настройки Fail2ban

Здравствуйте, уважаемые читатели. Сегодня тема статьи: "Установка и пример настройки Fail2ban". Утилита Fail2ban, используется для контроля доступа к средствам аутентификации, путём проверки лог-файлов доступа.
При помощи утилиты Fail2ban, можно настроить контроль доступа к любым службам. В конфигурационном файле утилиты, уже присутствуют шаблоны для многих служб и сервисов. Кроме того, можно вручную конфигурировать утилиту для своих нужд.
Установка Fail2ban
- Установку и настройку, будем производить в операционной системе CentOS 7.
- Пакет Fail2ban отсутствует в базовой комплектации ОС, поэтому нужно подключить репозиторий epel-release:
# yum install epel-release

- После подключения репозитория, можно установить и саму Fail2ban:
# yum install fail2ban

- Когда утилита будет установлена, нужно её запустить, и добавить в автозагрузку:
# systemctl start fail2ban
# systemctl enable fail2ban

Файлы конфигурации Fail2ban
- Файлы Fail2ban в системе, находятся по адресу /etc/fail2ban/.
- Шаблон конфигурационного файла утилиты, это файл jail.conf:

- Можно производить конфигурацию и в этом файле (Fail2ban примет настройки), но при обновлении утилиты, этот файл будет стёрт, и все Ваши настройки будут утеряны.
- Поэтому нужно создать файл jail.local, путём копирования файла jail.conf, и производить настройки уже в файле jail.local.
# cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

- При считывании конфигурации, утилита будет считать настройки в файле jail.local приоритетными.

- После установки и старта утилиты, начинают работать настройки по умолчанию, которые находятся в секции [DEFAULT].
- Ниже, находится список наборов правил для служб, внесённых в конфигурацию утилиты по умолчанию. Эти наборы называются JAILS.
- Каждый jail обрамлён в квадратные кавычки, и имеет название схожее с поддерживаемой службой.

JAILS в Fail2ban
- Для проверки количества активных джейлов, нужно ввести команду:
# fail2ban-client status

- На картинке нет активных джейлов.
- В пару к каждому джейлу, по умолчанию есть файл фильтр, по которому происходит проверка на предмет нарушения.
- Файлы фильтры находятся в директории /etc/fail2ban/filter.d, и имеют одинаковое название с сопряжённым джейлом.

- Принцип конфигурации джейлов в целом схож, и состоит из нескольких строчек:
- Активация джейла.
- Имя фильтра.
- Действие при нарушении.
- Лог-файл для контроля.
- Период времени в секундах, в течение которого не должно быть превышено число попыток доступа.
- Разрешённое число попыток доступа в установленный период.
- Время блокировки в секундах, в случае нарушения.
- Вот пример настройки для доступа по ssh-протоколу, которому соответствует джейл [sshd].
enabled = true
filter = sshd
action = iptables[name=SSH, port=22, protocol=tcp]
logpath = %(sshd_log)s
findtime = 600
maxretry = 3
bantime = 1200
Из примера следует:
- Джейл активен.
- Имя фильтра – sshd.
- Действие - блокировка брандмауэром на порту 22.
- Лог-файл для контроля.
- Период времени – 600 секунд.
- Разрешённое число попыток – 3 раза.
- Время блокировки в случае превышения – 1200 секунд.
- В файле jail.local, находим секцию [sshd], и удалив всё не закомментированное, вставляем настройки представленные выше.
![настройка джейла [sshd]](https://aeb-blog.ru/wp-content/uploads/2019/10/fileban-10.gif)
- Чтобы настройки вступили в силу, нужно перезапустить Fail2ban:
# systemctl restart 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-адрес, который нужно заблокировать.

- И проверяем статус джейла:
# fail2ban-client status jail_name

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

- Проверяем статус джейла:
# fail2ban-client status jail_name

- На картинке заблокированных ip-адресов нет.
В интернете можно найти много вариантов создания, и настройки, фильтров и джейлов, под любые нужды.
Сегодня мы рассмотрели тему: "Установка и пример настройки Fail2ban". Произвели установку Fail2ban, и сделали обзор настроек.
Надеюсь статья была вам полезна. До встречи в новых статьях.
✍
С уважением, Андрей Бондаренко.
Видео на тему "Установка и пример настройки Fail2ban":

WMZ-кошелёк = Z667041230317
«Linux»