Amazon web services 使用Cloudflare时在AWS安全组中设置静态IP

Amazon web services 使用Cloudflare时在AWS安全组中设置静态IP,amazon-web-services,amazon-ec2,cloudflare,Amazon Web Services,Amazon Ec2,Cloudflare,我想建立一个安全组,只允许我的静态IP访问EC2服务器,但因为我使用Cloudflare,它使用了一些IP/反向代理魔法,AWS安全组只看到Cloudflare IP,而不是我的实际静态IP。我找遍了所有的地方,找不到任何答案。有人知道了吗?安全组设置无法做到这一点 缓存代理(如Cloudflare)会使用它们的一个IP地址创建到源服务器的单独连接 您需要在安全组中使用这些地址,并在Cloudflare更改列表时维护规则。但是,名单是公开的 接下来,您需要将web服务器配置为在CF Conne

我想建立一个安全组,只允许我的静态IP访问EC2服务器,但因为我使用Cloudflare,它使用了一些IP/反向代理魔法,AWS安全组只看到Cloudflare IP,而不是我的实际静态IP。我找遍了所有的地方,找不到任何答案。有人知道了吗?

安全组设置无法做到这一点

缓存代理(如Cloudflare)会使用它们的一个IP地址创建到源服务器的单独连接

您需要在安全组中使用这些地址,并在Cloudflare更改列表时维护规则。但是,名单是公开的

接下来,您需要将web服务器配置为在
CF Connecting IP
HTTP头不包含您的IP地址时拒绝请求

您必须同时执行这两项操作,因为如果不使用安全组将流量限制在Cloudflare IP地址范围内,那么来自其他地方(而不是通过Cloudflare)的流量可能会伪造包含IP地址的标头

完成了这两件事,你几乎完成了你的目标,但还不完全。。。因为Cloudflare缓存响应

因此,下一个问题是,您还需要禁用Cloudflare上的缓存,因为一旦您获取页面,它可能位于Cloudflare缓存中,其他人可能会访问它


实际上,对于需要限制对单个IP(或一小组)的访问的情况,通过Cloudflare发送流量通常没有多大意义。

使用安全组设置无法做到这一点

缓存代理(如Cloudflare)会使用它们的一个IP地址创建到源服务器的单独连接

您需要在安全组中使用这些地址,并在Cloudflare更改列表时维护规则。但是,名单是公开的

接下来,您需要将web服务器配置为在
CF Connecting IP
HTTP头不包含您的IP地址时拒绝请求

您必须同时执行这两项操作,因为如果不使用安全组将流量限制在Cloudflare IP地址范围内,那么来自其他地方(而不是通过Cloudflare)的流量可能会伪造包含IP地址的标头

完成了这两件事,你几乎完成了你的目标,但还不完全。。。因为Cloudflare缓存响应

因此,下一个问题是,您还需要禁用Cloudflare上的缓存,因为一旦您获取页面,它可能位于Cloudflare缓存中,其他人可能会访问它


实际上,对于需要限制对单个IP(或一小组)的访问的情况,通过Cloudflare发送流量通常没有多大意义。

您可以设置lambda函数来解析来自Cloudflare的流量,并动态更新您的安全组。有一个示例lambda函数用于CloudFront。您将遇到的两个问题是,您必须计划lambda函数运行,因为您无法订阅示例中的队列,并且可能会耗尽安全组规则

您可以设置lambda函数来解析来自Cloudflare的数据,并动态更新您的安全组。有一个示例lambda函数用于CloudFront。您将遇到的两个问题是,您必须计划lambda函数运行,因为您无法订阅示例中的队列,并且可能会耗尽安全组规则

如果我们设置了正确的安全组,为什么我们需要配置web服务器来检查CF连接IP头?安全组不负责过滤非cf流量吗?@geek_guy是的,安全组将阻止非Cloudflare流量,但这里的问题涉及只允许特定的查看器IP地址访问站点。安全组会看到Cloudflare IP,因此应用程序需要检查每个请求,以查看Cloudflare报告的IP地址来自哪个。如果我们设置了正确的安全组,为什么我们需要配置web服务器来检查CF连接IP头?安全组不负责过滤非cf流量吗?@geek_guy是的,安全组将阻止非Cloudflare流量,但这里的问题涉及只允许特定的查看器IP地址访问站点。安全组会看到Cloudflare IP,因此应用程序需要检查每个请求,以查看Cloudflare报告的IP地址来自哪个IP地址。