Site icon Лог Стасона

Настройка Freeswitch SIP TLS + SRTP

freeswitch

Сегодня хочу затронуть тему защиты трафика в сетях VoIP. В Интернете гуляет очень много открытого трафика и добраться до него не так уж и сложно, тем более если ты админ Wi-Fi сети в гостинице или кафе, ибо инженер интернет-провайдера. Хоть я и не параноик, но корпоративные данные, будь то почта, авторизация на внутренних ресурсах и так далее предпочитаю шифровать. С недавних пор к голосовому трафику стараюсь относится так же.

Все действия будут происходить с FreeSWITCH Version 1.4.26 и софтфоном Blink. Так же чуть позже выложу статью по настройке других смартфонов.

Будем считать что наш Freeswitch скомпилирован и установлен с поддержкой SSL.

Для начала нам нужно сгенерировать сертификаты с помощью встроенной во Freeswitch утилиты ./gentls_cert.

Генерируем CA (корневой) сертификат:

Далее генерируем сертификат для сервера

, где 8.8.8.8 — IP адрес вашего сервера, а sip.youdomain.ru — домен вашего сервера, если таковой имеется, если же домена никакого нет, то можно опустить этот параметр.

 

 Внимание! Если ваш Freeswitch работает не из под root, а под собственным пользователем (-u freeswitch), тогда нужно выставить необходимые привилегии для свежесоданных файлов сертификатов.

Должно выглядеть следующим образом:

 

Далее нам нужно сконфигурировать SIP профиль (internal, external или другой, который у вас используется)

Открываем XML файл нашего профиля, например /usr/local/freeswitch/conf/sip_profiles/internal.xml и приводим секцию TLS к такому виду:

Сохраняемся, перезагружаем Freeswitch и проверяем поднялись ли профили и все ли ок.

Далее посмотрим на то слушает ли наш Freeswitch порт 5061

Все супер, а если не супер, то смотрим в чем дело внимательно, у меня была трабла именно с правами доступа на файлы сертификатов.

 

Далее нам нужно сгенерировать пользовательский сертификат:

, где 10001 — номер телефона абонента, для обеспечения безопасности этот сертификат нужно генерировать для каждого номера отдельно. Он так же сохранился в /usr/local/freeswitch/conf/ssl.

 

Далее нам необходимо скопировать файлы 10001.pem из каталога /usr/local/freeswitc/conf/ssl и cacert.pem из каталога /usr/local/freeswitc/conf/ssl/CA на компьютер, где будет установлен Blink. Зачем нам нужно 2 сертификата я расскажу позже.

Приступаем к настройке самого Blink. Выложу скриншоты настроек программы, на них предельно все ясно. Однако поясню, что 2 сертификата нам нужно для проверки подлинности сервера, т.к. сертификат мы выдавали сами себе. Если же сертификат вам был выдан в доверенном центре сертификаций, то тогда последний пункт не требуется.

 

Отлично, применяем настройки и пытаемся сделать вызов.

При этом включаем в консоли Freeswitch sip trace

И ищем примерно такую строчку в дебаге:

это говорит о том, что SIP сообщения бегают в зашифрованном виде.

Далее проверяем SRTP и ищем в том же дебаге в SDP сообщение что то в роде

это нам говорит о том что RTP Трафик теперь шифрован.

 

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