Browsed by
Tag: tls

安全的企业 SIP 通信

安全的企业 SIP 通信

企业内部的通信系统一般部署在私网内部,在网络边缘部署 SBC 或者语音网关与外部进行通信,因此大部分场景下企业通信都很安全。然而越来越多的企业在云端部署 SIP 服务器,而企业内部的 SIP 终端也越来越多地从外部网络接入企业 SIP 服务器,这使得部分(或者全部)企业通信系统暴露在公共网络中,安全问题日益严重。

企业 SIP 通信安全涉及网络系统的许多方面,例如防火墙等。仅就 SIP 通信本身而言必须加密,避免将通信信息暴露给其他网络用户。加密的 SIP 通信包含两个部分:(1)SIP 消息(信令)加密,以及(2)语音流(RTP)加密,如下图所示:

SIP 加密通信网络拓扑

当然,企业可以部署 VPN 将整个网络系统(不仅仅是通信系统,也包括办公系统等)进行加密,加密的 SIP 通信也可以建立在 VPN 之上。建立企业 VPN 成本比较高、系统比较复杂,本文仅讨论加密的 SIP 通信,不涉及VPN 等其他网络安全技术。

SIP 消息的加密通过「SIP over TLS」实现,云 miniSIPServer、本地 miniSIPServer 以及 miniSIPPhone 都支持 SIP over TLSv1.2 / TLSv1.3。请参考在线文档,本文不再赘述。

语音流通过 SRTP 传输实现加密,SRTP 的 master key 和 master salt 通过 SIP 消息的 SDP ( RFC4568 )传输、协商,因此 SIP 消息加密才能确保 SRTP 的关键信息不会泄露,仅仅 SRTP 传输加密语音流、但是明文传递 SIP 消息,不能确保整个 SIP 通信的安全性。

RFC4568 中定义了几种加密套件,目前我们选择支持默认的 AES_CM_128_HMAC_SHA1_80 ,暂不支持其他加密套件。

SRTP 协议族包含诸多扩展,目前 miniSIPServer 和 miniSIPPhone 支持最基础的 RFC3711 协议,这也是绝大多数 SIP 设备(包括服务器、PBX、SBC 以及终端)都支持的基础 SRTP 协议。目前不支持 DTLS-SRTP,主要考虑以下几点:(1)SIP over TLS 已经可以确保 master key & salt 的安全性,与 DTLS 的作用等效;(2)虽然 WebRTC 等互联网技术广泛采用了 DTLS-SRTP,但大部分 SIP 设备并不支持 DTLS-SRTP,在企业 SIP 通信领域会有互联互通的问题。

miniSIPServer 和 miniSIPPhone 默认可以选择 SRTP,无需额外的配置。部分 SIP 设备需要明确配置是否选择 SRTP,例如 MicroSIP 在配置账号时,「Media Encryption」需做以下设定:

MicroSIP 配置 SRTP
miniSIPPhone 支持 SIP over TCP/TLS

miniSIPPhone 支持 SIP over TCP/TLS

是的,我们又升级 miniSIPPhone了!

miniSIPPhone V10.10 现在可以支持 SIP over TCP/TLS。在 SIP 账户的配置中新增了“传输”一项,用于指定采用哪种传输方式连接 SIP 服务器:

SIP 账户中“传输”项的配置

如果采用 SIP over TLS,那所有的 SIP 消息都是加密传输。如果企业通信系统中的设备(分机或者服务器)是部署在公共网络,那就非常有必要对通信内容进行加密保护。我们知道云 miniSIPServer 系统支持 SIP over TLS,而且云系统都部署在公共网络中,因此如果客户端同时部署 miniSIPPhone 的话,整个企业 VoIP 系统显然会更安全。

当然,miniSIPPhone 也可以与其他支持 SIP over TCP/TLS 的服务器(或者 PBX )一起工作,共同构建完整、安全的企业通信系统。

支持 TLSv1.3

支持 TLSv1.3

我们最近更新了 miniSIPServer 以支持 TLSv1.3。本次修改不影响配置,如果您升级 miniSIPServer 到最新版本,无需修改任何配置。

miniSIPServer 有两个模块有可能用到 TLSv1.3:(1)SIP 服务器模块;以及(2)嵌入式 HTTP 服务器模块。如果您的 SIP 话机(或者软电话)支持 TLSv1.3,那采用这个协议将能更好地保护您的通信。请参考《基于 TLS 的 SIP》了解更多细节。目前本地 miniSIPServer 和云端 miniSIPServer 都可以支持基于 TLSv1.3的 SIP 通信。

本地 miniSIPServer 采用内嵌式 HTTP 服务器提供 web 管理,默认没有加密。如果您需要或者希望通过公共网络管理、配置 miniSIPServer,那么建议启用加密传输的 HTTP 服务。目前主流的浏览器,例如Chrome、Edge、Firefox 等,都支持 TLSv1.3,请参考《Web 管理》配置和启用加密的HTTP。

安全问题

安全问题

OpenSSL 最近发布了新的版本用于修复若干严重的安全问题,而 miniSIPServer 是采用 OpenSSL 的库提供 “SIP over TLS”特性,因此我们也相应将 miniSIPServer 升级到最新的版本,即 V40 (20230221),该版本采用最新的 OpenSSL 库。

如果您在 VoIP 网络中部署了 “SIP over TLS”,我们强烈建议您将 miniSIPServer 升级到最新的版本。

使用“SIP over TLS”接入云通信系统

使用“SIP over TLS”接入云通信系统

我们最近升级了云端miniSIPServer系统,加入了一些重要的特性。其中,最重要的特性就是支持“SIP over TLS”。

默认情况下,云系统打开 TCP 6060端口接受基于 TLS 加密的 SIP 消息(即 SIP over TLS)。该特性对所有虚拟节点都有效,无需额外付费,也无需额外进行配置。

现在 SIP 电话可以采用加密的 SIP 消息连接到云端 miniSIPServer,但是对于“外线”或者“SIP中继”,仍然只能用传统的、基于 UDP 的普通 SIP 消息与 VoIP 运营商对接。

“SIP over TLS”仅用于加密SIP消息。如果您希望同时加密媒体流,例如加密语音流和视频流,您应当在话机或者终端中配置 SRTP。默认情况下,媒体流不经过 miniSIPServer,只是终端之间自行处理。

请参考在线文档“基于TLS的SIP”了解更多的细节。

改进”基于 TLS 的 SIP”

改进”基于 TLS 的 SIP”

最近有些客户向我们报告了一个导致miniSIPServer崩溃的问题,所有这些客户都部署了“基于TLS的SIP”,所有的崩溃报告都显示是SSL/TLS加密库内部崩溃。基于这些信息,我们更新了miniSIPServer,在新版本中做了以下一些关键修改:

(1)SSL库升级到最新的版本;

(2)默认将只保留TLSv1.2加密方式,SSLv2、SSLv3、TLSv1以及TLSv1.1都被禁止。在我们调查问题的过程中,我们发现有些黑客企图利用SSLv3的缺陷骇入miniSIPServer,出于安全防护的考虑,我们全部移除这些有隐患的加密方式。未来我们会考虑加入更多更安全的加密方式,比如TLSv1.3。目前如果要部署“基于TLS的SIP”,必须确保SIP终端或者电话也支持TLSv1.2加密方式。

另一方面,我们也更新了“基于TLS的SIP”文档。在文档中新增了一些简单的示例,演示使用openSSL创建自签名的数字证书等文件。