星号入侵防御

让我开始说我是一个noob,而我到目前为止所了解的只是绊倒我的方式。 我已经Googlesearch了,解决scheme可能已经在那里了,但它可能只是我的头,所以请在您的解决scheme尽可能多的细节。

我有一个运行Asterisk的Ubuntu 10.04服务器用于自动电话系统。 它唯一的目的是来电,而不会连接到一个人。 这是一个电话许可系统,所以他们input有关他们的产品的信息,我们输出一个解锁码,让他们input到程序中。 当收到一个调用时,它执行一个带有AGI的Perl脚本,脚本是一系列的提示,然后是解锁代码的输出。

所有这一切都很好。 但是,有时候它似乎停止了工作。 我查看了Asterisk日志,发现了一个TON条目:

[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上进行了一些研究,并find了一个解决scheme,通过设置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 

你是正确的,“这是你得到一个真正的手机与Asterisk服务器连接的方式”。 电话注册到用于注册提供商的相同端口上的服务器。

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

Fail2Ban是一个解决scheme,但是当它们不应该得到时,会给对手5个机会。

您可以使用iptables防火墙阻止来自您的干线运营商使用的IP的除SIP之外的所有入站连接。

iptables随AsteriskNow一起发货,但也可以分别下载和安装。

我不是一个iptables的专家,所以不会试图给你关于如何configuration它的全部细节,以防万一我错了,但有大量的信息只有谷歌点击,因为你的规则将是非常简单的,设置起来不应该太复杂

你是否允许匿名SIP呼叫,或者你注册到一个服务器,传输用户寻找他们的解锁码?

如果你是星号服务器注册到SIP服务,那么你可以隔离你的SIP端口,只允许来自你的SIP注册的入站连接,只要他们留在中间。 为了响应您关于将系统保留为可用的Web服务器的问题,您仍然可以保持端口80处于打开状态,以便连接所有入站连接。

如果你允许入站匿名SIP连接,你处于更困难的位置。 你显然不能通过IP限制SIP连接。 确保任何注册您有复杂的密码,并创build一个黑洞path,转储任何不符合您的应用程序的URI的调用。 像你已经设置的Fail2Ban也是我遇到的限制攻击的最佳答案。

如果您需要允许从任意外部地址设置SIP连接Fail2Ban可能是您最好的解决scheme,与LONG SIP Secrets(最less10-11个字符)一起使用。 假设你设置了连接到服务器的所有设备,合法用户永远不需要input他们的SIP密码。

否则,正如其他人所build议的,你真的想尽可能locking对VOIP服务器的访问 – 限制进入的SIP连接到需要连接的最小地址集,并且可能迫使远程用户通过VPN来进入访问SIP服务器(如果它不杀死你的audio质量)。


关于一般安全性的一个说明,Asterisk因安全漏洞和潜伏的错误而闻名于世 – 这个Guy在Asterisk中find了一些新的有趣的破坏。
除了上述步骤来防止Asterisk被攻击之外,我还是build议尽可能隔离VOIP盒子(在它自己的子网上,在它自己的VLAN中),以保护你的基础设施的其余部分,如果有人find方法并试图做一些讨厌的事情。