如何配置 Web 服务器以仅接受来自 Cloudflare 的流量?

如何配置 Web 服务器以仅接受来自 Cloudflare 的流量?

我正在使用 Cloudflare,我想保护我的原始服务器不接受任何非 Cloudflare 的流量。

我原本想将 IP 列入白名单https://www.cloudflare.com/ips/

但是,我注意到他们每隔一两年就会添加/删除 IP。所以我担心有一天人们会遇到错误,这是因为 Cloudflare 添加或更改了列表。

我正在考虑的另一种选择是通过 Cloudflare 注入一个秘密标头并让它传递到原始服务器,原始服务器将验证秘密标头是否正确,否则拒绝。

我应该在这里使用最佳实践吗?

答案1

Cloudflare 从未在其历史记录中添加过 IP 范围。您可能在网站上看到过以下内容:

Apr 8, 2021:
104.16.0.0/12 removed from ips-v4
104.16.0.0/13 added to ips-v4
104.24.0.0/14 added to ips-v4
  • 104.16.0.0/12(范围 104.16.0.0-104.31.255.255)已删除
  • 已添加 104.16.0.0/13(范围 104.16.0.0-104.23.255.255)
  • 已添加 104.24.0.0/14(范围 104.24.0.0-104.27.255.255)

旧范围是 104.16.0.0-104.31.255.255,而新范围是子集 104.16.0.0-104.27.255.255

该操作实际上并未添加任何地址,因为添加的网络是已删除网络的子网。该操作实际上从 IP 地址池中删除了 104.28.0.0/14(范围 104.28.0.0-104.31.255.255)。

Cloudflare 的员工非常清楚您担心的问题,他们极不可能使用除广告宣传以外的其他 IP 地址,因此您实际上可以使用 IP 过滤。

答案2

Cloudflare 允许您使用相互 TLS(带有客户端证书的 TLS)来验证传入请求是否来自其反向代理,而不是其他任何请求。他们将此功能称为“经过验证的原点拉取”,这也描述了一篇博客文章。一般来说,您可以打开此功能而不会破坏任何东西,然后添加对 Cloudflare 客户端证书的服务器端检查,并停止为没有合适证书的任何请求提供服务。

配置服务器以验证客户端证书并强制其存在和正确性将取决于您使用的服务器和可能的 Web 应用框架。但是,这在所有主流服务器软件中都相对容易。

相关内容