artem
06.06.2019
5275

TLS SRTP для драйвера PJSIP в Asterisk 15

В рамках данной статьи будет рассмотрена настройка шифрования SIP и RTP трафика при использовании драйвера PJSIP.  Шифрование протокола SIP будет происходить с помощью TLS, а вместо не шифрованного протокола RTP будет использоваться защищенный протокол SRTP.  Шифрование только протокола SIP недостаточно, так как если оставить незашифрованным RTP поток, то при перехвате трафика злоумышленник сможет без проблем   прослушать вызовы.

Конфигурация используемой системы:

Centos 7

Asterisk 15.6.1 собранный с поддержкой SRTP и PJSIP

Сначала необходимо убедиться что Asterisk собран с поддержкой SRTP и PJSIP и если это не так то пересобрать установив необходимые пакеты.

 Проверить наличие драйвера PJSIP в Asterisk можно командой:

asterisk -rx „module show like pjsip“

Данная команда выведет список всех модулей  относящихся к PJSIP. Если в отображаемом списке статус модулей стоит Running значит модули загружены и работают

 

Проверка наличия драйвера PJSIP в Asterisk

Для проверки наличия SRTP необходимо выполнить команду

asterisk -rx ‘module show like srtp’

Если в выводе не показан ни один модуль то необходимо пересобрать Asterisk с использованием данного модуля.

проверка наличия модуля SRTP — модуль отсутсвует

Для установки SRTP следует выполнить следующие шаги:
1) Установить библиотеку SRTP c помощью команды

yum install libsrtp libsrtp-devel -y

2) Перейти в директорию с исходниками Asterisk и сконфигурировать установку командой:

./configure –libdir=/usr/lib64 –with-crypto –with-ssl=ssl –with-srtp

3) В окне выбора устанавливаемых модулей (make menuselect) необходимо в разделе Resource Modules включить установку модуля res_srtp

 

Установка модуля res_srtp

4) Далее шаги соответствуют стандартной установке Asterisk (make и make install)

5) Далее необходимо перезагрузить Asterisk командой systemctl restart asterisk

6) Далее необходимо загрузить модуль, выполнив в консоли Asterisk`а команду module load res_srtp.so

 

загрузка модуля res_srtp.so

Полностью установка Asterisk с поддержкой SRTP и PJSIP рассмотрена на примере Asterisk 13 в статье

Теперь команда asterisk -rx ‘module show like srtp’ покажет, что модуль находится в сотсоянии Running.

 

 

проверка наличия модуля SRTP — модуль загружен

Обратите внимание, что после перезагрузки Asterisk`а модуль придется снова подгружать вручную, чтобы избежать этого необходимо корректно настроить файл /etc/asterisk/modules.conf

 Для этого необходимо или включить автозагрузку всех модулей установив опцию autoload = yes,  или же прописать в явном виде подгрузку модуля опцией

load = res_srtp.so

 

прописывание загрузки модуля srtp в файл modules.conf

Перед тем как настраивать транспорт для драйвера PJSIP необходимо сгенерировать сертификаты. Для этого необходимо выполнить следующие шаги.
1) в директории /etc/asterisk создать поддиректорию keys командой mkdir /etc/asterisk/keys

Для создания ключей в исходниках Asterisk присутсвует специальный скрипт ast_tls_cert, находящий в поддиректории contrib/scripts/

По-умолчанию срок выдачи генерируемого сертификата год, чтобы увеличить срок необходимо поправить скрипт заменив число 365 в параметре -days на любое необходимое, например,  3650 — это выдаст сертификат сроком на 10 лет.

 

правка скрипта для выдачи сертификата TLS на 10 лет

2) запустить скрипт для генерации сертификатов командой

./ast_tls_cert -C pbx.company.ru -O “Test Company” -d /etc/asterisk/keys

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

 

генерация сертификатов и ключей сервера

3) Следующий шаг — генерация клиентского сертификата командой

./ast_tls_cert -m client -c /etc/asterisk/keys/ca.crt -k /etc/asterisk/keys/ca.key -C client1.company.ru -O “Test Company” -d /etc/asterisk/keys -o 100

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

генерация клиентского ключа

После генерации сертификатов необходимо настроить Asterisk на работу с TLS.

Сначала необходимо в секции описания транспортных протоколов файла /etc/asterisk/pjsip.conf, создать секцию с описанием TLS.
Ее примерный вид следующий:

[transport-tls]
type=transport
protocol=tls
bind=0.0.0.0:5061
cert_file=/etc/asterisk/keys/asterisk.crt
priv_key_file=/etc/asterisk/keys/asterisk.key
domain=pbx.company.ru
external_media_address=1.1.1.1
external_signaling_address=1.1.1.1
local_net=192.168.170.0/24
method=tlsv1

 

секция транспорт

Краткое описание параметров секции

bind — указывает Asterisk, что TLS будет работать на порту 5061

cert_file — указывает путь к файлу сертификата, сгенерированного на предыдущем этапе

priv_key_file – указывает путь к файлу приватного ключа, сгенерированного на предыдущем этапе

external_media_address — указывает внешний ip-адрес АТС при нахождении ее за NAT`ом

external_signaling_address — указывает внешний ip-адрес АТС при нахождении ее за NAT`ом

 

При подключении внешних абонентов на маршрутизаторе необходимо обязательно пробрасывать порт 5061 TCP и диапазон голосовых портов UDP, на Asterisk

Для разрешения в дальнейшем применения изменений транспорта командой  asterisk -rx „core reload“ необходимо дополнительно указать в секции транспорта параметр allow_reload=true

 Для проверки настроек TLS можно воспользоваться командой

openssl s_client -connect 127.0.0.1:5061

Команда выводит данные о сертификате.

 

проверка настроек TLS

Настройка секций endpoint, auth, aor

Основным отличием настроек данных секций от стандартный в PJSIP является наличие опции media_encryption=sdes

Описание секций файла pjsip.conf дано в статьеПример настройки:

[100]
type=aor
max_contacts=1
remove_existing=yes
 
[100]
type=auth
auth_type=userpass
username=100
password=StrongPasswd

 
[100]
type=endpoint
transport=transport-tls
direct_media=no
aors=100
auth=100
context=from-internal
disallow=all
allow=opus
allow=alaw
allow=ulaw

 
force_rport=yes
rewrite_contact=yes

 
dtmf_mode=rfc2833
media_encryption=sdes

 

секции aor, auth, endpoint

 

Данных параметров достаточно для минимальной настройки TLS+SRTP для PJSIP

 
avatar
  Подписаться  
Уведомление о

Остались вопросы?

Я - Кондрашин Игорь, менеджер компании Voxlink. Хотите уточнить детали или готовы оставить заявку? Укажите номер телефона, я перезвоню в течение 3-х секунд.

VoIP оборудование

ближайшие курсы

ближайшие Вебинары

ONLINE

Why Choose HUGE?

Unlimited pre-designed elements

Each and every design element is designed for retina ready display on all kind of devices

User friendly interface and design

Each and every design element is designed for retina ready display on all kind of devices

100% editable layered PSD files

Each and every design element is designed for retina ready display on all kind of devices

Created using shape layers

Each and every design element is designed for retina ready display on all kind of devices