Настройка Fail2Ban для Asterisk

Используя Asterisk внутри организации без проброса портов в Интернет обычно хватает настройки брендмауэра. Что делать если вы хотите чтобы сотрудники подключались удаленно? Правильно, открываете порт 5060 наружу во всеобщий доступ. Буквально через несколько минут после этого в логах можно лицезреть кучу попыток подбора пароля. Защититься от этого поможет Fail2Ban. Рассмотрим как происходит настройка Fail2Ban для Asterisk.

Fail2Ban – это ПО предназначено для защиты системы от brute-force атак. На основе журналов программ fail2ban блокирует доступ на определенное время для зловредного IP адреса. Если этот адрес и после разблокировки продолжит пакостить, его можно заблокировать навсегда. Вместе с программой устанавливается множество фильтров (не только для Asterisk) для популярных программ. Среди них: apache, dovecot, drupal, exim, freeswitch, nginx, postfix и многие другие. Если для вашей программы нет готового фильтра, его можно написать самостоятельно.

Настраивать fail2ban я буду на Asterisk 18 установленной в ОС Centos 8. Перед началом установки необходимо подключить EPEL репозиторий. Он у вас скорее всего уже подключен но проверить не помешает.

Подключение репозитория EPEL
dnf install epel-release
Установка Fail2Ban

Устанавливать буду в Centos 8 с помощью менеджера пакетов dnf. В предыдущих версиях Centos используйте менеджер пакетов yum

dnf install fail2ban
dnf install fail2ban

После установки в каталоге /etc/fail2ban будет такая структура конфигурационных файлов

  • /etc/fail2ban/jail.conf
  • /etc/fail2ban/jail.d/*.conf
  • /etc/fail2ban/jail.local
  • /etc/fail2ban/jail.d/*.local

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

Настройка защиты Asterisk в Fail2Ban

Чтобы не изменять стандартный файл настроек jail.conf создадим jail.local с необходимыми параметрами.

Создание файла конфигурации jail.local

nano /etc/fail2ban/jail.local

Добавим в него следующие настройки

[DEFAULT]
maxretry = 4
findtime = 10
bantime = 720
action = firewallcmd-ipset
ignoreip = 127.0.0.1/8

[asterisk]
enabled = true
filter = asterisk
action = iptables-allports[name=asterisk, protocol=all]
logpath = /var/log/asterisk/fail2ban

Секция [DEFAULT] – описывает общие параметры для всех jail (под каждый сервис своя тюрьма :)). Опишу указанные параметры

  • maxretry – количество неудачных запросов в течение времени (параметр findtime) после которых IP адрес будет заблокирован
  • findtime – промежуток времени за который будут считаться неудачные запросы, я указал 10 секунд для теста. Обычно ставят 300 и больше
  • bantime – время на которое будет заблокирован IP превысивший указанные выше параметры
  • action – действие которое будет выполняться при достижении параметра maxretry
  • ignoreip – список IP адресов которые не будут блокироваться (т.н. белый список)

По умолчанию все время указывается в секундах, но можно указать конкретное время: 1m– 1 минута, 3h – 3 часа, 2d – 2 дня

Далее следуют секции с описанием конкретных jail. Их может быть несколько. Рассмотрим параметры тюрьмы [asterisk]

  • enabled – состояние секции (вкл/выкл)
  • filter – название фильтра для поиска по регулярным выражениям. Фильтры находятся по пути /etc/fail2ban/filter.d/
  • action – выполняемое действие при достижении лимита запросов за отведенное время
  • logpath – путь к файлу с журналами в которых fail2ban будет искать злодеев пытающихся взломать вашу систему

В конфиге я прописал что если в течение 10 секунд будет 4 и более неудачных запроса (из тех что фильтруются), то адрес будет заблокирован на 720 секунд. Подсеть 127.0.0.1/8 находится в белом списке. Для фильтрации я указал отдельный файл журнала для наглядности.

Добавление файла журнала Asterisk для мониторинга fail2ban

Я добавляю еще один файл для логирования событий Asterisk, в рабочей среде можете использовать файлы журналов которые уже настроены по умолчанию, например messages

Откроем файл /etc/asterisk/logger.conf

nano /etc/asterisk/logger.conf

В секцию [logfiles] добавляем строку

fail2ban => notice

Перезапустим asterisk

systemctl restart asterisk.service

После перезапуска сервиса будет создан новый файл по пути /var/log/asterisk/fail2ban куда будут сохранятся все события с детализацией уровня notice

Запуск сервиса fail2ban

Запустим сервис для проверки что все установлено верно и запускается

systemctl start fail2ban
Добавление fail2ban в автозагрузку

После того как мы убедились что все запускается добавим сервис в автозагрузку при старте системы

systemctl enable fail2ban
Просмотр текущего статуса

Проверить текущее состояние сервиса fail2ban можно так

systemctl status fail2ban
systemctl status fail2ban
Мониторинг работы fail2ban

Для мониторинга активности fail2ban используется утитилита fail2ban-client. Введите fail2ban-client в консоли чтобы посмотреть список доступных параметров.

Просмотр статуса всех настроенных jail

fail2ban-client status
fail2ban-client status

Увидеть более детальную статистику по конкретной тюрьме можно указав её название

fail2ban-client status asterisk
fail2ban-client status asterisk

В случае изменения настроек в файл jail.local их необходимо перечитать, делается это командой

fail2ban-client reload
Проверка работы

Проверим что все настройки верны и fail2ban блокирует подборку паролей. Для этого я запущу софтфон и намеренно буду вводить неправильный пароль. Спустя некоторое время меня забанили, что называется доигрался 🙂

fail2ban-client status asterisk
fail2ban-client status asterisk

Давайте окунемся в гущу событий и посмотрим лог программы fail2ban

cat /var/log/fail2ban.log
fail2ban.log

По записям видно что мена заблокировали в 14:44 и разблокировали 14:56. Ровно 12 минут или 720 секунд, как раз то что мы указывали в файле jail.local

Снятие блокировки

Если нет времени ждать, то можно снять блокировку вручную

fail2ban-client set sshd unbanip 172.16.169.161

Рассмотренная в статье настройка Fail2Ban для Asterisk не представляет особой сложности. Я рассмотрел основные моменты, но как всегда есть возможности для более тонкой настройки. Инструмент очень обширный, читайте man там много интересного :). Спасибо за внимание и до новых встреч.

Рекомендую к просмотру видео по настройке Fail2Ban для Asterisk

Поделиться:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *