SIP 暴露公网的代价

一台暴露 5060 端口的 SIP 服务器上线 24 小时内就会遭到扫描爆破。一旦弱密码被攻破,攻击者会通过你的服务器向国际长途发起呼叫,几小时就能烧光几万甚至几十万话费。这不是危言耸听,每年都有真实案例。

典型爆破日志(Asterisk 控制台):

NOTICE[1234]: chan_sip.c: Registration from '<sip:1000@1.2.3.4>'
failed for '5.6.7.8:5060' - Wrong password
NOTICE[1234]: chan_sip.c: Registration from '<sip:1000@1.2.3.4>'
failed for '5.6.7.8:5060' - No matching peer found
高危警告:上线 SIP 服务器前必须做好以下三道防线!不要有任何侥幸心理。

第一道:强密码

分机密码必须满足:

生成强密码:

# 生成 20 位强密码
openssl rand -base64 20

第二道:fail2ban 拦截爆破

fail2ban 通过监控日志,对短时间内多次失败的 IP 自动拉黑。安装:

apt install -y fail2ban

创建 Asterisk 专用规则 /etc/fail2ban/filter.d/asterisk.conf

[INCLUDES]
before = common.conf

[Definition]
failregex = .*Registration from '<sip:.*>' failed for '<HOST>.*' - .*
            .*No matching peer found for '<HOST>.*'.*
            .*SecurityEvent="InvalidAccountID".*Address="<HOST>.*

ignoreregex =

启用 jail /etc/fail2ban/jail.d/asterisk.local

[asterisk]
enabled = true
filter = asterisk
logpath = /var/log/asterisk/messages
maxretry = 5
findtime = 600
bantime = 86400

FreeSWITCH 类似规则,把 logpath 改为 /var/log/freeswitch/freeswitch.log,正则匹配 Invalid registration 等关键字。

重启并验证:

systemctl restart fail2ban
fail2ban-client status asterisk
fail2ban-client status        # 查看总览
参数解释:maxretry=5 表示 10 分钟内失败 5 次就拉黑 24 小时。攻击者一次爆破 5 次后就再也连不上了,省服务器也省钱。

第三道:IP 白名单

如果只服务固定地区的用户,最稳的方式是用防火墙限制 5060 端口:

# 只允许特定 IP 段访问 5060
ufw allow from 1.2.3.0/24 to any port 5060 proto udp
ufw deny 5060/udp

# 或者用 iptables
iptables -A INPUT -p udp --dport 5060 -s 1.2.3.0/24 -j ACCEPT
iptables -A INPUT -p udp --dport 5060 -j DROP

RTP 媒体端口也要限制范围,Asterisk 的 rtp.conf

[general]
rtpstart=10000
rtpend=10100     # 仅 100 个端口,按并发量评估

对应防火墙规则:

ufw allow 10000:10100/udp

加分项:TLS 加密信令

明文 SIP 信令会被运营商 / 中间设备嗅探、改写,开启 TLS + SRTP 让通信全程加密:

# Asterisk pjsip.conf 启用 TLS transport
[transport-tls]
type=transport
protocol=tls
bind=0.0.0.0:5061
cert_file=/etc/asterisk/keys/asterisk.crt
priv_key_file=/etc/asterisk/keys/asterisk.key
method=tlsv1_2

客户端用 sip:user@host:5061;transport=tls 注册,配合 ZRTP / SRTP 加密媒体更佳。

安全 Checklist

结尾

SIP 安全说难不难,难在养成习惯。三道防线做齐,被爆的概率就接近于 0。下一篇文章我们聊 Whisper + LLM 打造语音切台助手。