我的 FreePBX / Asterisk 配置最近被迫允许匿名入站呼叫和 SIP 访客。因此,我们现在当然会受到垃圾邮件/黑客攻击。
它们在日志中显示为:
[2020-05-02 11:09:53] 警告 [30801]: res_pjsip_registrar.c:1051 registrar_on_rx_request: 端点‘anonymous’没有配置 AOR
我们每秒可以得到几十个。
我能否通过某种机制更改配置,从根本上阻止这些垃圾邮件,让呼叫者等待很长时间(例如一个小时),然后挂断电话?我认为这会占用垃圾邮件发送者的资源,并使他们占用的带宽降低几个数量级。
那么首先,这可能吗?如何安全地做到这一点?
其次,这样做会有什么严重的弊端吗?例如,会使任何配置重新加载的速度减慢一个数量级或诸如此类。
有任何相关的想法或建议吗?
答案1
我会添加一些 iptables。
我将首先查看 sip show channels 和/或使用 tcpdump 和一些直接的 asterisk 控制台命令
tcpdump -i eth0 port sip -l -A | egrep -i 'INVITE sip'
tcpdump -i eth0 port sip -l -A | egrep -i 'User-Agent'
# tcpdump -i ens3 port sip -l -A | egrep -i 'INVITE sip'
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens3, link-type EN10MB (Ethernet), capture size 262144 bytes
15:58:28.377294 IP ns542407.ip-144-217-77.net.7112 > 10.0.0.11.sip: SIP: INVITE sip:[email protected]:5060 SIP/2.0
...........INVITE sip:[email protected]:5060 SIP/2.0
asterisk -rx "sip show channels"
Peer User/ANR Call ID Format Hold Last Message Expiry Peer
13.78.236.138 7780 1317157998-1339 (nothing) No Rx: INVITE <guest>
144.217.77.27 8888942908 00lFxPc9nsGj22f (nothing) No Rx: ACK <guest>
如果您的请求是 INVITE 或 REGISTER(像我的例子一样)。您可以手动通过 iptables 减慢它们的速度,或者学习如何在启动时添加它(具体取决于您的 Linux 版本)。(我不知道 microsft)
iptables -A INPUT -p udp -m udp --dport 5060 -m string --string "INVITE sip:" --algo bm --to 65535 -m recent --update --seconds 60 --hitcount 12 --rttl --name VOIPINV --rsource
iptables -A INPUT -p udp -m udp --dport 5060 -m string --string "INVITE sip:" --algo bm --to 65535 -m recent --set --name VOIPINV --rsource
iptables -A INPUT -p udp -m udp --dport 5060 -m string --string "REGISTER sip:" --algo bm --to 65535 -m recent --update --seconds 60 --hitcount 12 --rttl --name VOIP --rsource
iptables -A INPUT -p udp -m udp --dport 5060 -m string --string "REGISTER sip:" --algo bm --to 65535 -m recent --set --name VOIP --rsource
你可以尝试不同的变量(秒数/命中数/字符串)。我发现使用 fail2ban 可以有效地减慢速度。更不用说使用 ipset 阻止某些国家/地区,这个电话系统不会有人从这些国家/地区进行连接,这有很大帮助。