8(499)-709-97-83
Работаем с 8:00 до 19:00

Использование TLS и SRTP в Asterisk

  • 02 февраля 2015

Включение TLS в Asterisk

Transport Layer Security (TLS) обеспечивает шифрование сигнализации, т.е. шифрует ваш SIP трафик. Это необходимо для того, чтобы злоумышленники не смогли разобрать вашу сигнализацию и не смогли бы подключится к вашей АТС, используя украденные логины и пароли. Для настройки TLS между Asterisk и SIP клиентами необходимо сначала создать ключи безопасности, далее произвести необходимую настройку конфигурационных файлов Asterisk и настроить SIP клиенты для работы по протоколу TLS.

Начнем с создания ключей безопасности.

1) Создадим папку, где будут хранится наши ключи безопасности

mkdir /etc/asterisk/keys

2) Далее используем скрипт "ast_tls_cert", для создания самоподписанного центра сертификации (Certificate Authority) и сертификата самого Asterisk.

./ast_tls_cert -C pbx.voipnotes.com -O "VoIPNotes" -d /etc/asterisk/keys
  • Ключ "-C" используется для описания вашего хоста (DNS или IP адрес)
  • Ключ "-O" используется для определения имени вашей организации
  • Ключ "-d" определяет директорию, где будут находится созданные ключи

3) Далее вам будет необходимо ввести пароль для /etc/asterisk/keys/ca.key

4) Далее создастся файл /etc/asterisk/keys/ca.crt

5) Далее необходимо будет ввести пароль, который вы указывали в шаге 3, далее создастся файл /etc/asterisk/keys/asterisk.key

6) Далее автоматически создастся файл /etc/asterisk/keys/asterisk.crt

7) Далее необходимо будет ввести пароль еще раз, далее создастся файл /etc/asterisk/keys/asterisk.pem - комбинация asterisk.key и  asterisk.crt

8) Далее создадим сертификат для SIP клиентов.

./ast_tls_cert -m client -c /etc/asterisk/keys/ca.crt -k /etc/asterisk/keys/ca.key -C phone1.voipnotes.ru -O "VoIPNotes" -d /etc/asterisk/keys -o dmitry
  • Ключ "-m client" указывает скрипту, что мы создаем клиентский сертификат
  • Ключ "-c /etc/asterisk/keys/ca.crt"  указывает какой Certificate Authority мы используем
  • Ключ "-k /etc/asterisk/keys/ca.key" указывает какой ключ для сертификата мы используем
  • Ключ "-C" используется для описания вашего SIP клиента (DNS или IP адрес)
  • Ключ "-O" используется для определения имени вашей организации
  • Ключ "-d" определяет директорию, где будут находится созданные ключи
  • Ключ "-o" определяет имя создаваемого ключа

9) Далее необходимо ввести пароль для доступа к файлу /etc/asterisk/keys/ca.key.

10) Проверим созданные ключи в каталоге /etc/asterisk/keys/. Должны быть следующие файлы:

asterisk.crt
asterisk.csr
asterisk.key
asterisk.pem
dmitry.crt
dmitry.csr
dmitry.key
dmitry.pem
ca.cfg
ca.crt
ca.key
tmp.cfg

Далее устанавливаем файлы dmitry.pem и ca.crt на ваш SIP клиент.
* В телефонах Yealink это делается во вкладке Security > Trusted Certificates.
* В телефонах Snom это делается во вкладке Setup > Certificates.


Если вашему SIP клиенту требуются сертификаты .p12, то необходимо ввести следующую команду:

# openssl pkcs12 -export -out p12sipclient.p12 -inkey ca.key -in ca.crt -certfile asterisk.crt

* Если вы не нашли данного скрипта, то можно его создать самому. Ссылка на скрипт сертификата https://github.com/rillian/asterisk-opus/blob/master/contrib/scripts/ast_tls_cert


* Или скачайте скрипт

wget http://svnview.digium.com/svn/asterisk/branches/11/contrib/scripts/ast_tls_cert
chmod +x ast_tls_cert

Настройка файла chan_pjsip в Asterisk


Теперь необходимо настроить драйвер PJSIP для использования TLS.


1) Откройте файл pjsip.conf для редактирования.

nano /etc/asterisk/pjsip.conf

2) В файл необходимо дописать следующую информацию:

[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
method=tlsv1

Здесь описывается протокол TLS, cert_file, priv_key_file и другие опции. Для использования протокола TLS, мы указали файлы, которые были созданы ранее (файлы cert_file и priv_key_file) и включили метод TLS, как TLSv1.


3) Далее необходимо указать SIP клиенту, чтобы он использовал протокол TLS. Пример ниже:

[dmitry]
type=aor
max_contacts=1
remove_existing=yes

[dmitry] type=auth auth_type=userpass username=dmitry password=vashpassword
[dmitry] type=endpoint aors=dmitry auth=dmitry context=local disallow=all allow=g722 dtmfmode=rfc4733 media_encryption=sdes

Мы указали SIP клиенту использовать SDES шифрование для RTP.


Настройка файла chan_sip в Asterisk


Если вы используете chan_sip, то необходимо сделать следующую настройку.


1) Откройте файл sip.conf (или sip_general_custom.conf если это Elastix или FreePBX) для редактирования.

nano /etc/asterisk/sip.conf

2) В файл необходимо дописать следующую информацию:

tlsenable=yes
tlsbindaddr=0.0.0.0
tlscertfile=/etc/asterisk/keys/asterisk.pem
tlscafile=/etc/asterisk/keys/ca.crt
tlscipher=ALL
tlsclientmethod=tlsv1

В этом блоке мы указали, что на нашем сервере есть поддержка протокола TLS:

  • Asterisk будет прослушивать все сетевые карты (по порту 5061 для TLS)
  • Мы указали каталог сертификата TLS
  • Мы указали каталог сертификата Certificate Authority
  • tlscipher=ALL, т.е. Asterisk поддерживает все виды шифрований
  • tlsclientmethod=tlsv1 - т.е указываем, что SIP клиенты поддерживают протокол tlsv1. Если SIP клиенты не поддерживают tlsv1, то эту строку лучше удалить

3) Далее необходимо указать SIP клиенту, чтобы он использовал протокол TLS. Пример ниже:

[dmitry]
type=peer
secret=mypassword
host=dynamic
context=local
dtmfmode=rfc2833
disallow=all
allow=g722
transport=tls

Asterisk поддерживает три вида транспортных протоколов: udp, tcp и tls. Возможно использование все трех протоколов, для этого необходимо указывать конкретный протокол, в описании SIP клиентов (файл sip.conf).


Включение SRTP в Asterisk


После того, как мы включили поддержку протокола TLS, нам необходимо обезопасить наши медиа данные, т.е. наши разговоры. Для этого мы включим поддержку SRTP (Secure RTP), т.е. шифрование RTP данных.


Поддержка SRTP обеспечивается libsrtp. libsrtp должен быть установлен на сервер перед установкой Asterisk, в противном случае вы будете видеть следующее:

[Dec 14 10:49:44] ERROR[10167]: chan_sip.c:27987 setup_srtp: No SRTP module loaded, can't setup SRTP session.

Если вы видите подобное в CLI Asterisk, то вам необходимо установить libsrtp и далее пересобрать Asterisk (./configure; make; make install).


Если все это сделано, то необходимо сделать настройку SIP клиента в файле sip.conf. Добавим строку encryption=yes в настройки пользователя:

[dmitry]
type=peer
secret=mypassword
host=dynamic
context=local
dtmfmode=rfc2833
disallow=all
allow=g722
transport=tls
encryption=yes
context=local

Теперь рассмотрим включение SRTP на SIP телефонах.


Возьмем двух производителей Yealink и Grandstream.

C недавнего времени, правительство России запретило шифровать данные. Все прошивки, которые выкладываются на сайте официального представительства Yealink в России, не поддерживают протокол SRTP. Но это легко устранить, зайдя на официальный сайт Yealink. Там можно скачать последние прошивки, с поддержкой SRTP.


После обновления телефона Yealink (в нашем примере, мы используем Yealink-T21P). Заходим в веб-интерфейс телефона. Далее Account-Advanced. Найдите параметр RTP Encryption (SRTP) и установите его в одно из значений:

  • Compulsory(Обязательно) – постоянно использовать SRTP
  • Optional(По возможности) – использовать SRTP, когда это возможно
  • Disabled(Отключено) – отключение возможности использовать SRTP

Для включения протокола SRTP на телефонах Grandstream. Вам необходимо зайти в веб-интерфейс, далее Accounts-Audio Settings. Найдите параметр SRTP Mode и установите его в одно из доступных значений:

  • Enabled and Forced(Принудительное использование) – использовать SRTP в принудительном порядке
  • Enabled But Not Forced(Не принудительное использование) – телефон предлагает использовать SRTP, но согласен работать и без него, если сервер не поддерживает SRTP
  • Optional(По возможности) – телефон отдает принятие решения на использование SRTP серверу
  • No(Отключено) – отключение возможности использовать SRTP

   

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

 
Powered by SEO CMS ver.: 23.1 TOP 2 (opencartadmin.com)