Гостей запрещать не хочу, поэтому озаботился банилкой. Раньше банил только за сип флуд (по количеству пакетов в минуту), но решил добраться и до остальных.
Дефолтный контекст для SIP - from-external, звонки на "правильный" did идут дальше, а остальные банить! :)
И, конечно же, звонки через транки не должны попадать в этот контекст!
[from-external]
exten => 1111111,1,Goto(ext-did,1111111,1)
exten => _X.,1,Ringing
exten => _X.,n,System(/var/lib/asterisk/bin/sipban.sh ${CHANNEL} ${EXTEN})
exten => _X.,n,Wait(900)
exten => _X.,n,Hangup
Ringing и Wait(900) для удобства отладки. Для работы ringing можно убрать и сделать Wait(10). ${EXTEN} передается просто для инфы, он в логе присутствовать будет.
скрипт /var/lib/asterisk/sipban.sh
channels=`asterisk -rx "sip show channels"|awk '/Rx: INVITE/&&/<guest>/'`
oldIFS=$IFS
IFS=$'\n'
for line in $channels
do
peer=`echo $line|awk -F' ' '{print($1)}'`
chan_id=`echo $line|awk -F' ' '{print($3)}'`
chan=`asterisk -rx "sip show channel $chan_id"|grep 'Owner channel ID'|awk '{print($4)}'`
if [[ "$chan" == "$1" ]]
then
logger -t sipguest "peer:$peer channel:$chan extension:$2"
break
fi
done
IFS=$oldIFS
Если при выводе каналов "sip show peers" в конце не выдается локальный пир, то нужно заменить в первой строке на аsterisk -rx "sip show channels"|grep 'Rx: INVITE'
Скрипт кидает в /var/log/messages строку
Sep 28 12:55:42 hostname sipguest: peer:192.187.115.66 channel:SIP/xx.xx.xx.xx-000000c0 extension:00441904891101
А дальше пусть с этим fail2ban разбирается.
Строка разбора для fail2ban:
.* sipguest: peer:<host> channel:SIP.* extension:.*
exten =_X.,1,System(/usr/sbin/fail2ban-client set fail2ban-sip banip ${CHANNEL(peerip)})
и не недо все ваши заморочки
Строки:
# friendly-scanner
-I INPUT -p udp --dport 5060 -m string --string "friendly-scanner" --algo bm -j REJECT --reject-with icmp-host-unreachable
# sipvicious
-I INPUT -p udp --dport 5060 -m string --string "sipvicious" --algo bm -j REJECT --reject-with icmp-host-unreachable
# sipcli
-I INPUT -p udp --dport 5060 -m string --string "sipcli/" --algo bm -j REJECT --reject-with icmp-host-unreachable
избавят от большинства юных хакеров, а не юных Вы своими методами не остановите.
Задан: Sep 28 '13
Просмотрен: 3,536 раз
Обновлен: Oct 23 '13
односторонняя слышимость при исходящих
Asterisk, параллельно городская линия и интернет
Sending fake auth rejection for device
Переменная или функция общего количества звонков
Самостоятельно меняется админский пароль
Фильтрация входящих на Catch All по IP
Вопрос для ГУРУ, создание дополнительных каналов при переводе звонка на удержание
Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании
Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией
GNU GPL.
а если клиент за натом? всю организацию забанит из-за одного? все эти банилки - от лукавого из-за возможность false positive...
octopas (Sep 28 '13)editдаже если астериск за натом, то пакеты все равно приходят с внешних адресов это во-первых, во-вторых ничто не мешает в fail2ban прописать исключения адресов
borispr (Sep 28 '13)edit