Home »

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

[Решено] Как заблокировать спам invite запросов в asterisk

  

0
Topic starter

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

[2020-09-15 0017] WARNING[49991] chan_sip.c: Timeout on 1195226067-1021043688-1569712822 on non-critical invite transaction.
[2020-09-15 0030] WARNING[49991] chan_sip.c: Timeout on 109286858-279743962-108117291 on non-critical invite transaction.
[2020-09-15 0052] WARNING[49991] chan_sip.c: Timeout on 279955036-536809874-1187128291 on non-critical invite transaction.

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

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

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

Тема была редактированна 2 года назад от Zerox
1 Ответ
0
Topic starter

Самый простой способ в лоб. Проверяем 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 на исполнение каждую минуту.  

Используешь Telegram? Подпишись на канал автора →
This is default text for notification bar