Har*_*ker 1 amazon-ec2 amazon-web-services
我在两台 EC2 服务器上设置了 ELB。
我有 ELB 访问日志记录,将其收到的请求发送到 S3。
目前我只是在进行开发和测试,但我注意到我的 ELB 受到了如下点击:
"POST http://us.ubsmsp.com:80/Gateway.aspx?method=UserBehaviourService.AMFMobileEvent.SendEvent HTTP/1.1"
"GET http://fundbox.com:80/ HTTP/1.1"
这两个显然都从 ELB 和我的后端 EC2 服务器收到了 200 个响应代码?我不明白这怎么可能。
简单,确实……但又复杂。
从后端:您的应用程序不会检查传入的Host:标头,或者如果是的话,它有一个默认规则,仍然允许它返回某种带有200 OK, 或 (不太可能但非常糟糕)您的网络的响应服务器或应用程序充当开放代理并将这些请求转发到指定的目的地。
将 ELB 本身的主机名输入到浏览器中。您的网络服务器可能会返回您网站的主页,但这可能不是您想要的。(搜索引擎可以在 ELB 域下索引您的内容,这几乎肯定是不可取的)。修改您的 Web 服务器配置,以便该主机名和任何其他意外主机名返回错误,例如502 Bad Gateway或400 Bad Request。
请注意上述的一个重要例外:如果Host:传入请求的标头包含实例的 IP 地址之一,并且User-Agent:标头包含类似 的值,并且路径与您在 ELB HTTP 运行状况检查ELB-HealthChecker/1.0配置中指定的路径匹配,则您仍然需要返回以避免 ELB 声明您的实例不健康。请务必考虑到该例外情况。200 OK
此后,这些虚假请求应该会遇到适当的错误,并且应该记录新的错误代码。
接下来,ELB为什么要转发这些请求呢?因为ELB不会通过Host:header来筛选请求。单个 ELB 后面可以托管任意数量的域。ELB 并不是为了筛选它们而设计的。
最后:他们最初是如何到达的?有几种可能性,几乎所有这些都超出了您的控制范围。
也许最有可能的是 DNS 缓存。分配给 ELB 的 IP 地址是动态的,并且随时可能发生变化。如果用户代理(浏览器、蜘蛛等)或 DNS 服务器或 CDN 边缘或任意数量的其他实体缓存了其他站点以前的 IP 地址(现在是您的 ELB IP 地址),则请求将错误地发送到您的站点。
这也可能是由于 ELB 与全球 DNS 的接口出现内部错误所致,该错误可能错误地响应了对不相关站点的查询……其 IP 地址与您的 ELB 关联。(我并不是说这种情况经常发生,只是说这是一种可能性)。想象一下,有一天,当我浏览我的一个托管在 ELB 上的网站时,我收到了一条显然来自 dropbox.com Web 服务器的消息,报告了一个“意外错误”,我对此感到多么惊讶。我的网站与 Dropbox 的交互为零,虽然我在短时间内连续多次重复该错误,但在我完成调查之前它就消失了。我假设如果 dropbox 那天查看了他们的日志,他们可能会问,“为什么我们会在 ELB 日志中收到对 @Michael-Sqlbot 网站之一的请求?” (也许不是他们原话。)
恶意用户也可能正在扫描 ELB,以查看其背后的应用程序是否以可能暴露安全漏洞的异常方式运行。
回到顶部,现在...配置您的后端 Web 服务器或应用程序,以Host:在传入请求中出现意外标头值的请求时抛出错误...之后,日志中的这些请求可以在很大程度上被忽略,除非它们数量上变得显着。  
| 归档时间: | 
 | 
| 查看次数: | 1227 次 | 
| 最近记录: |