В последнее время участились атаки на 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
Если Вы желаете поделиться информацией или дополнить данный материал, напишите в техподдержку SIPNET