EC2 带宽非常高

EC2 experiencing very high bandwidth

我已经向 AWS 报告了我的非常高的带宽账单,他们说它发起了对我的 EC2 实例的请求。

他们所能提供的只是一份关于带宽消耗的 excel 报告(它没有说明它的来源)并要求查看此文档。 https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-network-security.html

开放的端口是HTTP和HTTPS。而已。连 SSH 都没有。

我的网络应用程序是 Django,我正在使用 Ubuntu EC2 和 nginx。

我想知道如何阻止对我的服务器的这种攻击(对我来说这是一次攻击)。

这里是导致网站瘫痪的最新日志 /var/log/nginx/access.log

176.32.33.80 - - [13/Feb/2019:08:14:00 +0000] "\x16\x03\x01\x00\xFC\x01\x00\x00\xF8\x03\x03\xD5r1P@\xC3}\xCF\x09\xE4G^m$\xEC=\x85\xA5*\xB0\xF5" 400 181 "-" "-"
141.8.144.48 - - [13/Feb/2019:08:26:03 +0000] "GET / HTTP/1.1" 301 193 "-" "Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)"
176.32.33.80 - - [13/Feb/2019:08:26:04 +0000] "GET /vtigercrm/vtigerservice.php HTTP/1.1" 404 151 "-" "python-requests/2.6.0 CPython/2.7.5 Linux/3.10.0-957.1.3.el7.x86_64"
93.158.161.32 - - [13/Feb/2019:08:15:53 +0000] "GET /robots.txt HTTP/1.1" 301 193 "-" "Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)"
93.158.161.113 - - [13/Feb/2019:08:19:15 +0000] "GET /robots.txt HTTP/1.1" 301 193 "-" "Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)"
116.203.1.121 - - [13/Feb/2019:08:38:30 +0000] "GET / HTTP/1.1" 301 193 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36"
208.80.194.32 - - [13/Feb/2019:08:29:02 +0000] "GET / HTTP/1.0" 301 193 "-" "Mozilla/5.0 (Windows NT 5.1) Gecko/20100101 Firefox/7.0.1"
93.158.161.150 - - [13/Feb/2019:08:32:02 +0000] "GET / HTTP/1.1" 301 193 "-" "Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)"
34.230.16.115 - - [13/Feb/2019:08:47:07 +0000] "GET / HTTP/1.1" 200 396 "-" "Cloud mapping experiment. Contact research@pdrlabs.net"
178.154.244.168 - - [13/Feb/2019:08:38:03 +0000] "GET / HTTP/1.1" 301 193 "-" "Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)"

这是机器人程序普遍存在的一个相当普遍的问题。

要以有效的方式缓解这种情况,您可以使用提供的两种 AWS 服务中的任何一种,即使不能完全阻止这种情况,也可以有效减少这种情况。

  1. 通过 Elastic Load Balancer 将流量路由到 EC2 实例 - Elastic Load balance 仅转发有效的 TCP 请求。这会使 DDoS 攻击无效,因为它们不会到达您的实例。

    它还有一个对您特别有用的应用程序负载平衡器,因为它最适合 HTTP 和 HTTPS 流量。它与 AWS WAF 协同作用,后者可以成为另一种防御。

  2. 使用 AWS CloudFront - 这是个人最喜欢的方法。 Cloudfront 是一个 CDN,它在多个边缘位置分配流量并过滤请求以确保只有有效的 HTTP/HTTPS 到达实例。无论请求来自何处,它都能提供快速连接。这利用了ELB。

这两种方法都有效地让 AWS 处理了所需的大量连接过滤。

从您共享的 nginx 日志来看,有很多 bot 服务请求来到 EC2 实例。机器人服务正在尝试抓取您的网站,例如 "YandexBot/3.0" 可能会大量使用 EC2 实例带宽。