如何阻止SipVicious('friendly-scanner')泛滥我的SIP服务器?

我运行一个SIP服务器,侦听UDP端口5060,并且需要接受来自公共互联网的authentication请求。

问题是,偶尔会被扫描SIP服务器的人利用,然后谁整天坐在那里试图强制服务器。 我使用足够长的证书,以至于这种攻击永远无法正常工作,但是由于它占用了大量的带宽,所以很烦人。

我已经尝试设置fail2ban来读取Asterisk日志,并禁止iptables这样做,这阻止Asterisk在10次失败尝试后看到传入的SIP REGISTER尝试(发生在一秒钟内的攻击速度之下)看到)。 但是,SipVicious派生的脚本在获得ICMP目标主机不可访问之后不会立即停止发送,而是继续使用数据包进行连接。 直到他们停止的时间是可configuration的,但不幸的是,攻击者进行这些types的暴力攻击通常将超时设置为非常高(在fail2ban已经阻止他们获得任何SIP响应之后,攻击继续以高速率持续几个小时一旦他们看到了SIP服务器的初始确认)。

有没有办法让它停止在我的连接发送数据包?

许多这些攻击者使用的公开可用的SipVicious脚本,如果收到无效的SIP响应而没有From:行,则会立即停止攻击。 您可以识别SipVicious,因为它将SIP请求中的User-Agent设置为friendly-scanner。

使用这种技术对付现实世界的攻击者,我能够立即停止大量的数据包。 你可以用一个简单的脚本发送这样的数据包。 例如:

cat >UnfriendlyScannerStopper.scala <<END import java.net._ object UnfriendlyScannerStopper { def main(args : Array[String]) : Unit = { if (args.length < 2) { System.out.println("Usage: FriendlyScannerStopper ipAddr port") return } val udpSocket : DatagramSocket = new DatagramSocket(); val packetContents : String = "SIP/2.0 400 Go Away!!!\r\n\r\n" udpSocket.send(new DatagramPacket(packetContents.getBytes("utf-8"), packetContents.size, InetAddress.getByName(args(0)), Integer.parseInt(args(1)))) } } END scala UnfriendlyScannerStopper.scala 188.138.107.179 5102 

您将需要用188.138.107.179和5102replace您在攻击中发送的SIP数据包Via头中的地址和端口。

与您的上游供应商交谈。 我有一个REST API的黑名单,我可以提供IP地址。 我设置了fail2ban来调用这个web服务,并且在我的提供商的networking中的数据包到达我的防火墙之前停止。

没有人直接回答你的问题,所以:不

您无法阻止某人将数据包发送到您的外围网关。 你可以做的最好的就是阻止他们上游(如上面提到的那样),或者阻止他们进入你的防火墙。

Fail2ban将根据失败攻击的次数触发(如上面已经提到的),所以一个替代(或组合)是根据源ip的地理位置来阻塞的。 诸如SecAst或某些硬件防火墙之类的产品可能会根据地理位置进行阻止,从而进一步减less到达服务器的数据包数量。

回到你原来的问题:没有

这些iptables规则适用于我。 在这种攻击中,他们将CPU负载保持在2%以下。

http://txlab.wordpress.com/2013/06/29/protecting-a-vpbx-from-dos-attacks/

你有没有尝试设置一个SIP代理?

如果没有,可以在“sip服务器”前设置Kamaillio或OpenSIPS。 这些软件包是可configuration为SIP代理的SIP消息路由器。

在OpenSIPS或Kamaillio中,您可以像下面这样简单地在路由脚本中添加一行来解决此问题:

如果($ ua =〜“friendly-scanner”){drop(); }

现在我意识到这并不能阻止入站的尝试,但它将确保尝试将永远不会去任何地方,并且“SIP服务器”将永远不会看到它们。 即使在非常适度的硬件上,即使是500次注册,也无需担心OpenSIPS或Kamaillio。

保护VoIP基础设施是OpenSIPS和Kamailliodevise要做的很大一部分 – 他们通过代理传入的SIP请求,对它们进行规范化处理,删除畸形的请求(以及那些没有业务交谈的用户代理)的请求,和代理authentication(REGISTERs)。

它们还隐藏了互联网背后的拓扑结构,从而为您的媒体服务器增加了更高级别的安全性(也许这是您的“SIP服务器”实际上为您所做的function)

如果您使用星号,那么整合OpenSIPS / Kamaillio / SER是运营商ITSP部署中的常见做法。

就您的带宽说明而言:听到这些攻击使用了大量的带宽,我会有些惊讶; 我想“很多”是一个相对的术语……但是,你看到这个stream量到底有多less?

我希望这是有帮助的。 如果您需要帮助,我是一名顾问,可以帮助您为您的特定环境进行configuration。

杰里米D.沃德,CWNE

PS:为了find我,Google提供以下内容:jeremy ward wireless。 我的LinkedIn个人资料是第一个结果。

作为一种select,请看这里的SIP相关的防火墙: VoIP防火墙

Pfsense和其他可能允许您制作或购买防火墙设备。 该软件是免费的。 那么你可以免费加载suricata,这是一种网守,它会立即丢弃大量与Sipvicious相关的IP。 基本上,当他们扫描您的IP时,他们的数据包将立即被丢弃。 如果事情顺利,他们甚至不会意识到在那个地址有一个SIP服务器。 同样的防火墙也有一个安装SIP代理的软件包,所以你可以做两个。