Sam*_*nes 9 security ssl http asterisk voip
我正在使用 Ubuntu Server 16.04 打包的 Asterisk 13.1.0 来运行纯 VoIP 电话系统。Asterisk 有一个模块——phoneprov允许它模板化特定行的配置文件并从其内置的 HTTP 服务器提供它们。我想用它来配置我的 Polycom IP 电话,但我不知道如何安全地这样做。更复杂的是,我已经在使用内置的 HTTP 服务器进行 SIP over WebSockets。
据我所知,该phoneprov模块根本没有身份验证或授权机制。它似乎只是向任何询问的人提供任何文件。由于生成的配置文件包含注册为一行所需的所有凭据,因此可以向内置 HTTP 服务器发出 HTTP 请求的任何人都可以注册为通过phoneprov. 这似乎是一个太明显的安全问题,不可能存在于像 Asterisk 这样备受瞩目的软件中,而在文档中甚至(据我所知)在整个 Internet 上都没有看到它。我在这里错过了什么吗?
至少在我看来,验证用于配置的硬件 IP 电话的理想方法是通过 TLS 客户端证书。几乎所有主要制造商的手机都带有由私有 CA 签署的客户端证书,该证书通过 MAC 地址识别手机。由于配置文件也由 MAC 地址提供服务,因此将证书中的 MAC 与 URL 中的 MAC 进行匹配并以这种方式控制访问非常简单。
这就是我的基于 nginx 的配置服务器(它处理除线路凭据之外的所有配置)所做的。然而,Asterisk 永远不支持 TLS 客户端身份验证。它有一个 TCP 和 TLS 套接字侦听器的常见实现,我通过阅读源代码确认它不支持请求客户端证书。
更正:Asterisk 的tcpctls系统确实支持客户端证书验证,但它只能验证客户端证书是否有效以及(可选)是否commonName与客户端的主机名匹配。虽然可以为 Asterisk HTTP 服务器启用该选项,但它对保护没有多大帮助,phoneprov因为该模块不使用主机名(或其他任何内容)进行授权。它也会通过 WebSockets 破坏 SIP。
如果无法使用 TLS 身份验证,则使用 HTTP 基本身份验证来保护对配置文件的访问是有意义的。访问配置服务器的凭据本身必须以某种方式进行配置,但这总比没有好。
不幸的是,我通过阅读源代码确认,虽然 Asterisk 的 HTTP 服务器支持 HTTP 基本身份验证,但该phoneprov模块并未使用该功能。
如果 Asterisk 无法为自己验证请求,我想在请求到达 Asterisk 之前使用像 nginx 这样的反向代理来处理身份验证。在我的情况下,这将特别方便,因为我已经将 nginx 配置为对配置客户端进行身份验证。不幸的是,这种方法有两个主要问题:
首先,X-Forwarded-For当在反向代理后面使用时,Asterisk 不支持标头或任何其他发现真实客户端 IP 地址的方法。我已经通过检查源代码确认了这一点。Asterisk 中的所有请求似乎都来自127.0.0.1使用反向代理。对于 来说,这不会是世界末日phoneprov,但是 SIP over WebSockets 实现在同一台服务器上,并且不正确的客户端 IP 地址会导致 SIP 出现严重问题。没有办法将 SIP over WebSockets 服务器与phoneprov服务器分开,并且phoneprov服务器不能暴露在 Internet 上或者反向代理是没有意义的。
其次,即使客户端 IP 问题不是问题,也很难保护对 Asterisk HTTP 服务器的本地访问,因为它只支持侦听 TCP 套接字。使用反向代理进行身份验证时,需要确保代理与后端之间的连接安全,以防止攻击者绕过代理。当代理和后端在同一台机器上时,通常为该连接使用 UNIX 域套接字,因此可以使用文件系统权限来保护它。这种方法对于 Asterisk 来说是不可能的,并且很难保护 TCP 套接字,即使是绑定到 的127.0.0.1,防止未经授权的本地进程(如受损的 PHP 应用程序)访问。
该phoneprov模块还支持将其生成的文件导出到文件系统。这样做是可以接受的,然后通过另一个 Web 服务器为它们提供服务,该服务器可以像我现有的 nginx 配置服务器一样对客户端进行身份验证,尽管考虑到需要在更改时重新生成它们,所以不太方便。但是,如果文件也不能通过 Asterisk HTTP 服务器未经身份验证访问,则该方法仅提供安全性。
不幸的是,根据我对源代码的阅读,除了phoneprov完全禁用 Asterisk HTTP 服务器之外,似乎没有任何方法可以阻止通过 HTTP 提供其文件,我不能这样做,因为我需要它用于 SIP网络套接字。
我想使用 Asterisk 的phoneprov模块来配置我的硬件电话,但我找不到任何方法来保护对其生成的配置文件的访问。这显然是不可接受的,因为这些文件包含 SIP 凭据。有什么我在这里想念的吗?有人phoneprov在生产中使用吗?他们是如何保护它的?
| 归档时间: |
|
| 查看次数: |
450 次 |
| 最近记录: |