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

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

  1. Установите fail2ban и iptables
    apt install fail2ban iptables
  2. Отредактируйте секцию [asterisk] в конфигурационный файл /etc/fail2ban/jail.conf:
[asterisk]
enabled  = true
port     = 5060,5061
action_  = %(default/action_)s[name=%(__name__)s-tcp, protocol="tcp"]
           %(default/action_)s[name=%(__name__)s-udp, protocol="udp"]
logpath  = /var/log/asterisk/messages ## для asterisk 13
# logpath  = /var/log/asterisk/messages.log ## для asterisk 20
maxretry = 3 
#findtime = 21600
#bantime = 86400

findtime и bantime определены глобально, но их можно задать для каждой секции отдельно. В примере время указано в секундах. Возможные варианты - минуты (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 (в fail2ban.conf) и отсутствие конфигурации ssh (в jail.conf). Их следует поправить.

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