Защита FreePBX и Asterisk от перебора паролей: настройка Fail2Ban
Как понять, что вашу IP-АТС прямо сейчас атакуют?
IP-АТС, выставленная в интернет со стандартным SIP-портом 5060, подвергается атакам сканеров (Friendly-Scanner, SIPvicious) каждые несколько секунд. Злоумышленники пытаются подобрать пароли к учетным записям сотрудников.
Признаки начавшегося взлома в логах Asterisk
| Строка в логе (/var/log/asterisk/full) | Что это значит |
|---|---|
Registration from '<sip:101@ip>' failed for '198.51.100.24' - Wrong password | Прямой перебор пароля к номеру 101 |
No matching endpoint found for '185.220.101.5' | Сканирование АТС на наличие уязвимых номеров |
Call from 'friendly-scanner' rejected because extension not found | Работа автоматизированного хакерского скрипта |
Пошаговая установка и настройка Fail2Ban для Asterisk
Утилита Fail2Ban постоянно читает системный лог Asterisk. Как только с одного IP-адреса фиксируется 3-5 неудачных попыток ввода пароля, этот адрес мгновенно блокируется на уровне фаервола iptables на сутки.
Шаг 1: Установка пакета (для Debian/Ubuntu)
sudo apt update && sudo apt install fail2ban iptables -yШаг 2: Создание правила для фильтрации логов Asterisk
Создайте конфигурационный файл фильтра /etc/fail2ban/filter.d/asterisk.conf:
[Definition]
failregex = Registration from '.*' failed for '<HOST>:.*' - Wrong password
Registration from '.*' failed for '<HOST>:.*' - No matching peer found
Registration from '.*' failed for '<HOST>:.*' - Username/auth name mismatch
No matching endpoint found for '<HOST>:.*'
ignoreregex =Шаг 3: Активация тюрьмы (Jail) в jail.local
Откройте файл /etc/fail2ban/jail.local и добавьте секцию защиты телефонии:
[asterisk]
enabled = true
filter = asterisk
port = 5060,5061,5160
protocol = all
logpath = /var/log/asterisk/full
maxretry = 4
findtime = 600
bantime = 86400(Параметр bantime = 86400 заблокирует атакующего ровно на 24 часа).
Шаг 4: Перезапуск и проверка статуса
# Перезапускаем службу:
sudo systemctl restart fail2ban
# Проверяем, сколько нарушителей уже поймано:
sudo fail2ban-client status asteriskСовет: Обязательно внесите доверенные IP-адреса своих офисов и филиалов в строку ignoreip = 127.0.0.1/8 192.168.1.0/24 ВАШ_ОФИСНЫЙ_IP в файле jail.local, чтобы сотрудники случайно не заблокировали себя при неверном вводе пароля.
Частые вопросы (FAQ)
Как вручную разблокировать IP-адрес своего сотрудника?
Выполните команду: sudo fail2ban-client set asterisk unbanip IP_АДРЕС.
Поможет ли смена стандартного SIP-порта 5060 на другой?
Да, смена внешнего порта (например, на 51820 или 47823) отсекает 95% примитивных автоматических ботнетов, которые сканируют интернет только по стандартным портам 5060/5061.
Что такое параметр alwaysauthreject в Asterisk?
Этот параметр в sip.conf заставляет сервер всегда отвечать одинаковым отказом и на неверный пароль, и на несуществующий логин, не давая хакерам понять, какие реальные номера есть на вашей АТС.
Почему Fail2Ban не блокирует атаки, хотя в логах есть ошибки?
Проверьте правильность пути к файлу логов в параметре logpath и убедитесь, что в logger.conf для файла /var/log/asterisk/full включен флаг 'security' или 'notice'.