Sip tls что это
Sip tls что это
Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра. + 7 495 103 1508
Asterisk SIP/TLS (Transport Layer Security)
Описание аргументов:
Запрос на создание нового сертификата.
Создание запроса на сертификат (Certificate Signing Request).
Автоматически будет создан новый закрытый RSA ключ длиной 1024 бита. Длину ключа можете настроить по своему усмотрению.
Закрытый ключ сохранить в файл ca.key.
Срок действия сертификата 500 дней. Размер периода действия можете настроить по своему усмотрению. Не рекомендуется вводить маленькие значения, так как этим сертификатом вы будете подписывать клиентские сертификаты.
-subj /C=RU/ST=Msk/L=Msk/O=sipring/OU=asterisk/CN=igor/emailAddress= Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра.
Данные сертификата, пары параметр=значение, перечисляются через ‘/’.
Описание параметров:
Сертификат сохранить в файл ca.crt.
В результате выполнения команды появятся два файла ca.key и ca.crt. Подготовим файл сертификата для Asterisk.
И создадим структуру каталогов и файлов, соответсвующую описанной в конфигурационном файле
И подпишем его с помощью доверенного сертификата.
Описание аргументов:
Подпись запроса с помощью CA.
Использовать конфигурационный файл ca.config.
CSR находится в файле client.csr
Сохранить сертификат в файл client.crt
Не спрашивать подтверждения подписи.
И клиента подключаемого по TLS.
Перегружаем конфигурацию *CLI> sip reload и переходим к третьему этапу. Копируем файл сертификата, подготовленный нами на первом этапе, на машину, где запущен softphone. И запускаем установку сертификата.
Мастер импорта сертификатов выполнит все необходимые действия.
Контролируем подключение на Asterisk, sip show tcp.
и sip show peer 4507
Видим что регистрация прошла успешно. И наша работа по организации регистрации на Asterisk по протоколу TLS, завершена.
Защита от прослушивания разговоров — строим безопасную SIP телефонию своими руками
Привет, Хабр!
В этот раз хочу рассказать о технологиях шифрования VoIP звонков, о том какую защиту дают разные подходы и как организовать наиболее защищенную от прослушивания голосовую связь с технологическими гарантиями безопасности.
В статье я постараюсь доступно изложить особенности таких технологий как SIP\TLS, SRTP и ZRTP. И продемонстрирую конкретные схемы использования на примере нашего сервиса ppbbxx.com
Немного теории
Любой VoIP вызов состоит из 2-х основных составляющих: обмена сигнальной информацией и передачи между пользователями media потоков с голосом и/или видео.
На первом этапе, в процессе обмена сигнальной информацией, клиенты напрямую либо посредством сервера договариваются между собой о параметрах устанавливаемого вызова. Если связь устанавливается с помощью сервера, на основе сигнальной информации сервер авторизует клиента, устанавливает кто и кому звонит, проводит маршрутизацию и коммутацию. Благодаря данным сигнального протокола клиенты и сервер согласуют метод шифрования, используемые media кодеки, обмениваются ip адресами и номерами портов, где ожидается приём media и тд. Происходит это по таким протоколам как SIP, XMPP и прочим.
Непосредственно «разговор», то есть обмен между клиентами голосовыми данными, как правило происходит по протоколу RTP. Данные внутри передаются в том виде, о котором договорились клиенты и сервер на «сигнальном» этапе. Обмен голосом возможен как напрямую между клиентами, так и через сервер — посредник. Во втором случае сервер может помочь клиентам с прохождением NAT и в выборе кодеков.
Итак, что же собой представляет шифрованный VoIP вызов? Дальше речь пойдёт о SIP протоколе как наиболее популярном.
Как мы уже выяснили, звонок состоит из сигнальной и media частей, каждая из которых может быть зашифрована отдельно с применением специальных методов-протоколов. Для шифрования сигнальной информации применяется SIP\TLS, для шифрования «голоса» ZRTP и SRTP протоколы.
SIP\TLS — грубо говоря, аналог HTTPS для обычного SIP. Протокол позволяет клиенту убедиться, что он общается с нужным сервером при условии, что клиент доверяет предоставленному сервером сертификату. Подробнее можно прочитать на википедии
SRTP и ZRTP — это два разных способа шифровать RTP потоки. Принципиальное отличие между ними в том, что обмен ключами для SRTP происходит в сигнализации (на первой сигнальной стадии установки вызова). А для ZRTP непосредственно в начале обмена RTP пакетами (во второй, «медийной» части) по специальному протоколу, основанному на методе криптографии Диффи — Хеллмана.
Важно то, что для SRTP обязательным условием надёжности шифрования звонка является одновременное использование SIP\TLS + SRTP, иначе злоумышленнику не составит труда получить ключи (которые будут переданы по не шифрованному SIP) и прослушать разговор. В то время как для ZRTP это не важно, RTP поток будет надёжно зашифрован не зависимо от того, шифруется сигнализация или нет. Более того протокол умеет определять наличие «man in the middle» (в том числе серверов услуг!) между непосредственно говорящими клиентами. Это позволяет быть уверенным в том, что разговор невозможно прослушать, по крайней мере с точки зрения прослушивания сети/среды передачи данных.
Схема подключения SIP клиентов с различными настройками шифрования:
Можно выделить следующие схемы установки шифрованного звонка:
На этом закончим с теорией и перейдём к практике! Настроим собственный SIP сервер, создадим SIP пользователей, установим SIP клиенты и научимся совершать шифрованные звонки c помощью бесплатного сервиса облачной телефонии ppbbxx.com
Настройка сервера
Для начала нужно создать собственный сервер. Для этого нужно зайти на сайт услуги ppbbxx.com, пройти простую регистрацию и войти в интерфейс настроек.
Дальше необходимо настроить используемые кодеки и методы шифрования. Для этого нужно нажать значок с шестерёнкой слева от SIP идентификатора. Я планирую использовать SIP клиент (CSipSimple) на смартфоне и хочу использовать метод шифрования ZRTP поэтому в «basic» вкладке настроек выбираю кодеки G729 и SILK, а во вкладке «protection» ZRTP метод.
Вы можете выбрать другие параметры. Важно только заметить, что настройки для SIP аккаунта в интерфейсе услуги должны соответствовать настройкам в SIP клиенте. Это необходимо для обеспечения корректной связи между клиентами с разными настройками кодеков и шифрования. Так же не забываем сохранять созданную конфигурацию.
В целом, для настройки простейшей конфигурации этого достаточно. Можно настраивать SIP клиенты и звонить между ними, набирая их номера 1000, 1001, 1002, 1003. При желании к этому можно добавить общий SIP шлюз для звонков в телефонную сеть и настроить соответствующую маршрутизацию звонков. Но, в таком случае, это уже несколько иная схема использования услуги, которая требует скорее другого рода мер безопасности, нежели шифрование трафика до шлюза.
Перейдём к настройке SIP клиентов
Как я уже сказал, я планирую использовать CSipSimple на андроид смартфонах. Первым делом нужно установить клиент, используя стандартный Play Market, либо скачать на сайте производителя, который кстати открывает исходники своего клиента, что в отдельных случаях может иметь едва ли не сакральное значение. Установить нужно сам клиент и дополнительно кодеки. У меня установлены «CSipSimple», «Codec Pack for CSipSimple» и «G729 codec for CSipSimple». Последний платный и использовать его не обязательно, бесплатные SILK и OPUS обеспечивают достойное качество звонков по 3G сетям.
Совершение звонков с использованием ZRTP
После того, как все настройки выполнены, совершим несколько звонков для того чтоб продемонстрировать работу CSipSimple в звонках между пользователями с различными настройками безопасности.
Сразу после выполнения инструкции звонок SIP пользователя 1001 пользователю 1000 будет выглядит таким образом.
CSipSimple показывает, что в звонке участвует MitM сервер, к которому подключены оба клиента. Параметр EC25 означает, что используется протокол Диффи-Хеллмана на эллиптических кривых с параметром 256 бит. AES-256 — алгоритм симметричного шифрования, который применяется. Статус ZRTP — Verifyed означает, что контрольная строка SAS подтверждена пользователем.
Изменим режим передачи медиа в настройках ppbbxx для обоих клиентов. Установка direct media = yes позволит передавать голос напрямую. В этом случае стороны видят одинаковые строки SAS, используется алгоритм симметричного шифрования Twofish-256. Использование ZRTP в этом режиме требует от клиентов намного большей свместимости и менее надежно с точки зрения установки связи, поскольку сервер не участвует в передаче данных. Обязательно использование одинаковых аудиокодеков на всех клиентах и корректная работа NAT.
Если у SIP пользователя 1001 шифрование не установлено, тогда как 1000 использует ZRTP, то второй клиент покажет, что зашифрованная передача голоса происходит только до сервера (End at MitM).
Шифрование голоса в VoIP – протоколы SRTP и TLS
Когда обсуждается внедрение бизнес-телефонии у клиента, очень серьёзно рассматриваются вопросы безопасности. Чем больше нашей информации попадает в Интернет, тем более мы уязвимы. Описать криптографические протоколы VoIP заказчику без инженерных знаний всё-таки довольно сложно. Можно ошеломить его множеством специальных терминов. Поэтому мы предлагаем краткий обзор методов обеспечения безопасности VoIP-телефонии – шифрование голоса в VoIP и шифрование служебных сообщений – стараясь сохранить понятную терминологию.
Обзор VoIP-технологии
Перед тем как говорить о технологиях безопасности, попробуем объяснить принцип VoIP простыми словами. Когда разговор передается через Интернет, он разбивается на небольшие пакеты, представляющие из себя набор так называемых слоев или уровней данных. Каждый уровень играет важную роль в передаче пакета – это работает наподобие матрешки или конвейера. Каждый уровень обеспечивает доставку информационного пакета в правильном порядке и нужном направлении, чтобы полученная информация не отличалась от переданной. В этой статье мы сосредоточимся на верхних уровнях – Прикладном и Транспортном, как показано на схеме ниже. Если вы используете IP-телефон, то Прикладной уровень – это протокол SIP. Звонок начинается с SIP-сообщения. Затем Транспортный уровень определяет, как быстро и в каком порядке информация должна быть доставлена получателю. Дополнительно о работе протоколов для передачи голоса можно узнать здесь.
Шифрование голоса в VoIP – протокол SRTP
Когда голос передается по технологии VoIP, и требуется шифрование, используется транспортный протокол Secure Real-time Transport Protocol (SRTP). Он обеспечивает шифрование трафика, аутентификацию сообщений и защиту от атак повторного воспроизведения. Это простой и быстрый криптографический протокол. Он защищает вашу информацию при передаче в открытых сетях. Представьте протокол SRTP как ремень безопасности в автомобиле. Он не влияет на скорость автомобиля и его маршрут, однако защищает пассажиров.
Протокол SRTP хорош еще и тем, что использует стандарт шифрования Advanced Encryption Standard (AES). Это стандарт шифрования мультимедиа-потоков, который используется американским правительством, финансовыми организациями и международными институтами для надежной защиты информации.
Если вам необходимо сделать действительно зашифрованный звонок, протокол SRTP должен быть включен на обеих сторонах вызова. На поддерживаемых 3CX телефонах вы можете увидеть, что шифрование включено, по маленькой иконке замка на LCD-дисплее. Таким образом, еще до того как вы начинаете говорить, вы можете быть уверены, что разговор не прослушают.
Протокол SIP over Transport Layer Security (TLS)
Второй протокол – Transport Layer Security (TLS) – шифрует другую информацию. В время вызова передаются служебные сообщения – телефонные номера, имена пользователей и т.п., которые следует также надежно “спрятать”. Этот протокол защищает вас от перехвата и модификации сообщений SIP. Таким образом, хотя TLS и SRTP – это два криптографических протокола, они защищают разные типы информации: SRTP – сам голос, TLS – служебную информацию.
Подробное изучение этих протоколов? разумеется, выходит за рамки этой статьи. Но надеемся, она поможет вам понять, как работает шифрование голоса в VoIP. Если вы занимаетесь внедрением UC-систем, стоит изучить дополнительную информацию по безопасности VoIP-технологий. Особенно это актуально, если ваши АТС объединены в единую систему через Интернет или есть удаленные пользователи.
Про реализацию протоколов SRTP и TLS в IP-АТС 3CX можно узнать из этой статьи.
Настройка TLS в Asterisk. Шифруем SIP и RTP
Если вы фанат(параноик) безопасности то эта статья для вас. Мы рассмотрим настройку безопасного SIP в астериск а так же будем шифровать голос с помощью SRTP.
Конфигурация:
Centos 6.5 minimal x86_64
Asterisk 11.16.0 собранный с srtp
Cофтфоны: Blink 0.9.1.2, Zoiper 3.6, Bria3.3.0 (IOS), Acrobits 5.6 (IOS), Zoiper 1.19 (Android), Bria 3.0.5 (Android), Zoiper 3.3 (Linux)
Телефоны: Snom 820, Grandstream 1450, Fanvil C58P
Немного теории. Как известно, asterisk для сигнального протокола SIP использует UDP порт 5060 (обычно) а так же передает эту информацию в открытом виде, поэтому, перехватив траффик, мы можем получить всю информацию касательно номеров и собственно, сам разговор. Помочь с данной проблемой нам сможет SIP по TLS, который уже в свою очередь будет шифровать сигнальные данные используя при этом порт 5061 (обычно) TCP, поэтому, даже перехватив траффик, злоумышленник получит информацию в зашифрованном виде, но это касается только SIP протокола, голос шифровать нужно отдельно, тут нам поможет SRTP. Стоит отметить, что использовать только TLS без SRTP не имеет смысла, так как медиа траффик остается без шифрования.
Стоит отметить, что использование TLS не панацея, и не защитит вас от MITM-атак (Man in the middle, человек посередине) если не используется проверка подлинности сертификатов.
Теперь практика. На момент написания статьи мы использовали последнюю актуальную версию asterisk из 11 ветки 11.16.0 (качаем тут) Так же нам понадобится собрать астериск с поддержкой SRTP, для этого нам нужна библиотека libsrtp 1.4.4 (скачать можно тут)
Для начала можно попробовать установить libsrtp из репозитория линукса:
yum install libsrtp-devel
Если пакета нет, то переходим к ручной установке.
Установка libsrtp:
Теперь пересобираем астериск с модулем SRTP:
tar zxvf asterisk-11-current.tar.gz
cd asterisk-11*
./configure —libdir=/usr/lib64 (libdir используем если у вас система x86_64)
makemenuselect (если libsrtp был установле нверно, то в ResourceModules увидим res_srtp)
make && make install
После того как мы собрали астериск с необходимым модулем, нужно настроить sip.conf для работы с TLS, но сначала нам потребуется создать необходимые сертификаты. Необходимый скрипт уже есть в скачанном нами архиве с астериском. Переходим в распакованную папку с астериском а далее в /contrib/scripts
Нас интересует ast_tls_cert
Прежде чем генерировать сертификаты, рекомендую зайти в скрипт и поправить все 365 на 3650 или любое другое число, что бы срок выдачи был не год, а 10 лет.
Так же нам необходимо прописать имя хоста в системе. Редактируем /etc/hosts и пишем в конце первой строчки желаемое имя, например pbx.company.ru
Запускаем генерацию сертификатов:
После запуска скрипта, система предложит ввести ключевую фразу для создания ca.key далее ее нужно повторить и ввести еще два раза для создания asterisk.key и asterisk.pem
На этом можно было и закончить, но в WIKI астериска говорится о генерации клиентского сертификата. Выполним необходимые действия а дальше разберемся, так ли необходим этот сертификат.
После запуска скрипта нам потребуется ввести ключевую фразу от ca.key
Ниже список файлов который мы должны были получить:
Переходим к sip.conf
[general]
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=no
Здесь мы активируем TLC, указываем на каких интерфейсах и какой порт слушать, указываем сертификат астериска а так же сертификат ЦС (если используем самоподписанные сертификаты для пиров) включаем все виды шифрования (более подробно о типах шифрования можно прочитать на официальном сайте openssl), в последней опции мы либо разрешаем(no) проверку сертификата пира, либо не разрешаем(yes)
Конечно, лучше использовать опцию tlsdontverifyserver=no но, на практике с этим много проблем и опция отрабатывает не совсем так как задумано, даже если сертификат не совпадает с проверкой по ca.crt, астериск все равно позволяет совершать вызовы, хоть в консоль и будут сыпаться ошибки. Поэтому рекомендуем использовать tlsdontverifyserver=yes
Так же в большинстве софтфонах и телефонах невозможно установить клиентский сертификат, при подключении таких девайсов asterisk так же нас будет уведомлять в консоли о проблеме с подключением, но вызовы, в зависимости от модели телефона или софтфона, совершать все так же возможно.
Перезапускаем астериск, и проверяем работоспособность порта командой:
Если все верно видим примерно следующее
Теперь выполним настройки в астериске на пире для работы с TLS и SRTP, в sip.conf активируем для пира tls и включим srtp (encryption):
[100]
type=peer
secret=$tr0NgPas5w0rd
host=dynamic
context=local
disallow=all
allow=alaw
transport=tls
encryption=yes
qualify=yes
Делаем sip reload в консоли asterisk и переходим к настройке клиента, используем софтфон Blink, который нам рекомендуют в wiki астериска:
При создании аккаунта указываем sip адрес как номер @ip-asterisk (100@192.168.10.7)
Во вкладке Media в поле RTP Options опция sRTP Encryption: mandatory, это включает шифрованиевсегда.
Во вкладке Server Settings указываем ip сервера, порт 5061 и протокол TLS
Во вкладке Network, MSRP Transport TLS
Во вкладке Advanced указываем открытый и закрытй ключ клиента, который мы генерировали выше, 100.pem
Если хотим проверить подлинность сервера (asterisk) к которому подключаемся,то ставим галку на Verify server, тогда в глобальной вкладке Advanced нам нужно указать сертификат цс, ca.crt либо этот сертификат должен быть установлен в системе. Если же ваш сервер asterisk использует сертификат подписанный доверенным ЦС то эти действия (выбор сертификата или установка) выполнять не нужно.
После того как софтфон подключился, пробуем совершить вызов на номер 200, у нас это телефон Snom 820 тоже настроенный на tls/srtp. При совершении вызова, справа, на синем фонем появляется значок замка, что информирует нас о использовании протокола TLS (т.е. сигнальная часть, SIP шифруется)
После того как состоялся вызов, появляется еще один значок, замок на оранжевом фоне, что свидетельствует о шифровании медиа трафика (SRTP)
На телефоне Snom 820 это выглядит похожим образом, в левом углу экрана появляется значок замка, а если во время разговора нажать кнопку Message то получаем более подробную информацию о вызове, где видим использование TLS/SRTP
Если по какой-то причине визуально шифрование на телефоне/софтфоне не отображается, всегда можно проверить в астериске, для это нужно выполнить команду sip show channel и идентификатор канала (можно нажать TAB при этом увидим все активные) И так, в поле Transport мы должны увидеть TLS а в поле Media — SRTP
Ниже скриншоты с софтфонов и телефонов на которых работает шифрование вызовов через астериск:
Blink 0.9.1.2 (Windows)
Zoiper 3.6 (Windows)
Bria 3.3.0 (IOS)
Acrobits 5.6 (IOS)
Bria 3.0.5 (Android)
Zoiper 1.19 (Android)
Snom 820
Grandstream 1450
Fanvil C58P
Ну и напоследок скриншот из Wireshark
На этом все, если вы хотите что бы звонки через вашего оператора тоже шифровались, то сам оператор связи должен поддерживать TLS/SRTP, иначе трафик от клиента до сервера астериска будет в шифрованном виде, а от астериска до оператора в открытом. Одним из таких операторов, который поддерживает шифрование, является SIPNET.