ЛР 2.7 - защита от brute force

Размещение Asterisk на публичном ip в течение нескольких минут\часов будет обнаружено ботнетами и начнется активный перебор паролей. Решением может стать автоматическая блокировка источников после заданного количества неудачных попыток авторизации. Для решения этой задачи будем использовать fail2ban.

  1. Установите fail2ban и iptables
    apt install fail2ban iptables
  2. Закомментируйте секцию [asterisk] в конфигурационном файле /etc/fail2ban/jail.conf.
  3. Создайте конфиг /etc/fail2ban/jail.local.
[DEFAULT]
maxretry = 3
findtime = 1h
bantime = 1h
action = iptables-ipset

[asterisk]
enabled = true
backend = polling
filter = asterisk
action = iptables-allports[name=asterisk, protocol=all]

## для Asterisk 13
logpath = /var/log/asterisk/messages 

## для Asterisk 20
## logpath = /var/log/asterisk/messages.log 

## Исключение из бана
## ignoreip = 10.20.30.13

Возможные варианты указания значения продолжительности - секунды, минуты (m), часы (h), дни (d)

  1. Сравните регулярные выражения файла c правилами анализа логов Asterisk cat /etc/fail2ban/filter.d/asterisk.conf с сообщениями
    о неверном пароле tail -f /var/log/asterisk/messages
  2. Перезапустите демон systemctl restart fail2ban и убедитесь, что фильтр asterisk работает fail2ban-client status asterisk

Свежие версии fail2ban могут не запускаться с ошибкой про отсутствие директивы allowipv6. Ее необходимо раскомментировать в /etc/fail2ban/fail2ban.conf.

  1. Измените пароль учетки на неверный и совершите несколько попыток регистрации, убедитесь, что ip попал в бан.
  2. Для снятия бана введите fail2ban-client unban 10.X.Y.Z (замените X.Y.Z).