Amazon web services 为什么我的弹性负载平衡器接收到的域的GET和POST请求没有链接到我的帐户,并且有200个代码响应?

Amazon web services 为什么我的弹性负载平衡器接收到的域的GET和POST请求没有链接到我的帐户,并且有200个代码响应?,amazon-web-services,amazon-ec2,Amazon Web Services,Amazon Ec2,我在两台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个

我在两台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个响应代码?我不明白这怎么可能

很简单,真的。。。然而,这很复杂

从后端:您的应用程序没有检查传入的
主机:
头,或者如果是,它有一个默认规则,仍然允许它返回某种类型的响应,并伴有
200 OK
,或者(不太可能,但非常糟糕)您的web服务器或应用程序作为开放式代理运行,并将这些请求转发到指定的目标

在浏览器中输入ELB本身的主机名。您的web服务器可能会返回站点的主页,而这可能不是您想要的。(搜索引擎可以在ELB域下索引您的内容,这几乎肯定是不可取的)。修改web服务器配置,使此主机名和任何其他意外主机名返回错误,例如
502坏网关
400坏请求

请注意上述情况的一个重要例外:如果传入请求的
主机:
标头包含实例的一个IP地址,并且
用户代理:
标头包含类似于
ELB HealthChecker/1.0
的值,并且路径与您在ELB配置中指定的路径匹配,您仍然需要返回
200ok
,以避免ELB声明您的实例不健康。你一定要解释那个例外

在此之后,这些虚假请求应该会遇到相应的错误,并且应该记录新的错误代码

接下来,为什么ELB会转发这些请求?因为ELB不按
Host:
header筛选请求。任何数量的域都可以托管在单个ELB后面。ELB的设计目的不是筛选它们

最后:他们最初是如何到达的?有几种可能性,几乎所有这些都不在你的控制范围之内

可能最有可能的是DNS缓存。分配给ELB的IP地址是动态的,随时可能更改。如果用户代理(浏览器、爬行器等)或DNS服务器或CDN edge或任何数量的其他实体缓存了其他站点以前的IP地址(现在是您的ELB IP地址),则请求将错误地发送到您的站点

这也可能是由于ELB与全局DNS的接口出现内部错误,该接口可能错误地响应了对无关站点的查询。。。具有与ELB关联的IP地址。(我不是说这种情况经常发生,只是说这是一种可能性)。想象一下我的惊讶有一天,当我在ELB上浏览我的一个网站时,我收到一条很明显来自dropbox.com web服务器的消息,报告了一个“意外错误”。我的网站与dropbox没有任何交互,尽管我在短时间内连续重复了几次错误,但在我完成调查之前它就被清除了。我想,如果dropbox那天查看了他们的日志,他们可能会问,“为什么我们在ELB日志中收到了对@Michael Sqlbot的一个站点的请求?”(也许不是他们确切的话)

恶意用户也可能正在扫描ELB,以查看其背后的应用程序是否以异常方式运行,从而可能暴露安全漏洞


回到顶端,现在。。。配置后端web服务器或应用程序,以便在请求时对传入请求的意外
主机:
头值抛出错误。。。而且,在此之后,日志中的这些请求在很大程度上可以被忽略,除非它们在数量上变得非常重要

很简单,真的。。。然而,这很复杂

从后端:您的应用程序没有检查传入的
主机:
头,或者如果是,它有一个默认规则,仍然允许它返回某种类型的响应,并伴有
200 OK
,或者(不太可能,但非常糟糕)您的web服务器或应用程序作为开放式代理运行,并将这些请求转发到指定的目标

在浏览器中输入ELB本身的主机名。您的web服务器可能会返回站点的主页,而这可能不是您想要的。(搜索引擎可以在ELB域下索引您的内容,这几乎肯定是不可取的)。修改web服务器配置,使此主机名和任何其他意外主机名返回错误,例如
502坏网关
400坏请求

请注意上述情况的一个重要例外:如果传入请求的
主机:
标头包含实例的一个IP地址,并且
用户代理:
标头包含类似于
ELB HealthChecker/1.0
的值,并且路径与您在ELB配置中指定的路径匹配,您仍然需要返回
200 OK
以避免ELB声明实例不健康。你一定要解释那个例外

在此之后,这些虚假请求应该会遇到相应的错误,并且应该记录新的错误代码

接下来,为什么ELB会转发这些请求?因为ELB不按
Host:
header筛选请求。任何数量的域都可以托管在单个ELB后面。ELB的设计目的不是筛选它们

最后:他们最初是如何到达的?有几种可能性,几乎所有这些都不在你的控制范围之内

可能最有可能的是DNS缓存。分配给ELB的IP地址是动态的,随时可能更改。如果用户代理(浏览器、spider等)或DNS服务器或CDN边缘或任何数量的oth