Курсы по использованию Asterisk

IP-телефония — технология будущего. Обучитесь работе с IP-АТС Asterisk для того чтобы внедрить и профессионально использовать при решении коммуникационных задач.

Работайте с Asterisk профессионально!

Многоуровневая защита IP-АТС Asterisk

Телефонные станции очень часто становятся объектами хакерских атак. Узнайте, каким образом необходимо строить многоуровневую защиту для Вашей IP-АТС.

Не оставьте хакерам шансов. Защитите свой Asterisk от атак.

Используйте Веб-Интерфейс для удобства настройки

Панель управление FreePBX позволяет легко и удобно управлять всей системой. Научитесь эффективно использовать FreePBX для решения своих задач.

Управление станцией и статистика в окне браузера.

Научитесь работать с Asterisk из консоли

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

Научитесь «тонкой» настройке Asterisk

Цель курсов - максимум практики.

Обучение нацелено на практическую работу с IP-оборудованием: платы потоков E1, VoIP-телефонные аппараты, голосовые шлюзы FXS и прочее.

Обучение на реальном оборудовании — залог успеха.

Настройка TLS в Asterisk. Шифруем SIP и RTP

База знаний Настройка Asterisk

Если вы фанат(параноик) безопасности то эта статья для вас. Мы рассмотрим настройку безопасного SIP в астериск а так же будем шифровать голос с помощью SRTP.

Конфигурация:
Centos 6.5 minimal x86_64
Asterisk 11.16.0 собранный с srtp
Cофтфоны: Blink 0.9.1.2, Zoiper 3.6, Bria3.3.0 (IOS), Acrobits 5.6 (IOS), Zoiper 1.19 (Android), Bria 3.0.5 (Android), Zoiper 3.3 (Linux)
Телефоны: Snom 820, Grandstream 1450, Fanvil C58P

Немного теории. Как известно, asterisk для сигнального протокола SIP использует UDP порт 5060 (обычно) а так же передает эту информацию в открытом виде, поэтому, перехватив траффик, мы можем получить всю информацию касательно номеров и собственно, сам разговор. Помочь с данной проблемой нам сможет SIP по TLS, который уже в свою очередь будет шифровать сигнальные данные используя при этом порт 5061 (обычно) TCP,  поэтому, даже перехватив траффик, злоумышленник получит информацию в зашифрованном виде, но это касается только SIP протокола, голос шифровать нужно отдельно, тут нам поможет SRTP. Стоит отметить, что использовать только TLS без SRTP не имеет смысла, так как медиа траффик остается без шифрования.

Стоит отметить, что использование TLS не панацея, и не защитит вас от MITM-атак (Man in the middle, человек посередине) если не используется проверка подлинности сертификатов.
Теперь практика. На момент написания статьи мы использовали последнюю актуальную версию asterisk из 11 ветки 11.16.0 (качаем тут) Так же нам понадобится собрать астериск с поддержкой SRTP, для этого нам нужна библиотека libsrtp 1.4.4 (скачать можно тут)

Для начала можно попробовать установить libsrtp из репозитория линукса:

yum install libsrtp-devel

Если пакета нет, то переходим к ручной установке.

Установка libsrtp:

tar zxvf srtp-1.4.4.tgz
cd srtp
./configure CFLAGS=-fPIC
make && make install


Теперь пересобираем астериск с модулем SRTP:


tar zxvf asterisk-11-current.tar.gz
cd asterisk-11*
./configure --libdir=/usr/lib64 (libdir используем если у вас система x86_64)
makemenuselect (если libsrtp был установле нверно, то в ResourceModules увидим res_srtp)
make && make install



После того как мы собрали астериск с необходимым модулем, нужно настроить sip.conf для работы с TLS, но сначала нам потребуется создать необходимые сертификаты. Необходимый скрипт уже есть в скачанном нами архиве с астериском. Переходим в распакованную папку с астериском а далее в /contrib/scripts
Нас интересует ast_tls_cert

Прежде чем генерировать сертификаты, рекомендую зайти в скрипт и поправить все 365 на 3650 или любое другое число, что бы срок выдачи был не год, а 10 лет.
Так же нам необходимо прописать имя хоста в системе. Редактируем /etc/hosts и пишем в конце первой строчки желаемое имя, например pbx.company.ru

Запускаем генерацию сертификатов:

Идеальный вариант это приобрести сертификат подписанный доверенным ЦС, например от Comodo, на 3 месяца дается бесплатно.

./ast_tls_cert -C pbx.company.ru -O "My Company" -d /etc/asterisk/keys

  • C - имя хоста (dns имя) или ip адрес
  • O -  имя нашей организации
  • d -  директория генерация сертификатов

После запуска скрипта, система предложит ввести ключевую фразу для создания ca.key далее ее нужно повторить и ввести еще два раза для создания asterisk.key и asterisk.pem
На этом можно было и закончить, но в WIKI астериска говорится о генерации клиентского сертификата. Выполним необходимые действия а дальше разберемся, так ли необходим этот сертификат.

./ast_tls_cert -m client -c /etc/asterisk/keys/ca.crt -k /etc/asterisk/keys/ca.key -C phone1.company.ru -O "My Company" -d /etc/asterisk/keys -o 100

  • m client - опция которая указывает на создание клиентского сертификата, не серверного
  • с - путь к сертификату CA
  • k - путь к ключу CA
  • С - DNS-имя или ipадрес подключаемого клиента
  • O - имя организации
  • d - путь для генерации ключей
  • o - имя генерируемых ключей (должно совпадать с номером пира)

После запуска скрипта нам потребуется ввести ключевую фразу от ca.key

Ниже список файлов который мы должны были получить:

  • asterisk.crt
  • asterisk.csr
  • asterisk.key
  • asterisk.pem
  • 100.crt
  • 100.csr
  • 100.key
  • 100.pem
  • ca.cfg
  • ca.crt
  • ca.key
  • tmp.cfg
Переходим к sip.conf

[general]
tlsenable=yes
tlsbindaddr=0.0.0.0:5061
tlscertfile=/etc/asterisk/keys/asterisk.pem
tlscafile=/etc/asterisk/keys/ca.crt
tlscipher=ALL
tlsclientmethod=tlsv1
tlsdontverifyserver=no

Здесь мы активируем TLC, указываем на каких интерфейсах и какой порт слушать, указываем сертификат астериска а так же сертификат ЦС (если используем самоподписанные сертификаты для пиров) включаем все виды шифрования (более подробно о типах шифрования можно прочитать на официальном сайте openssl), в последней опции мы либо разрешаем(no) проверку сертификата пира, либо не разрешаем(yes)

Конечно, лучше использовать опцию tlsdontverifyserver=no но, на практике с этим много проблем и опция отрабатывает не совсем так как задумано, даже если сертификат не совпадает с проверкой по ca.crt, астериск все равно позволяет совершать вызовы, хоть в консоль и будут сыпаться ошибки. Поэтому рекомендуем использовать tlsdontverifyserver=yes

Так же в большинстве софтфонах и телефонах невозможно установить клиентский сертификат, при подключении таких девайсов asterisk так же нас будет уведомлять в консоли о проблеме с подключением, но вызовы, в зависимости от модели телефона или софтфона, совершать все так же возможно.

Если вдруг центров сертификации у вас несколько то необходимо использовать опцию tlscapath и указать путь к папке где лежат сертификаты цс. При такой конфигурации названия ца должны иметь хэш имена SSL_CTX_load_verify_locations. Для этого нам потребуется установить пакет openssl-perl в системе и использовать команду c_rehash /путь/ксертфикатам/ца. При этом файл сертификата ца должен быть с расширением не .crt а .pem (просто переименовать) После применения команды в той же папке появятся файлы типа @a53d7cf5.0

Перезапускаем астериск, и проверяем работоспособность порта командой:

openssl s_client -connect 127.0.0.1:5061

Если все верно видим примерно следующее


Теперь выполним настройки в астериске на пире для работы с TLS и SRTP, в sip.conf активируем для пира tls и включим srtp (encryption):

[100]
type=peer
secret=$tr0NgPas5w0rd
host=dynamic
context=local
disallow=all
allow=alaw
transport=tls
encryption=yes
qualify=yes

Делаем sip reload в консоли asterisk и переходим к настройке клиента, используем софтфон Blink, который нам рекомендуют в wiki астериска:
При создании аккаунта указываем sip адрес как номер @ip-asterisk ()

Во вкладке Media в поле RTP Options опция sRTP Encryption: mandatory, это включает шифрованиевсегда.

Во вкладке Server Settings указываем ip сервера, порт 5061 и протокол TLS

Во вкладке Network, MSRP Transport TLS

Во вкладке Advanced указываем открытый и закрытй ключ клиента, который мы генерировали выше, 100.pem

Если хотим проверить подлинность сервера (asterisk) к которому подключаемся,то ставим галку на Verify server, тогда в глобальной вкладке Advanced нам нужно указать сертификат цс, ca.crt либо этот сертификат должен быть установлен в системе. Если же ваш сервер asterisk использует сертификат подписанный доверенным ЦС то эти действия (выбор сертификата или установка) выполнять не нужно.

 
   

После того как софтфон подключился, пробуем совершить вызов на номер 200, у нас это телефон Snom 820 тоже настроенный на tls/srtp. При совершении вызова, справа, на синем фонем появляется значок замка, что информирует нас о использовании протокола TLS (т.е. сигнальная часть, SIP шифруется)



После того как состоялся вызов, появляется еще один значок, замок на оранжевом фоне, что свидетельствует о шифровании медиа трафика (SRTP)


На телефоне Snom 820 это выглядит похожим образом, в левом углу экрана появляется значок замка, а если во время разговора нажать кнопку Message то получаем более подробную информацию о вызове, где видим использование TLS/SRTP


Если по какой-то причине визуально шифрование на телефоне/софтфоне не отображается, всегда можно проверить в астериске, для это нужно выполнить команду sip show channel и идентификатор канала (можно нажать TAB при этом увидим все активные) И так, в поле Transport мы должны увидеть TLS а в поле Media - SRTP

                         

Ниже скриншоты с софтфонов и телефонов на которых работает шифрование вызовов через астериск:

Blink 0.9.1.2 (Windows)



Zoiper 3.6 (Windows)



Bria 3.3.0 (IOS)

 

Acrobits 5.6 (IOS)


Bria 3.0.5 (Android)

 

Zoiper 1.19 (Android)

 

Snom 820




Grandstream 1450




Fanvil C58P




Ну и напоследок  скриншот из Wireshark



На этом все, если вы хотите что бы звонки через вашего оператора тоже шифровались, то сам оператор связи должен поддерживать TLS/SRTP, иначе трафик от клиента до сервера астериска будет в шифрованном виде, а от астериска до оператора в открытом. Одним из таких операторов, который поддерживает шифрование, является SIPNET.

 

 

Snom, Fanvil, centOS, трафик, конфигурация, Bria, Софтфон, настройка, установка, sip, asterisk, сервер, IP-телефоны, телефоны, Grandstream