First time here? Check out the FAQ!

Пожалуйста, войдите здесь. Часто задаваемые вопросы О нас
Задайте Ваш вопрос

Решил приделать автоматическую банилку левых звонков

0

Гостей запрещать не хочу, поэтому озаботился банилкой. Раньше банил только за сип флуд (по количеству пакетов в минуту), но решил добраться и до остальных.

Дефолтный контекст для 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:.*

спросил Sep 28 '13

borispr Gravatar borispr
281 2 5

обновил Sep 28 '13

Comments

а если клиент за натом? всю организацию забанит из-за одного? все эти банилки - от лукавого из-за возможность false positive...

octopas (Sep 28 '13)edit

даже если астериск за натом, то пакеты все равно приходят с внешних адресов это во-первых, во-вторых ничто не мешает в fail2ban прописать исключения адресов

borispr (Sep 28 '13)edit

2 Ответа

1
exten =_X.,1,System(/usr/sbin/fail2ban-client  set fail2ban-sip banip ${CHANNEL(peerip)})

и не недо все ваши заморочки

ссылка удалить спам редактировать

ответил Sep 28 '13

meral Gravatar meral flag of Ukraine
23347 24 20 177
http://pro-sip.net/

Comments

О! ${CHANNEL(peerip)} искал, но не нашел переменную, поэтому пришлось так хитро получать peerip. Насчет добавления через fial2ban-client я думал, но решил, что хочу традиционным способом, чтоб в общем логе было и мыло чтоб прислал

borispr (Sep 28 '13)edit

кстати, в 1.4 ${CHANNEL(peerip)} не работает

borispr (Sep 28 '13)edit

открою вам секрет. а астериск встроенный хелп. вызываетая вот так asterisk -rx "core show function CHANNEL" или core show application MEETME

meral (Sep 28 '13)edit
0

Строки:

# 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

избавят от большинства юных хакеров, а не юных Вы своими методами не остановите.

ссылка удалить спам редактировать

ответил Oct 22 '13

tma Gravatar tma
570 2 5
http://telecomtechnology....

Ваш ответ

Please start posting your answer anonymously - your answer will be saved within the current session and published after you log in or create a new account. Please try to give a substantial answer, for discussions, please use comments and please do remember to vote (after you log in)!
[скрыть предварительный просмотр]

Закладки и информация

Добавить закладку
2 закладки

подписаться на rss ленту новостей

Статистика

Задан: Sep 28 '13

Просмотрен: 3,536 раз

Обновлен: Oct 23 '13

Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией GNU GPL.