Защита Asterisk от брутфорса и SIP-сканирования: Fail2ban, iptables и ACL
- Тысячи попыток подбора паролей к экстеншенам в журнале Asterisk (
Wrong password / Authentication failed). - Внезапный спам исходящими международными звонками (Fraud / Toll Fraud).
- Высокая утилизация полосы пропускания и зависание SIP-стека из-за постоянных запросов
OPTIONS / REGISTER. - Срабатывание сканеров SIPVicious (User-Agent: friendly-scanner / sundayddr).
1. Настройка логирования безопасности в logger.conf
В файле /etc/asterisk/logger.conf включите журнал security:
[logfiles]
security => security
messages => notice,warning,errorasterisk -rx "logger reload"2. Конфигурация фильтра и джейла Fail2ban
Создайте фильтр /etc/fail2ban/filter.d/asterisk-custom.conf:
[INCLUDES]
before = common.conf
[Definition]
_daemon = asterisk
failregex = ^(%(__prefix_line)s|\$$\$$\s*)SECURITY.*\$$C-[0-9a-f]*\$$: res_security_log.c:\\d+ security_event: SecurityEvent="(FailedACL|InvalidAccountID|ChallengeResponseFailed|InvalidPassword)".*RemoteAddress="IPV[46]/(UDP|TCP|TLS)/<HOST>/[0-9]+".*$\n ^(%(__prefix_line)s|\$$\$$\s*)(WARNING|NOTICE).*\$$C-[0-9a-f]*\$$.*<HOST>: Wrong password\n ^(%(__prefix_line)s|\$$\$$\s*)(WARNING|NOTICE).*\$$C-[0-9a-f]*\$$.*<HOST>: No matching endpoint found\nignoreregex =Добавьте джейл в /etc/fail2ban/jail.d/asterisk.local:
[asterisk]
enabled = true
filter = asterisk-custom
logpath = /var/log/asterisk/security
/var/log/asterisk/messages
maxretry = 4
findtime = 300
bantime = 86400
action = iptables-allports[name=ASTERISK, protocol=all]systemctl restart fail2ban && fail2ban-client status asterisk3. Аппаратная фильтрация через Iptables / Raw Table
Блокировка популярных SIP-сканеров по сигнатуре User-Agent на уровне ядра Linux:
iptables -I INPUT 1 -p udp --dport 5060 -m string --string "friendly-scanner" --algo bm -j DROP
iptables -I INPUT 1 -p udp --dport 5060 -m string --string "sipvicious" --algo bm -j DROP
iptables -I INPUT 1 -p udp --dport 5060 -m string --string "sundayddr" --algo bm -j DROP
# Защита от флуда новыми SIP-пакетами (Rate Limit)
iptables -A INPUT -p udp --dport 5060 -m hashlimit --hashlimit-name SIP_FLOOD --hashlimit-above 20/sec --hashlimit-burst 40 --hashlimit-mode srcip -j DROP Частые вопросы (FAQ)
Как защитить Asterisk от перебора номеров (User Enumeration)?
В секции [endpoint] PJSIP установите параметр match_auth_username=yes и never_give_up=yes, а в global настройках включите user_eq_phone=no. Asterisk перестанет возвращать разные коды ошибок для существующих и несуществующих пользователей.
Помогает ли смена стандартного порта 5060 на нестандартный?
Да, перенос SIP-сигнализации на нестандартный порт (например, UDP 52180) отсекает 99% автоматизированных ботнетов, сканирующих только стандартные порты 5060/5061.
Как ограничить доступ к PJSIP эндпоинтам только с определенных IP-адресов?
Используйте встроенные списки контроля доступа (ACL). Создайте объект [acl_office] type=acl permit=192.168.1.0/24 и привяжите его к эндпоинту: acl=acl_office.
Что такое Toll Fraud в Asterisk?
Toll Fraud — это несанкционированное совершение дорогостоящих международных вызовов через скомпрометированную PBX. Всегда изолируйте контексты внутренних абонентов от контекстов исходящей международной связи.