Voipnotes
Услуги
  • 3CX Phone System
    • Купить IP АТС - 3CX Phone System
Ещё
    Задать вопрос
    +7 (499) 113-65-73
    Заказать звонок
    sale@voipnotes.ru
    г. Москва 2-й Михайловский проезд 9
    +7 (499) 113-65-73
    Заказать звонок
    Voipnotes
    Услуги
    • 3CX Phone System
      • Купить IP АТС - 3CX Phone System
      Voipnotes
      Услуги
      • 3CX Phone System
        • Купить IP АТС - 3CX Phone System
        Voipnotes
        Voipnotes
        • Услуги
          • Назад
          • Услуги
          • 3CX Phone System
            • Назад
            • 3CX Phone System
            • Купить IP АТС - 3CX Phone System
        • +7 (499) 113-65-73
        sale@voipnotes.ru
        г. Москва 2-й Михайловский проезд 9
        • Главная
        • Блог
        • Использование TLS и SRTP в Asterisk

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

        2 Февраля 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
         3cx_srtp_4-620x583.jpg

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

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

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

        Нужна консультация?

        Наши специалисты ответят на любой интересующий вопрос

        Задать вопрос
        Поделиться
        Назад к списку
        © 2021 Все права защищены.
        +7 (499) 113-65-73
        Заказать звонок
        sale@voipnotes.ru
        г. Москва 2-й Михайловский проезд 9
        Политика конфиденциальности
        Версия для печати
        © 2021 Все права защищены.
        Заказать звонок
        Написать сообщение