4、SIP传输层安全审计:TLS/DTLS配置审计
传输层安全,说白了就是给SIP通话加一把锁。我见过太多企业,SIP服务器裸奔在公网上,信令明文传输,抓个包就能听到老板在电话里骂人。嗯,这节我们就来聊聊怎么审计这把锁够不够牢。
4.1 TLS/DTLS版本与密码套件审计
先说说TLS版本。我个人习惯,低于TLS 1.2的直接判不合格。为什么?TLS 1.0和1.1已经被RFC 8996正式废弃了,你还在用,等于告诉黑客「欢迎来搞」。
密码套件这块,我建议你记住一个原则:用AEAD,别用CBC。AEAD模式(比如GCM)同时提供加密和完整性校验,而CBC模式容易受到padding oracle攻击。
下面是我常用的审计检查清单:
- 版本要求: 仅允许TLS 1.2和TLS 1.3,禁用SSLv3、TLS 1.0、TLS 1.1
- 密码套件: 优先使用TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256或更强的套件
- 禁用项: 所有RC4、DES、3DES、CBC模式套件必须禁用
- 密钥交换: 禁用静态RSA密钥交换,必须使用DHE或ECDHE(前向安全性)
# 检查SIP服务器支持的TLS版本和密码套件
openssl s_client -connect sip.example.com:5061 -tls1_2 -cipher 'ECDHE+AESGCM' -msg
# 扫描弱密码套件
nmap --script ssl-enum-ciphers -p 5061 sip.example.com
你想想看,如果密码套件里还留着TLS_RSA_WITH_AES_128_CBC_SHA,那你的SIP信令基本上就是明文——只是多了层薄薄的伪装。
4.2 SIPS URI强制审计
SIPS URI,就是sips:user@domain这种格式。它和sip:的区别在于,SIPS强制要求整个信令路径都使用TLS加密。但这里有个坑:SIPS只保证传输层加密,不保证端到端。
我曾经审计过一个VoIP平台,他们的配置里写了SIPS URI,但实际测试发现——中间某个代理节点降级成了普通SIP。为什么会这样?因为SIPS的强制特性依赖于每个hop都正确实现,只要有一个节点不支持,就会静默降级。
审计要点:
- 检查UA配置: 确认所有用户代理的Contact头、Route头都使用sips: URI
- 检查服务器配置: 确认代理服务器和注册服务器强制要求SIPS,拒绝普通SIP请求
- 检查路由表: 确认DNS SRV记录中_tls服务优先级高于_tcp
- 抓包验证: 实际抓包确认所有SIP消息都在TLS隧道内传输
4.3 传输层加密强度评估
加密强度评估,说白了就是看看你的TLS配置到底有多硬。我一般从三个维度来打分:
| 评估维度 | 优秀(3分) | 合格(2分) | 不合格(0分) |
|---|---|---|---|
| TLS版本 | 仅TLS 1.3 | TLS 1.2 + 1.3 | 包含TLS 1.1或更低 |
| 密钥长度 | ≥256位对称密钥 | 128位对称密钥 | <128位或使用RC4 |
| 前向安全性 | 仅ECDHE | 支持DHE/ECDHE | 使用静态RSA |
| 证书强度 | ECDSA P-384或RSA 4096 | RSA 2048 | RSA 1024或自签名 |
总分低于6分的,我建议直接拉警报。我记得有一次审计,发现某运营商的SIP中继居然还在用512位的RSA证书——这玩意儿用普通笔记本几分钟就能破解。
4.4 中间人攻击防护审计
中间人攻击(MITM)是SIP传输层最大的威胁之一。攻击者可以拦截TLS握手,降级密码套件,甚至伪造证书。怎么防?我总结了三道防线:
第一道防线:证书验证
很多SIP客户端默认不验证服务器证书!这是个致命问题。我建议你检查:
- 客户端是否配置了CA证书链
- 是否启用了主机名校验(CN/SAN匹配)
- 证书吊销检查(CRL或OCSP)是否开启
第二道防线:证书固定(Certificate Pinning)
对于内部SIP系统,我强烈建议做证书固定。把服务器证书的公钥哈希值硬编码到客户端配置里,这样即使CA被攻破,攻击者也无法伪造。
# 在opensips.cfg中配置
modparam("tls_mgm", "certificate", "/etc/opensips/tls/server.crt")
modparam("tls_mgm", "private_key", "/etc/opensips/tls/server.key")
modparam("tls_mgm", "ca_list", "/etc/opensips/tls/ca.crt")
# 启用证书验证
modparam("tls_mgm", "verify_cert", "1")
modparam("tls_mgm", "require_cert", "1")
第三道防线:DTLS-SRTP
对于媒体流(RTP),我建议使用DTLS-SRTP。它能在UDP上提供类似TLS的保护,而且支持SRTP密钥协商。我在一个金融客户的项目里部署了DTLS-SRTP,成功拦截了一次针对媒体流的MITM攻击——攻击者抓到的RTP包全是乱码。
4.5 知识体系总览
下面这张图,是我梳理的SIP传输层安全审计的核心逻辑。你可以把它当作检查清单来用:
这张图的核心思路是:从四个维度分别审计,最后汇总成一个安全评分和整改建议清单。我在实际项目中,通常会给每个维度打分,然后加权平均。低于70分的,必须整改后才能上线。
好了,传输层安全审计就聊到这里。记住一句话:SIP安全不是配了TLS就完事了,你得确保每个环节都锁死。下一节我们会聊SIP身份认证安全审计,到时候见。