使用 AWS WAF 阻止 IP,以便只有连接到 VPN 的用户才能访问 CloudFront



目标:使用AWS WAF过滤掉访问CloudFront的流量,以便只有连接到OpenVPN网络的用户才能访问web应用程序。

OpenVPN为任何连接的用户分配172.xx.yyy.z/a网络范围内的IP。
因此,我通过WAF规则将该范围列入Web ACL的白名单,并将任何其他IP列入黑名单
但是,我无法访问该网站。

通过CloudWatch,可以清楚地看到,这是因为VPN分配的IP实际上并没有被用来访问web应用程序。这是一个经过修改的IP,与我的设备的公共IP非常相似。

据我所见,我无法确定这些"自定义"ip的范围。鉴于此,我如何确保只有连接了VPN的用户才能访问该网站?

我错过了什么重要的事情吗?

172.16.0.0/12 IP地址是专用地址(172.16.0.0--172.31.255.255(,不能在公共互联网上路由。

如果你所指的IP在这个范围内,那么这就是专用网络上的地址,即VPN隧道。VPN远端的设备将可以访问互联网,并具有可在公共互联网上路由的公共IP地址,以及CloudFront所看到的内容。

您需要知道访客使用的VPN服务的所有公共IP CIDR块,否则您无法通过IP进行阻止。

尽管您可以通过HTTP标头进行限制。如果您检查通过的连接(没有WAF(,您可以从请求中了解到这一点。

请注意,最好在内部路由流量

根据以上评论:

听起来像是在使用第三方服务";这是一个经过修改的IP,与我的设备的公共IP非常相似">

这似乎是因为VPN用户正在访问资源的外部地址(通过CloudFront或其他方式(,该外部地址可能通过第三方(如Cloudflare(解决,或通过AWS服务本身屏蔽。它可能是通过AWS服务(因此从技术上讲而不是"第三方"(,但结果是相同的=>屏蔽寻址。我相信这就是OP指出的问题存在的原因。

AWS在过去几周刚刚推出了CloudFront-Viewer-Address header,它可以根据您的选择帮助解决这个问题。

与其使用公共IP作为VPN网络的出口节点,我建议(强烈(考虑改进VPN和相关资源的路由;内部";流量不会通过引入或改进路由并转向主要基于专有网络的方法来影响开放式互联网。也许从这里开始介绍一下亚马逊的专有网络。

最终的解决方案是确保所有流量都通过OpenVPN。

这意味着任何连接到VPN的人都将拥有分配给VPN服务器的公共IP。

因此,该IP是唯一允许通过WAF访问该网站的IP。

最新更新