使用 Apache 远程 IP,但要求代理 IP 在范围内

使用 Apache 远程 IP,但要求代理 IP 在范围内

我将本地托管的网站置于 Cloudflare 之后,以增强性能。

为了恢复原始连接 IP,我使用mod_remoteip,并设置了所有 Cloudflare 的 IP 范围。

我还想建立一个纯粹通过 Cloudflare Access 访问的网站,限制任何试图绕过 Cloudflare Access 进行连接的人的访问。

我在网上看到过,可以使用诸如Require ip xx.xx.xx.xx/24(etc) 之类的规则来执行此操作,但这些规则只有在我检查原始代理 IP 时才有效,但这已被 覆盖mod_remoteip

有什么方法可以强制执行原始代理 IP 地址或要求请求已重写 IP,或者任何可以满足我需要的东西?

答案1

只需在 Apache 之外的防火墙或安全组或类似系统中设置某种形式的基于 IP 的访问控制即可。仅允许 CloudFlare IP 范围https://www.cloudflare.com/ips/访问您的 Web 服务器端口,您将不会检测到任何由 Apache 云火焰发出的请求。

仅适用于更复杂的 Apache:

确保只有来自 CloudFlare 的请求才能被 mod_remoteip 解析:

mod_remoteip 提供RemoteIPTrustedProxyList您可以轻松加载 CloudFlare IP 列表的文本版本

一旦您确保 mod__remoteip 仅针对 CloudFlare IP 激活,您就可以使用文档中隐藏的以下信息:

连接的底层客户端 IP 在 %{c}a 格式字符串中可用。

然后可能根据该格式字符串的存在来建立访问控制。未经测试:

<If "! %{c}a}”>

    Require all denied
</If>

相关内容