в этих сообщениях asterisk пишет свой внешний IP адрес. Поэтому банить его нет смысла.
здесь предложили банить на основе анализа содержимого пакета с помощью iptables
здесь описан вариант с исправлением модуля asterisk чтобы в логах появилась информация с IP адресом взломщика
При попытке взлома могут появляться вот такие сообщения в full:
chan_sip.c: Sending fake auth rejection for device 5550000<sip:5550000@[external_ip]>;tag=71b060d8″.
Сейчас не видно с какого IP адреса идет атака, необходимо пересобрать астериск со следующими параметрами: Открываем исходники астериска файл /../asterisk-/channels/chan_sip.c ищем строки:
1 | ast_log(LOG_NOTICE, "Sending fake auth rejection for device %s\n", get_header(req, "From")); |
В окне поиска вводим: Sending fake auth rejection for device
Меняем строку:
1 | ast_log(LOG_NOTICE, "Sending fake auth rejection for device %s\n", get_header(req, "From")); |
на:
1 | ast_log(LOG_NOTICE, "Sending fake auth rejection for device %s [IP: %s]\n", get_header(req, "From"), ast_sockaddr_stringify(addr)); |
после этого должен отображаться Ip адрес атакующего.
Sending fake auth rejection for device 3050<sip:3050@[external_ip]>;tag=fc23ea52 [IP: 166.78.25.181:5071]
если подмены и попытки загрузить модуль командой module load chan_sip.so получаем ошибку “Module was not compiled with the same compile-time options as this version of Asterisk” значит надо воспользоваться этим решением:
надо подменить в файле include/asterisk/buildopts.h значение в строчке
#define AST_BUILDOPT_SUM “ac1f6a56484a8820659555499174e588”
на свой код AST_BUILDOPT_SUM. В Ubuntu узнать его можно /usr/include/asterisk/buildopts.h из пакета asterisk-dev
после этого скомпилированный новый модуль принимается астериском.
и теперь можно использовать fail2ban с правилом
1 | NOTICE.* .*: Sending fake auth rejection for device .*\<sip:.*@.*\>;tag=.* \[IP: <HOST>:.*\] |
Все описанное выше было проверено на 1.8.7 и 1.8.13