Netstat:如何知道它是人类还是机器人/蜘蛛/DDOS

Netstat:如何知道它是人类还是机器人/蜘蛛/DDOS

我正在使用以下命令检查来自单个 IP 的连接数

netstat -anp |grep ':80' | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n

如果是 DDOS 攻击(500+ 个连接),很容易检测到。但我在任何时候仍然有来自单个 IP 的 60-100 个连接。这可能是人类造成的,还是某种机器人/蜘蛛造成的?

这就是我目前所拥有的(前 6 名)。

48 217.212.230.***
54 46.63.105.***
55 62.235.175.***
56 79.235.188.***
60 178.27.93.***
63 31.16.96.***

答案1

显然,由于我们不知道您的服务/应用程序是什么或者它的行为方式,因此很难从经验上回答这个问题 - 例如,这个连接数可能是设计出来的。

但理解这个问题的最佳方式是对来自单个已知 IP 的典型站点访问进行基准测试,观察在进行您通常期望用户执行的任何交易/搜索时“用户故事”期间发生的情况。

现在看看连接是如何工作的。这个基准测试与您通过 netstat 看到的结果相符吗?

如果是这样,那么至少您知道您在哪里。如果数量少得多,并且没有理由假设这些 IP 有正当理由成为多个“用户故事”的来源,那么您可能确实遇到了某种形式的蜘蛛/DOS/等等。

不要忘记,您可以随时通过 nslookup 来定位这些地址。在处理这类事情时,这是一个非常有用的工具。如果您也担心,也不要害怕浏览/探测它们。

答案2

您需要深入挖掘正在发生的事情来查看流量是否合法。

合法流量

合法机器人可以通过其用户代理来识别。检查 IP 所有者或反向 DNS 通常可以帮助查明欺骗的用户代理数据。

我曾见过 Googlebot、Yahoo 的 Slurp 和其他蜘蛛与系统建立了 40 多个连接。

请注意,浏览器最多可以与服务器建立 20 个连接(我认为默认值为 8 个左右)。如果 NAT 后面有多个用户,他们很容易就会用掉 20-40 个连接。

DDoS 的迹象

我见过 DDoS 攻击,攻击连接数较少,但来自范围广泛的 IP 地址。例如,攻击者通常与服务器的连接数不超过 100 个,但来自数十个甚至数百个 IP。

此策略用于破坏某些可用于阻止 HTTP 洪水的速率限制方法。

在这些情况下,我会找出最主要的违规 IP 并查看以下几个项目:

  • 它们来自哪个国家 (IP Whois)
  • 它们是否来自同一类 C/B 网络
  • 他们正在访问什么(检查 Apache 日志)
  • 他们是否表现出正常的用户行为
  • 用户代理字符串中的共性

例如,在最近的 DDoS 缓解过程中,我们发现发起攻击的平台将自己标识为特定的浏览器/语言组合。提供一条规则来丢弃这些请求可消除 60% 的攻击。

在另一个案例中,我发现大约 50% 的攻击 IP 被分配到中国的一个地区。使用特定国家/地区的 IP 拦截,我们能够拦截这些流量。

因此,深入研究顶级 IP 应该可以快速告诉您是否应该允许或阻止它。

答案3

我注意到你还没有答案(至少在我发帖时你还没有在 Security SE 上查看),以下是我的看法。

单个浏览器(由人运行)不应该发送那么多连接。但是,同一网络中的多个用户访问同一站点可能会导致并发连接数成倍增加。如果他们在同一个 NAT 网络上,他们将使用相同的 IP。

您可能希望在浏览器中使用网络检查器,测试网页的加载情况,并评估将放置多少个连接。浏览器确实有自己的并发连接限制,但这是特定于浏览器的。

搜索引擎的机器人或蜘蛛可能不会做出比浏览器更多的事情。

答案4

检查 Web 服务器日志。代理的名称就在那里。所有大型机器人都会表明自己的身份。

相关内容