阻止可能造成 DDoS 的请求

阻止可能造成 DDoS 的请求

我如何才能最好地阻止在访问中采用以下形式的请求

104.154.55.118 - - [19/Apr/2016:06:33:57 +0000] "GET /werken-bij/onze-opdrachtgevers/senior-big-data-architect-open-circle-solutions HTTP/1.1" 200 42072 "-" "curl/7.43.0"
104.154.55.118 - - [19/Apr/2016:06:34:39 +0000] "GET /werken-bij/onze-opdrachtgevers/senior-big-data-architect-open-circle-solutions HTTP/1.1" 200 42072 "-" "curl/7.43.0"
104.154.55.118 - - [19/Apr/2016:06:35:23 +0000] "GET /werken-bij/onze-opdrachtgevers/senior-big-data-architect-open-circle-solutions HTTP/1.1" 200 42072 "-" "curl/7.43.0"
104.154.55.118 - - [19/Apr/2016:06:36:11 +0000] "GET /werken-bij/onze-opdrachtgevers/senior-big-data-architect-open-circle-solutions HTTP/1.1" 200 42072 "-" "curl/7.43.0"
104.154.55.118 - - [19/Apr/2016:06:36:58 +0000] "GET /werken-bij/onze-opdrachtgevers/senior-big-data-architect-open-circle-solutions HTTP/1.1" 200 42072 "-" "curl/7.43.0"
104.154.55.118 - - [19/Apr/2016:06:37:43 +0000] "GET /werken-bij/onze-opdrachtgevers/senior-big-data-architect-open-circle-solutions HTTP/1.1" 200 42072 "-" "curl/7.43.0"
104.154.55.118 - - [19/Apr/2016:06:38:33 +0000] "GET /werken-bij/onze-opdrachtgevers/senior-big-data-architect-open-circle-solutions HTTP/1.1" 200 42072 "-" "curl/7.43.0"
104.154.55.118 - - [19/Apr/2016:06:39:17 +0000] "GET /werken-bij/onze-opdrachtgevers/senior-big-data-architect-open-circle-solutions HTTP/1.1" 200 42072 "-" "curl/7.43.0"
104.154.55.118 - - [19/Apr/2016:06:40:09 +0000] "GET /werken-bij/onze-opdrachtgevers/senior-big-data-architect-open-circle-solutions HTTP/1.1" 200 42072 "-" "curl/7.43.0"
104.154.55.118 - - [19/Apr/2016:06:40:54 +0000] "GET /werken-bij/onze-opdrachtgevers/senior-big-data-architect-open-circle-solutions HTTP/1.1" 200 42072 "-" "curl/7.43.0"
104.154.55.118 - - [19/Apr/2016:06:41:41 +0000] "GET /werken-bij/onze-opdrachtgevers/senior-big-data-architect-open-circle-solutions HTTP/1.1" 200 42072 "-" "curl/7.43.0"

过去 4 天内有 5000 多个这样的请求。这给服务器带来了巨大的压力。如果有人故意这样做,恐怕一个简单的 IP 封锁就是一种简单的解决方法。

任何帮助是极大的赞赏。

答案1

要阻止 104.154.55.* 地址:

$ sudo iptables -A INPUT -s 104.154.55.0/24 -j DROP

封锁 104.154。地址:

$ sudo iptables -A INPUT -s 104.154.0.0/16 -j DROP

至区块 104。.* 地址:

$ sudo iptables -A INPUT -s 104.0.0.0/8 -j DROP

使用此方法阻止 IP 时要小心。它可能会影响真正的流量到达主机。

封锁当前 IP:

 iptables -A INPUT -s  -j DROP 104.154.55.118

这将阻止当前 IP。

答案2

如果您不想仅通过 IP,您还有几种选择。

  • iptables 操作系统级别的速率限制
  • 在 Web 服务器级别进行速率限制(例如 Nginx 可以很好地完成这一点)
  • 使用 Fail2Ban 等工具进行速率限制/阻止
  • 根据用户代理进行阻止;这里显然是 curl,而不是真正的浏览器。因此,即使 IP 发生变化,您也可以根据此进行阻止或减慢/限制速率。

为了更智能一点,您可以考虑使用 Repsheet 之类的工具,它将帮助您将流量分为可信和不可信的来源。根据一些匹配规则,您可以将这个流量设置为不可信,并执行 reCaptcha 之类的挑战,或者给出旨在缓解主服务器和真实流量的响应,例如通过从缓存中提供这种类型的可疑访问者陈旧内容,或从辅助服务器提供缓慢的内容。

但当然,请考虑一下该 IP 可能来自 Google 等可信来源:http://www.ip2location.com/demo/104.154.55.118尽管用户代理并没有暗示它是官方的 Google 蜘蛛。

相关内容