仅允许通过ELB对AWS实例进行HTTP访问

时间:2014-11-28 22:10:05

标签: amazon-web-services amazon-ec2 amazon-elb

我见过很多像this one这样的类似问题,但没有一个给出一般答案。我是AWS的新手。我现在在我的VPC中运行了2个实例。我在他们面前有一个ELB设置,它可以很好地将流量路由到两者。问题是,这两个实例目前也可以通过整个网络的HTTP来实现。我想改变一些事情,以便我的实例只能通过我的ELB在HTTP上点击。我怎么能这样做?

2 个答案:

答案 0 :(得分:25)

我找到了我要找的东西。在安全组中,您可以在自定义IP下添加另一个安全组作为源。如果亚马逊更明确地允许这样做,那将是非常好的,因为安全组根本不是自定义IP。无论如何,这就是你如何做到的:rules

答案 1 :(得分:1)

我将建议在原始解决方案被接受后很长时间内采用以下附加方法。最初的解决方案可能是最好的,但下面的方法是直截了当的,如果没有其他方法可以帮助进行故障排除。

首先,从实例中取消与允许来自Web的http的任何规则或安全组的关联。特别怀疑0.0.0.0/0,这意味着所有 IP地址。然后,在应用于实例的安全组中,允许来自VPC的私有地址空间的端口80 / http。例如,如果您的VPC的专用地址空间为172.31.0.0/16,则允许该范围通过直接应用于实例的安全组访问您的实例。此时,httpd服务器登录实例应该显示来自负载均衡器的特定专用地址的访问尝试。假设健康检查的目标文件存在且由httpd正确提供,则目标组健康检查状态应从不健康变为健康。请注意,负载均衡器运行状况检查程序在httpd日志中明确标识为ELB-HealthChecker。

172.31.3.56 - - [24/Oct/2017:17:02:36 +0000] "GET /index.html HTTP/1.1" 200 265 "-" "ELB-HealthChecker/2.0"
172.31.20.249 - - [24/Oct/2017:17:02:36 +0000] "GET /index.html HTTP/1.1" 200 265 "-" "ELB-HealthChecker/2.0"
172.31.3.56 - - [24/Oct/2017:17:03:06 +0000] "GET /index.html HTTP/1.1" 200 265 "-" "ELB-HealthChecker/2.0"
172.31.20.249 - - [24/Oct/2017:17:03:06 +0000] "GET /index.html HTTP/1.1" 200 265 "-" "ELB-HealthChecker/2.0"

此时您可以将安全组允许的IP地址限制为仅显示在httpd日志中的IP地址,但我会小心,因为如果ELB重新启动或者其配置被更改或重新加载,我怀疑保证重新获取之前保存的私人地址。

现在负载均衡器确认其目标是健康的,它会认为它们已准备就绪,并开始为它们路由流量。根据原始海报的目标("问题是,这两个实例目前也可以通过整个网络上的HTTP来点击。")这种方法不允许从整个网络访问实例

这里的大多数读者都熟悉私人寻址。对于没有the Wikipedia article的人来说,任何人都可以作为参考。