Home »

Как заблокировать с...
 

Как заблокировать спам invite запросов в asterisk  

  

0

Если asterisk открыт для доступа из инетрнета, его постоянно спамят запросами на подбор пароля. В логах это отражается подобными записями:

[2020-09-15 00:08:17] WARNING[49991] chan_sip.c: Timeout on 1195226067-1021043688-1569712822 on non-critical invite transaction.
[2020-09-15 00:08:30] WARNING[49991] chan_sip.c: Timeout on 109286858-279743962-108117291 on non-critical invite transaction.
[2020-09-15 00:08:52] WARNING[49991] chan_sip.c: Timeout on 279955036-536809874-1187128291 on non-critical invite transaction.

Если непосредственно неудачные попытки авторизации отражаются в логах и успешно банятся, то простые invite запросы в логах не видны. Посмотреть их можно так:

# rasterisk -rx "sip show channels" | grep INVITE

Иногда их бывает очень много и это нагружает сервер. Как с ними бороться?

Тема была редактированна 1 месяц назад от Zerox
1 Ответ
0

Самый простой способ в лоб. Проверяем ip адреса с количеством ivite запросов больше трех:

# rasterisk -rx "sip show channels" | grep INVITE | awk '{print $1}' | sort -n | uniq -c | sort -n | awk '{if ($1 > 3 ) print $2}'

Если команда вывела только список ip адресов, значит все в порядке. Делаем простой скрипт для автоматического блока этих ip с помощью fail2ban.

#!/bin/bash

ips=`rasterisk -rx "sip show channels" | grep INVITE | awk '{print $1}' | sort -n | uniq -c | sort -n | awk '{if ($1 > 2 ) print $2}'`

if [[ -z $ips ]]; then 
    echo "pusto"
else 
    for i in $ips
	do fail2ban-client -vvv set asterisk banip $i
    done
fi

Добавляем этот скурипт в cron на исполнение каждую минуту.