Asterisk: борьба с Sending fake auth rejection for device 5050;tag=0aad9031

в этих сообщениях 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