Рубрика:
IP-телефония /
HowTo
|
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|
СЕРГЕЙ ЯРЕМЧУК, автор более 800 статей и шести книг. С «СА» с первого номера. Интересы: сетевые технологии, защита информации, свободные ОС, grinder@samag.ru
Настройка SRTP и TLS/SSL в Asterisk
Одной из распространенных атак на VoIP является подбор регистрационной информации и перехват данных. В базовой настройке сервера Asterisk FreeSWITCH, как, впрочем, и у всех остальных, не используется шифрование
Поэтому реализовать MITM очень просто – достаточно изменить DNS или перехватить сеанс (SIP registration hijacking). Всех этих проблем можно избежать, настроив шифрование.
Использование VPN не всегда удобно для конечного пользователя, кроме этого, увеличиваются накладные расходы на передачу пакета, что нередко является причиной задержек и, как следствие, потери качества связи. Также в этом случае шифруется только канал VPN-серверами, внутри сети переговоры идут по незащищенному каналу, поэтому разговор легко перехватить. Кроме этого, для шифрования переговоров можно использовать «штатные» протоколы – SRTP (Secure Real Time Protocol) или ZRTP (Z and Real-time Transport Protocol).
Протокол SRTP (RFC 3711) позволяет шифровать (AES128) голосовой поток, обеспечивать проверку подлинности (HMAC-SHA1) и требует меньших ресурсов для работы. Но он не обеспечивает защиту процесса аутентификации, поэтому вместе с ним обычно задействуется TLS/SSL.
Протокол ZRTP (RFC 6189) специально для VoIP разработан Филиппом Циммерманом, создателем PGP. В отличие от SRTP он обеспечивает безопасную аутентификацию и шифрование данных, хотя и требует больших ресурсов. Во время инициализации звонка ZRTP использует метод обмена ключами Диффи – Хеллмана, для аутентификации применяется SAS (Short Authentication String). Весь разговор шифруется, пара ключей генерируется для каждого сеанса автоматически. Такой подход не требует PKI, и поддержку протокола легко встроить в уже существующие продукты.
VoIP-серверы Asterisk (от 1.8), FreeSWITCH поддерживают оба варианта: SRTP+TLS/SSL и ZRTP. Многие аппаратные и программные софтфоны также могут работать с защищенными данными: Linphone (TLS, SRTP, ZRTP), Blink (TLS, SRTP), Jitsi (TLS, SRTP, ZRTP), MicroSIP (TLS, SRTP).
Настройка TLS в Asterisk
Сервер Asterisk поддерживает TLS между серверами и сервер-клиент. RSA-ключи, используемые для шифрования, можно сгенерировать с помощью команды openssl genrsa, специальных скриптов astgenkey (astgenkey -n keyname) или ast_tls_cert (копируют ключи в /var/lib/asterisk/keys). Последние не всегда доступны в пакетах или специальных дистрибутивах вроде Elastix, взять их можно на SVN-сервере (svnview.digium.com/svn/asterisk/branches/12/contrib/scripts).
Для активации TLS достаточно прописать в настройках (sip.conf) всего несколько команд:
tcpenable=yes
tcpbindaddr=0.0.0.0
tlscertfile=/etc/asterisk/cert/asterisk.pem
tlscafile=/etc/asterisk/cert/ca.crt
tlsprivatekey=/var/lib/asterisk/keys/example.org.key
tlsclientmethod=tlsv1
Проверить подключение легко:
$ openssl s_client host localhost port 5061
В настройках клиентской части просто разрешаем использование TLS:
transport=tls
Теперь подключение безопасно, и подсмотреть регистрационные данные нельзя, хотя сами переговоры не шифруются. Чтобы включить SRTP, достаточно добавить одну строку в файле iax.conf или sip.conf:
encryption=yes
Перезапускаем настройки командой sip reload/iax2 reload, опционально можно провериться, загружен ли модуль
CLI> module show like res_srtp.so
Это все. Снифер покажет, что используется SRTP и перехват пакетов невозможен. Буква «Е» напротив подключенных клиентов в выводе iax show peers, означает, что шифрование активно.
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|