16 Дек
2011
Рубрика: Asterisk, VoIP
Автор:    3 комментария

Защита Asterisk на практике

В прошлой статье уже затрагивалась проблема безопасности asterisk, но в более организационном контексте. Многие недооценивают важность этого вопроса, но рано или поздно все равно придется позаботится о защите. Так как есть много фактов взлома и нанесения ущерба в значительных суммах. Чтоб обеспечить базовую защиту asterisk необходимо пройтись по следующим пунктам:

1) Всегда менять стандартные пароли на всех устройствах.

2) Использовать измененный порт если есть возможность, это усложнит задачу хакеров.
Чтоб это сделать нужно отредактировать файл sip.conf, в разделе [general] изменить порт 5060 на другой свободны например 5074
bindport=5060 меняем на bindport=5074

3) Отключаем guest-звонки (звонки без регистрации) если в них нет необходимости, также редактируем sip.conf, в разделе [general] меняем allowguest=yes на allowguest=no

4) Отключаем ошибку о неверном пароле. По стандарту asterisk при попытке подбора пароля для существующего аккаунта выдает ошибку «неверный пароль», а для несуществующего выдает совсем другую ошибку.
С помощью специального софта хакер сможет бистро перебрать все номера и пароли к существующим аккаунтам. Что бы помешать этому снова редактируем sip.conf, alwaysauthreject=no меняем на alwaysauthreject=yes. Подробнее о защите от подбора пиров.

5) Используем сложные пароли.
Желательно применять длинные пароли с комбинацией больших и маленьких букв + цифры например secret=iGT27fGi23

6) Если аккаунты подключаются не из интернета то закрываем все ненужные ip, в каждом аккаунте прописиваем:

[1111]

deny=0.0.0.0/0.0.0.0
permit=182.178.1.1/24
permit=182.178.2.1/24

или же в конце раздела [general] просто закрываем неиспользованные сети

permit=182.178.1.0/255.255.255.0
permit=182.178.2.0/255.255.255.0
permit=182.178.3.0/255.255.255.0
deny=0.0.0.0/0.0.0.0

Asterisk не будет принимать подключения с этих адресов.

7) Выставляем лимит одновременных звонков с одного аккаунта. Воспользуемся скриптом вместо устаревшего call-limit:

sip.conf

[1111]

context=limitline3

extensions.conf

(ограничение исходящих звонков, максимум 3 одновременных звонка)

[limitline3]
exten => _89XXXX,1,set(GROUP()=${CALLERIDNUM:-6})
exten => _89XXXX,2,gotoif($[ ${GROUP_COUNT()} > 3 ]?100:10)
exten => _89XXXX,10,Dial(ZAP/g1/${EXTEN},60)
exten => _89XXXX,n,Hangup
exten => _89XXXX,100,Busy

(ограничение входящих звонков, максимум 3 одновременных звонка)

exten => 893456,1,set(GROUP()=${EXTEN})
exten => 893456,2,gotoif($[ ${GROUP_COUNT()} > 3 ]?99:10)
exten => 893456,10,Dial(SIP/${EXTEN}@182.178.1.1)
exten => 893456,99,HangUp

8)Детально прописываем dial-plan,

;Службы
exten => _1[236]X,1, Dial(SIP/${EXTEN},60)
exten => _1[236]X,n, Hangup
;Город
exten => _89XXXXX,1, Dial(SIP/${EXTEN},60)
exten => _89XXXXX,n, Hangup
exten => _89XXXXX,1, Dial(SIP/${EXTEN},60)
exten => _89XXXXX,n, Hangup
exten => _89XXXXX,1, Dial(SIP/${EXTEN},60)
exten => _89XXXXX,n, Hangup
;Межгород /Мобильные
exten => _8XXXXXXX,1, Dial(SIP/${EXTEN},60)
exten => _8XXXXXXX,n, Hangup

нет необходимости в международной связи — не прописывайте ее… Еще одним важным аспектом зашиты является использование утилит Iptables и Fail2ban.

3 комментария

  • А по какой причине в п. 7 сказано, что call-limit — устаревший параметр?

    • По причине того что в версии 1.6.x Asterisk:
      — Добавлен новый параметр — «busylevel», для установки количества вызовов, когда asterisk будет считать устройство занятым, для отделения этого условия занятости от параметра «call-limit». Это значение также было добавлено в функцию плана набора SIPPEER.
      — Новый параметр — «callcounter» (Для секций global/peer/user), включает счетчик вызовов, который необходим для лучшего определения статуса клиента, что используется при подписке на SIP оповещения о состоянии екстеншенов. (Для этих целей ранее использовался параметр Call-Limit).

      И вообще как-то непонятно он работает, ну не люблю я его =)

      • Во как. Спасибо, упустил этот момент, надо повнимательнее вчитаться.

        Кстати, в своих решениях используем такие же методы защиты, плюс ещё несколько системных надстроек, так что всё верно написано… плюсую. 8)

Что вы думаете об этом?