扫描我服务器的机器人可以更改其源 IP 吗?为什么即使阻止了 IP,我仍会不断受到攻击?

扫描我服务器的机器人可以更改其源 IP 吗?为什么即使阻止了 IP,我仍会不断受到攻击?

我有一个 PBX(VOIP 服务器),电话连接到该服务器以便拨打电话。我使用的 PBX 是星号。该服务器未被使用,其唯一目的是分析攻击。

如果我有其他服务(例如 mongodb),PBX 服务并不重要,我确信互联网上的机器人会搜索漏洞来攻击该数据库。

无论如何,我正在分析到达我的服务器的 UDP 端口 5060(这是 Aterisk 监听的位置)的所有数据包,到达的数据包如下所示:

IP (tos 0x0, ttl 113, id 654, offset 0, flags [none], proto UDP (17), length 521)
    43.249.129.89.58255 > 171.21.78.225.5060: SIP, length: 493
        REGISTER sip:54.84.215.2:5060 SIP/2.0
        To: <sip:[email protected]>
        From: <sip:[email protected]>;tag=824e5f4a7221279e4f7a
        Via: SIP/2.0/UDP 10.4.1.117:58255;branch=z9hG4bK183d5a24-59ec-4f05-8325-747389112824;rport
        Call-ID: e5f4a722128024e4f7a824
        CSeq: 1 REGISTER
        Contact: <sip:[email protected]:58255>
        Expires: 3600
        Max-Forwards: 70
        Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY, MESSAGE, SUBSCRIBE, INFO
        User-Agent: PolycomSoundPointIP SPIP_550 UA 3.3.2.0413
        Content-Length: 0

该数据包来自机器人,因为我没有向我的服务器发送任何数据包。

请注意,该服务器的唯一目的是了解机器人的工作原理并了解它们如何攻击我的服务器。我没有使用该 PBX;因此,任何发送到该服务器的请求都一定是来自恶意机器人。每次我收到发送到端口 5060 的 UDP 数据包时,我都会阻止该 IP 地址。

现在我的问题是:

我已经运行该服务器一个月了,但每隔一分钟左右我就会受到攻击。我已经阻止了超过 15,000 个 IP!互联网上有多少机器人?它们是否在更改其源 IP 地址,这就是它们不断访问我的服务器的原因?如果他们能够更改其源 IP,是不是因为我使用的是 UDP 协议?我应该使用 TCP 而不是 UDP 来解决这个问题吗?

有趣的是,来自不同 IP 的攻击如此相似。例如,它们使用与电话相同的用户代理,而攻击来自不同的 IP。就好像所有机器人都有相同的代码。

一旦我解决了这个问题并了解了机器人的工作原理,我就会在我的真实服务器上实施该解决方案。我不会为此使用真实服务器,因为从坏数据包中过滤出好数据包会很困难。一个解决方案是在我的防火墙上使用 IP 白名单,但我不希望我的用户必须进行某种额外的身份验证,特别是如果他们从手机上使用服务,其 IP 地址可能会发生很大变化。

答案1

我现在明白了为什么人们会尽量关闭尽可能多的端口。就我而言,我希望打开端口并阻止攻击者。我发现这是一场永无止境的战斗。

为了解决这个问题,我先了解了 iptables 的工作原理。我的规则如下:

~# iptables -L -n
Chain INPUT (policy ACCEPT)
target     prot opt source        destination
DROP       all  --  0.0.0.0/0     0.0.0.0/0       match-set MyBlackList src
ACCEPT     all  --  0.0.0.0/0     0.0.0.0/0       match-set MyWhiteList src
ACCEPT     tcp  --  0.0.0.0/0     0.0.0.0/0       tcp dpt:5060
DROP       udp  --  0.0.0.0/0     0.0.0.0/0       multiport dports 1:65535
DROP       tcp  --  0.0.0.0/0     0.0.0.0/0       multiport dports 1:65535

Chain FORWARD (policy ACCEPT)
target     prot opt source        destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source        destination

有了这些规则,我最初只允许通过 TCP 连接到端口 5060。

如果手机尝试错误地连接到该端口,则 IP 将被添加到 MyBlackList。如果是这样,攻击者将无法发出进一步的请求。

如果手机连接正确,它将被添加到 MyWhiteList。如果是这样,它将能够访问其他端口并拨打电话。如果将来它发出太多无效请求,它仍可能被添加到 MyBlackList。

使用这种方法后,我很少受到攻击。现在我只需要阻止 10 个 IP,而不是数千个。

相关内容