~~socialite~~
SIP TLS SRTP Asterisk
Настройка защищенного соединения TLS SRTP между двумя серверами Asterisk и для SIP клиентов, с использованием драйвера chan_sip.
см. также Asterisk настройка TLS SRTP для PJSIP
Создание ключей и сертификатов
Создайте директорию для ключей:
mkdir /etc/asterisk/keys
В директории ../contrib/scripts/ исходных файлов Asterisk находится скрипт ast_tls_cert для генерации ключей:
cd /usr/src/asterisk-13*/contrib/scripts/
Сгенерируем сертификаты сервера:
./ast_tls_cert -C pbx.asterisk-pbx.ru -O "asterisk-pbx.ru" -d /etc/asterisk/keys
- -C - domain или IP адрес
- -O - наименование
- -d - путь к созданной выше директории для ключей (/etc/asterisk/keys)
В ходе этой операции вам будет предложено задать ключевое слово (pass phrase) Задайте пароль и повторите его ввод еще два раза, при запросах скрипта.
Asterisk SRTP
Asterisk поддерживает TLS «из коробки» дополнительных действий, кроме настройки в секции [general] файла sip.conf, не требуется.
Для поддержки SRTP Asterisk должен быть скомпилирован соответствующим образом.
Должны быть установлены зависимости, библиотеки srtp:
yum install libsrtp libsrtp-devel
Конфигурация должна быть выполнена с ключами:
--with-crypto --with-ssl=ssl --with-srtp
Загрузите модуль srtp:
*CLI> module load res_srtp.so Loaded res_srtp.so Loaded res_srtp.so => (Secure RTP (SRTP))
*CLI> module show like srtp Module Description Use Count Status Support Level res_srtp.so Secure RTP (SRTP) 0 Running core 1 modules loaded
В файле modules.conf включите загрузку модуля, если требуется:
load = res_srtp.so
asterisk1
Сконфигурируем настройки general драйвера chan_sip для использования транспорта TLS.
etc/asterisk/sip.conf
[general] tcpenable=yes bindaddr=0.0.0.0 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=yes
В нашем примере для TLS используется порт 5061, этот порт должен отличаться от порта TCP, например:
asterisk -rx 'sip show settings' | grep -C 2 "UDP Bindaddress" Global Settings: ---------------- UDP Bindaddress: 0.0.0.0:6665 TCP SIP Bindaddress: 0.0.0.0:6666 TLS SIP Bindaddress: 0.0.0.0:6667
Зарегистрируемся по протоколу TLS на удаленном сервере Asterisk:
[general] register => tls://SIPTRUNK:PASSWORD@asterisk2:5061
Настроим SIP транк:
[trunk_to_asterisk2] type=friend context=from-astrisk2 host=asterisk2 port=5066 secret=PASSWORD dtmfmode=rfc2833 disallow=all allow=alaw fromdomain=asterisk2 insecure=port,invite qualify=yes canreinvite=no encryption=yes transport=tls
Настройки транка типовые, кроме опций:
- encryption=yes
- transport=tls
Настройки SIP аккаунтов, тоже совершенно обычные, кроме transport=tls и encryption=yes
[mobile](!) host=dynamic type=friend context=from-mobile qualify=yes qualifyfreq=60 canreinvite=no directmedia=nonat nat=force_rport,comedia transport=tls encryption=yes disallow=all allow=ulaw allow=alaw directrtpsetup=nonat [1234](mobile) defaultuser=1234 callerid= "user1234" <1234> secret=password [1235](mobile) defaultuser=1235 callerid="user1235" <1235> secret=password
примените настройки:
*CLI> sip reload Reloading SIP == Parsing '/etc/asterisk/sip.conf': Found == Using SIP TOS bits 96 == Using SIP CoS mark 4 == TLS/SSL ECDH initialized (automatic), faster PFS ciphers enabled == TLS/SSL certificate ok
Обратите внимание на вывод TLS/SSL..
Второй сервер должен быть скомпилирован с поддержкой SRTP соответственно.
Скопируйте ключи в директорию /etc/asterisk второго сервера:
scp /etc/asterisk/keys asterisk2:/etc/asterisk password:
где asterisk2 хост или ip адрес второго сервера.
asterisk2
[general] tcpenable=yes bindaddr=0.0.0.0 tlsenable=yes tlsbindaddr=0.0.0.0:5066 tlscertfile=/etc/asterisk/keys/asterisk.pem tlscafile=/etc/asterisk/keys/ca.crt tlscipher=ALL tlsclientmethod=tlsv1 tlsdontverifyserver=yes
[trunk_to_asterisk1] type=friend context=from-asterisk1 host=asterisk1 port=5061 secret=PASSWORD dtmfmode=rfc2833 disallow=all allow=alaw fromdomain=asterisk1 insecure=port,invite qualify=yes canreinvite=no encryption=yes transport=tls
Теперь останется только настроить маршрутизацию и зарегистрировать SIP клиентов. Дополнительные сведения о настройке TLS SRTP в Asterisk вы может найти в материале см. также Asterisk настройка TLS SRTP для PJSIP
Тестирование
Хорошо бы еще убедиться, что сигнализация и голос зашифрованы. Это можно сделать при помощи приложения tcpdump
для сигнализации:
tcpdump -nqt -s 0 -A -vvv -i eth0 port 5061
где eth0 сетевой интерфейс.
Для голоса:
tcpdump -nqt -s 0 -A -vvv -i eth0 portrange 10000-20000
Как настроить Zoiper на Android по протоколу TLS SRTP.
Как настроить Zoiper на Android
~~socialite~~