Безопасная IP-телефония
Asterisk: закрытие
уязвимостей
                                 ведущий:
                            Сергей Грушко
21 апреля 2013
                          sergey@voxlink.ru
Компания Вокс Линк и
          SkillFactory.ru



IP-АТС Asterisk:
  Безопасность
                     L/O/G/O
            www.themegallery.com
Взлом IP-АТС. Кому это
  нужно?
•  Взлом VoIP – один из
   самых удобных способов
   монетизации хакера
•  Как происходит взлом?
Безопасен ли Asterisk?
•  Инструментарий защиты
   Asterisk сильнее, чем у
   многих конкурентов
•  Система защиты строится
   на нескольких уровнях
  –  Сетевая защита (IPTables)
  –  Дизайн сети (VLAN + VPN)
  –  Анализатор логов (Fail2Ban)
  –  Конфигурация Linux
  –  Конфигурация Asterisk
  –  Защита периферийных
     устройств
  –  Защита диалпланом
Беды от пионеров-
интеграторов
Типовые security ошибки
•  Слабые пароли на внут.
   номерах
•  Отсутствие Firewall
•  Старые дистрибутивы и ПО
•  Стандартные пароли и
   логины
•  Дизайн сети
•  Ошибки в конфигурации
•  Отсутствие контроля
   за системой
“Проблемный” дистрибутив
•  В дистрибутиве
   TrixBox существует
   дефолтная учетная
   запись wwwadmin с
   паролем passw0rd.
•  Также, дистрибутив
   уже несколько лет не
   обновляется.
•  При этом, он до сих
   пор популярен
Рекомендуемый
   дистрибутив
•  Мы рекомендуем
   FreePBX Distro как
   отличную замену
   TrixBox: более
   удобный,
   безопасный и
   надежный
Уровни защиты Asterisk
•  Сетевой уровень
•  Конфигурация
   Asterisk
•  Конфигурация Linux
•  Защита телефонов и
   шлюзов
•  Административные
   меры
Защита сети: IPTables
•  IPTables – мощный и
   гибкий сетевой
   firewall Linux.
•  Входит в Linux по-
   умолчанию
•  Управляется
   простыми
   командами
Настройка фильтров

•  1. Создаем цепочки и наполняем их
   соответствующими IP-адресами
•  2. «Загоняем» трафик в эти цепочки
•  3. Если трафик не попал ни в одну
   цепочку, то удаляем его
Пример работы с iptables
•  chkconfig iptables add – добавляем в автозагрузку
•  service iptables start – стартуем iptables
•  iptables –L – просмотр действующих правил

•  iptables –N ADMIN – создаем новую цепочку
•  iptables –A ADMIN –i eth0 –s 192.168.10.0/24 –j
   ACCEPT – добавляем в цепочку правило

•    iptables-save > somefile.txt
•    nano somefile.txt
•    iptables-restore < somefile.txt
•    service iptables save
Дизайн сети: VLAN
•  VLAN – виртуальная
   локальная сеть.
•  Задача – разделить
   сеть данных и сеть
   телефонии
•  Требуется:
   управляемый
   коммутатор
VLAN: Пример сети
Fail2Ban – защита от перебора
   паролей
•  Fail2Ban – внешняя
   система,
   работающая со
   следующими
   службами:                                                              222.222.222.222
                                              Попытка отбивается


  –  Asterisk
                                                                          Попытка доступа с
                                              при неверном вводе
                                                                          перебором пароля
                                              пароля




  –  SSH
  –  Apache
                                                                                              Интернет




  –  FTP и прочие       Сервер	
  Asterisk
                         192.168.10.11
                                                 iptables                 222.222.222.222
                                                                          Следующие попытки
                                                                          отбиваются уже
                                                                          файерволом



•  Принцип работы:                                                    На основании данных лог
                                                                      файла блокируем доступ к
                                                                      станции в файерволе по IP
                                                                      (222.222.222.222)



   чтение логов и                                     Fail2ban
                                             Fail2ban периодически считывает информацию из лог
                                             файла, например такого вида:
                                              «Registration from ’192.168.10.11′ failed for



   обнаружение
                                             ’222.222.222.222′ – Wrong password»
Защита Fail2Ban
                                                  222.222.222.222
                      Попытка отбивается
                                                  Попытка доступа с
                      при неверном вводе
                                                  перебором пароля
                      пароля




                                                                      Интернет




                         iptables                 222.222.222.222
                                                  Следующие попытки
Сервер	
  Asterisk
 192.168.10.11                                    отбиваются уже
                                                  файерволом

                                              На основании данных лог
                                              файла блокируем доступ к
                                              станции в файерволе по IP
                                              (222.222.222.222)
                              Fail2ban
                     Fail2ban периодически считывает информацию из лог
                     файла, например такого вида:
                      «Registration from ’192.168.10.11′ failed for
                     ’222.222.222.222′ – Wrong password»
Конфигурация fail2ban
/etc/fail2ban/jail.conf
Конфигурация fail2ban
/etc/fail2ban/action.d/iptables.conf
Конфигурация fail2ban
/etc/fail2ban/filter.d/asterisk.conf




 /etc/fail2ban/filter.d/sshd.conf
Проверка в IPTables
Остановка или перезапуск
службы Fail2Ban
Уведомление по email

В строке action= указываются настройки почты: почтовый
сервис [name=<тема_сообщения>, dest=<получатель>,
sender=<отправитель>]
Удаленные сети: VPN
•  Проблема:
   удаленные
   устройства
   подключаются по
   публичным сетям
  –  Перехват трафика
  –  Публикация SIP-
     сервера
•  Решение:
   объединение всех
   подразделений
   компании в общую
   VPN-сеть
Защита на уровне
конфигурации Asterisk
Смена порта SIP
•  Проблема: если порт
   5060 доступен из
   WAN, то он
   обязательно станет
   объектом BruteForce-
   атаки
•  Решение: смена
   порта директивой в
   sip.conf
  –  [general]
  –  bindport=5090
Файл sip.conf
•    [general]
•    alwaysauthreject=yes
•    allowguest=no
•    bindaddr=192.168.0.1
•    bindport=5090
•    [101]
•    permit/deny=192.168.0.0/255.255.255.0
•    secret=nvi438NB8f3fsjffg
•    call-limit=2
•    context=from-closed
Маскировка в SIP

•  sip_general_custom.conf

 useragent=ChuckNorrisPBX
 realm=ChuckNorrisPBX
 sdpsession=ChuckNorrisPBX
Диалплан Asterisk
•  Разделение абонентов на контексты
[101]
context=from-it
[102]
context=from-buch
[103]
context=from-boss
Диалплан Asterisk
extensions.conf
[allow-all]
exten=>_X.,1,Dial(SIP/operator/${EXTEN})
exten=>_10X.,1,Dial(SIP/${EXTEN})
[from-it]
exten=>_810.,1,Hangup()
exten=>_.,1,GoTo(allow-all,${EXTEN},1)
[from-buch]
exten=>_810.,1,Hangup()
exten=>_89.,1,Hangup()
exten=>_.,1,GoTo(allow-all,${EXTEN},1)
[from-boss]
exten=>_.,1,GoTo(allow-all,${EXTEN},1)
Диалплан Asterisk
•  Информирование о попытках звонков на 810.
exten => _810.,Playback(zapret-zvonkov)
same => n,System(echo ${EXTEN}> mail -s "8-10 ALARM!!!" admin@ya.ru)
same => n,Hangup()
Диалплан Asterisk
•  Ограничение на право звонков по времени
GotoIfTime(9:00-18:00|mon-fri|*|*?menu1,s,1)

[from-it]
exten=>_810.,1,GoTo(mail-info,${EXTEN},1)
exten=>_.,1,GotoIfTime(9:00-18:00|mon-fri|*|*?allow-all,${EXTEN},1)
exten=>_.,n, Playback(zapret-zvonkov)

[mail-info]
exten => _X..,Playback(zapret-zvonkov)
same => n,System(echo ${EXTEN}> mail -s "8-10 ALARM!!!" admin@ya.ru)
same => n,Hangup()

[allow-all]
exten=>_X.,1,Dial(SIP/operator/${EXTEN})
exten=>_10X.,1,Dial(SIP/${EXTEN})
FreePBX: Ограничение по времени
Защита динамических
   абонентов
•  Проблема: абонент подключается с
   внешних динамических IP.
   Ограничение permit/deny –
   невозможно
•  Используем контекст, в котором
   ограничиваем звонки на
   международные направления:
   целиком или по PIN-коду
Защита операционной
системы
Отключение лишних модулей
     Asterisk
•  Выбираем заведомо ненужные модули и
   отключаем их через
   /etc/asterisk/modules.conf:
noload => app_directory_odbcstorage.so
noload => app_voicemail_odbcstorage.so
noload => chan_sccp.so
noload => chan_skinny.so
noload => chan_bridge.so
noload => chan_mgcp.so
noload => chan_gtalk.so
noload => chan_multicast_rtp.so
noload => chan_unistim.so
noload => chan_jingle.so
noload => chan_mobile.so
Отключение лишних служб
•  chkconfig --list - просмотр служб
•  chkconfig someservice off –
   отключение службы
Вход в SSH по
сертификатам
Генерация ключей SSH
•  ssh-keygen -t dsa
•  Конфиг sshd.conf:
  –  RSAAuthentication yes
     PubkeyAuthentication yes
     PasswordAuthentication no
•  Скопируйте открытый ключ на
   сервер
Ограничение доступа к
   Apache
•  ServerSignature Off
•  ServerTokens Prod
•  <Directory>
   Order Deny,Allow
   Deny from all
   Allow from
   192.168.10.0/24
   <Directory>
Asterisk Manager Interface
•  Контроль учетных записей и
   ACL в /etc/asterisk/manager.conf
Обновление системы
•  При «ручной» установке необходимо
   обновить Linux до момента установки.
•  На работающей системе необходимо
   проводить обновление, предварительно
   сделав бэкап
•  Само обновление простое:
   yum update -y
Обновление Asterisk
•  Обновляем Asterisk только в
   том случае, если новая
   версия решает проблемы
   безопасности, которые
   можно использовать в вашей
   конфигурации
•  Беспроблемное обновление
   – в пределах той-же
   мажорной версии (1.8, 10, 11)
Версионность Asterisk
Защита периферийного
   оборудования
Обновление прошивки
Размещение за Firewall.
Так нельзя:
Размещение за Firewall.
Нужно так:
Установка паролей на Web
и/или его отключение
Голосовой VLAN
Смена сервисных портов
•  На телефонах и
   шлюзах
   рекомендуется
   менять порт SIP с
   5060 на любой
   другой. Это
   повышает
   устойчивость к
   сканированиям.
Административные меры
•  Запрет межгорода на уровне
   оператора
•  Ограничение по IP на транк
•  Ограничение на сумму счета
   или авансовая оплата
•  Защита рабочих станций с
   софтфонами
•  Смена паролей при смене
   админа
Заключение
•  Asterisk – это безопасный
   сервер при грамотной
   настройке.
•  Защиту Asterisk
   необходимо строить на
   нескольких уровнях
•  Устанавливайте Asterisk
   только тогда, когда
   уверены в возможности
   обеспечить его
   безопасность
Финал
Скидка на онлайн-курс по Asterisk:
код: #ASTRSEC
Скидка: 10%
         Спасибо за участие!
Задавайте вопросы в онлайн-чат

Безопасная IP-телефония Asterisk: закрытие уязвимостей