Безопасность VOIP серверов

Материал из wiki.sipnet.ru
Перейти к: навигация, поиск

В последнее время участились атаки на VOIP сервера.

Данный материал должен помочь начинающим администраторам обезопасить себя и свои денежные средства от потерь.

Итак, вы поставили сервер с какой-либо PBX.

Если ваш сервер доступен из Интернет, то вы должны подумать о его безопасности.

Ниже перечислены общеизвестные истины:

1. Никогда не используйте пароли, которые равны логину, например, логин admin, пароль: admin

2. Никогда не используйте легкие пароли: qwerty, rfvtgb, edcbhu, p@ssw0rd, ....

3. Если на сервере установлен какой-либо http сервер с Web-интерфейсом, доступным из Интернет, желательно ограничить доступ к нему, например при помощи .htaccess

4. Позаботьтесь о безопасности доступа по ssh(например в CentOS настройки делаются в файле /etc/ssh/sshd_config): отключите доступ root(PermitRootLogin no), измените порт по умолчанию с 22 на какой-либо другой, например 3589(Port 3589), ограничьте доступ по имени пользователя(AllowUsers Vasya Petya). Подробнее по ссылке

5. Eсли вы пользовались какой-либо инструкцией по установке, в которой для примера указаны пароли, обязательно их измените.

6. Многие PBX, например FreePBX, устанавливаются с паролями по умолчанию. Обязательно их измените.

7. Обязательно просматривайте серверные логи.

8. Если используете дистрибутивы на базе Asterisk: FreePBX, Elastix, Trixbox, .... следите за их обновлениями.

9. По возможности не используйте стандартные порты(SSH 22, http 80, sip 5060). Все сканнеры в первую очередь сканируют стандартные порты.


Полезные советы по настройке Asterisk с форума:

В sip.conf в секции [general] прописать

alwaysauthreject = yes

Это усложнит поиск активных аккаунтов для последующего подбора паролей.

Для телефонов во внутренней локальной сети сделать ограничение по IP-адресу, указав в секции соответствующего аккаунта что-нибудь типа:

deny=0.0.0.0/0.0.0.0
permit=192.168.0.0/255.255.0.0

Для телефонов подключенных со стороны интернета использовать другой контекст в котором сильно ограничены междугородние направления.

И вообще, в extensions.conf желательно прописывать только те направления по которым вы действительно звоните, например:

Россия
exten => _7XXXXXXXXXX,1,Dial(SIP/sipnet/${EXTEN},240,S(3600))

Не прописывайте туда все направления сразу по шаблону _X. !!!


Несколько примеров атак на сервер:

- подбор пароля для SSH. В логах SSHD (по умолчанию /var/log/secure в CentOS 5.5) видим следущее:

Dec 18 13:30:45 localhost sshd[700]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=static-217-162-2-71.swisslink.ch user=root
Dec 18 13:30:47 localhost sshd[700]: Failed password for root from 217.162.2.71 port 4630 ssh2
Dec 18 13:30:47 localhost sshd[701]: Received disconnect from 217.162.2.71: 11: Bye Bye
Dec 18 13:30:48 localhost sshd[702]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=static-217-162-2-71.swisslink.ch user=root
Dec 18 13:30:50 localhost sshd[702]: Failed password for root from 217.162.2.71 port 4780 ssh2
Dec 18 13:30:50 localhost sshd[703]: Received disconnect from 217.162.2.71: 11: Bye Bye
Dec 18 13:30:50 localhost sshd[704]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=static-217-162-2-71.swisslink.ch user=root
Dec 18 13:30:52 localhost sshd[704]: Failed password for root from 217.162.2.71 port 4912 ssh2
Dec 18 13:30:52 localhost sshd[705]: Received disconnect from 217.162.2.71: 11: Bye Bye
Dec 18 13:30:52 localhost sshd[706]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=static-217-162-2-71.swisslink.ch user=root
Dec 18 13:30:54 localhost sshd[706]: Failed password for root from 217.162.2.71 port 1078 ssh2


- поиск учетной записи Asterisk :

За секунду тестируется более 100 записей.

В логах(пример из Asterisk,) это выглядит примерно так:

[2010-12-18 10:46:20] NOTICE[3939] chan_sip.c: Registration from '"321"<sip:321@91.71.236.83>' failed for '208.43.121.69' - No matching peer found
[2010-12-18 10:46:20] NOTICE[3939] chan_sip.c: Registration from '"322"<sip:322@91.71.236.83>' failed for '208.43.121.69' - No matching peer found
[2010-12-18 10:46:20] NOTICE[3939] chan_sip.c: Registration from '"323"<sip:323@91.71.236.83>' failed for '208.43.121.69' - No matching peer found
[2010-12-18 10:46:20] NOTICE[3939] chan_sip.c: Registration from '"324"<sip:324@91.71.236.83>' failed for '208.43.121.69' - No matching peer found
[2010-12-18 10:46:20] NOTICE[3939] chan_sip.c: Registration from '"325"<sip:325@91.71.236.83>' failed for '208.43.121.69' - No matching peer found
[2010-12-18 10:46:20] NOTICE[3939] chan_sip.c: Registration from '"326"<sip:326@91.71.236.83>' failed for '208.43.121.69' - No matching peer found
[2010-12-18 10:46:20] NOTICE[3939] chan_sip.c: Registration from '"327"<sip:327@91.71.236.83>' failed for '208.43.121.69' - No matching peer found
[2010-12-18 10:46:20] NOTICE[3939] chan_sip.c: Registration from '"328"<sip:328@91.71.236.83>' failed for '208.43.121.69' - No matching peer found
[2010-12-18 10:46:20] NOTICE[3939] chan_sip.c: Registration from '"329"<sip:329@91.71.236.83>' failed for '208.43.121.69' - No matching peer found
[2010-12-18 10:46:20] NOTICE[3939] chan_sip.c: Registration from '"330"<sip:330@91.71.236.83>' failed for '208.43.121.69' - No matching peer found

После того как будет найден активный аккаунт, начнется подбор пароля.


В борьбе с перечисленными атаками может помочь(программа не является панацеей от всех проблем) программа Fail2Ban

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

Блокировка делается при помощи iptables

Установка программы описана здесь

Fail2Ban позволяет настроить как количество неудачных попыток, так и время бана.

!!! при настройке Fail2Ban не забудьте прописать свой IP в исключения.

После установки и настройки Fail2Ban программа будет информировать вас о ее работе по email:

После запуска программы вы получите email для каждого из запущенных сервисов:

Для Asterisk:
The jail ASTERISK has been started successfully.
Для SSH
The jail SSH has been started successfully.

После срабатывания какого-либо фильтра в программе выполучите email следущего содержания:

The IP 200.103.30.193 has just been banned by Fail2Ban after
5 attempts against SSH. Here are more information about 200.103.30.193:
......

или

The IP 208.43.121.69 has just been banned by Fail2Ban after
113 attempts against ASTERISK. Here are more information about 208.43.121.69:
....

Уже существуют black листы для iptables с адресами, замеченными в SIP атаках 

http://www.infiltrated.net/voipabuse/defensive.html


Полезно также заблокировать некоторые SIP сканнеры/утилиты при помощи iptables.
Например:
iptables -I INPUT -j DROP -p udp --dport 5060 -m string --string "friendly-scanner" --algo bm
iptables -I INPUT -j DROP -p udp --dport 5060 -m string --string "sipcli" --algo bm

То есть блокируем все UDP пакеты, на порту 5060 (SIP порт), содержащие текст friendly-scanner и sipcli


Не забывайте про отчеты logwatch. Из них можно узнать много интересного.

Например, поиск Web-интерфейсов на вашем сервере:

/db/scripts/setup.php: 2 Time(s)
/dbadmin/scripts/setup.php: 2 Time(s)
/myadmin/scripts/setup.php: 2 Time(s)
/mysql-admin/scripts/setup.php: 1 Time(s)
/mysql/scripts/setup.php: 2 Time(s)
/mysqladmin/scripts/setup.php: 4 Time(s)
/mysqlmanager/scripts/setup.php: 2 Time(s)
/p/m/a/scripts/setup.php: 2 Time(s)
/php-my-admin/scripts/setup.php: 3 Time(s)
/php-myadmin/scripts/setup.php: 2 Time(s)
/phpMyAdmin-2.2.3/scripts/setup.php: 2 Time(s)
/phpMyAdmin-2.2.6/scripts/setup.php: 2 Time(s)
/phpMyAdmin-2.5.1/scripts/setup.php: 2 Time(s)

Если Вы желаете поделиться информацией или дополнить данный материал, напишите в техподдержку SIPNET