Asterisk 入侵防御

Asterisk 入侵防御

首先我要说的是,我是个菜鸟,到目前为止,我所想出的东西都是我摸索出来的。我已经在 Google 上搜索过了,可能已经有解决方案了,但可能我完全无法理解,所以请在您的解决方案中包含尽可能多的细节。

我有一台运行 Asterisk 的 Ubuntu 10.04 服务器,用于自动电话系统。它的唯一用途是接听来电,并且永远不会接通任何人的电话。这是一个电话许可系统,因此他们输入有关其产品的信息,我们输出解锁代码供他们输入到程序中。接到电话时,它会使用 AGI 执行 Perl 脚本,该脚本是一系列提示,然后输出解锁代码。

所有这些都运行良好。但是,它似乎偶尔会停止工作。我查看了 Asterisk 日志,发现了大量这样的条目:

[May 22 10:51:27] NOTICE[10663] chan_sip.c: Registration from '"guest12345"<sip:[email protected]>' failed for 'yy.yy.yy.yy' - No matching peer found

这显然是入侵尝试。xx.xx.xx.xx 是我的服务器的 IP 地址,而 yy.yy.yy.yy 大概是入侵者的 IP 地址。

我在 Google 上搜索了一下,找到了一个解决方案,即设置 Fail2Ban,这个方法似乎很有效。今天早上,在 5 次入侵尝试失败后,它已经禁止了两个 IP 地址。

我很有信心没有人能够在仅 5 次尝试内进入,但这似乎仍然不如我希望的那样安全。

我的理解是,运行在我服务器上的 Asterisk 服务会不时地向我的 VoIP 提供商注册,以告知它仍处于连接状态并准备接听电话。据我所知,这是唯一需要的“注册”,那么我有没有办法阻止所有外部注册尝试?

也许我错了,但在我看来,他们似乎试图在我的服务器上注册,就好像我的服务器是 VoIP 提供商一样。也许这就是让实际电话连接到 Asterisk 服务器的方式?由于我这边没有实际的电话(仅接听来电,从不转接给任何人),我有没有办法完全禁用这部分?


编辑:
来自 sip.conf:

registerattempts=0      ; Number of registration attempts before we give up
                ; 0 = continue forever, hammering the other server
                ; until it accepts the registration
                ; Default is 0 tries, continue forever
register => 1111111:password:[email protected]:5060/700
[inphonex]
type=peer
username=1111111
fromuser=1111111
secret=password ; password used to login their website (same as in register =>)
host=sip.inphonex.com
fromdomain=sip.inphonex.com
nat=yes ; my asterisk is behind nat
canreinvite=yes
qualify=yes
context=inbound-inphonex; context to be used in extensions.conf for inbound calls from inphonex
disallow=all
allow=ulaw
allow=alaw
allow=gsm
insecure=port,invite

答案1

您说得对,“这就是让实际电话连接到 Asterisk 服务器的方法”。电话在与向提供商注册相同的端口上向服务器注册。

如果您仅使用 SIP 与提供商通信,则只需设置防火墙以仅允许来自提供商的 SIP。

Fail2Ban 是一种解决方案,但它给了对手 5 次机会,而他们本不该有这种机会。

答案2

您可以使用 iptables 防火墙阻止来自中继提供商使用的 IP 的除 SIP 之外的所有入站连接。

iptables 随 AsteriskNow 一起提供,但也可以单独下载和安装。

我不是 iptables 专家,所以不会试图给你提供关于如何配置它的全部细节,以防我出错,但只需在谷歌上点击一下,就能找到大量信息,而且你的规则会很简单,设置起来应该不会太复杂

答案3

您是否允许匿名 SIP 呼叫,或者您是否注册到转接用户寻找解锁代码的服务器?

如果您的 asterisk 服务器正在注册到 SIP 服务,那么您可以隔离您的 SIP 端口,只允许来自您的 SIP 注册的入站连接,只要它们位于中间即可。为了回应您对保持系统可用 Web 服务器的担忧,您仍然可以保持端口 80 对所有入站连接开放。

如果您允许入站匿名 SIP 连接,那么您的处境将更加困难。您显然无法通过 IP 限制 SIP 连接。确保您拥有的任何注册都有复杂的密码,并创建一个黑洞路径,以转储任何与您的应用程序的 URI 不匹配的呼叫。您已经设置的 Fail2Ban 也是我遇到的限制攻击的最佳答案。

答案4

如果你需要要允许来自任意外部地址的 SIP 连接,设置 Fail2Ban 可能是最好的解决方案,结合长的SIP 密钥(最少 10-11 个字符)。假设您设置了所有连接到服务器的设备,合法用户将永远不需要输入他们的 SIP 密钥。

否则,正如其他人所建议的,您确实希望尽可能地锁定对 VOIP 服务器的访问 - 将传入的 SIP 连接限制为需要连接的最小地址集,并可能强制远程用户通过 VPN 才能访问 SIP 服务器(如果它不会影响您的音频质量)。


关于一般安全性的说明,Asterisk 因存在安全漏洞和潜在错误而闻名 -这家伙已经把发现 Asterisk 中新的和有趣的漏洞当成了业余爱好。
除了上述保护 Asterisk 不被利用的步骤外,我还建议尽可能隔离 VOIP 盒(在其自己的子网中,在其自己的 VLAN 中),以保护其余基础设施,以防有人找到方法进入并试图做一些恶意的事情。

相关内容