前言(废话)
你是否在使用Cloudflare提供的缓存代理服务呢。作为有名的赛博活佛,Cloudflare代理提供了免费的、强大的缓存+WAF+防DDoS等功能,然而俗话说:防君子不防小人。上述功能成立的前提是,用户正常访问了你设置的用Cloudflare代理的域名,就像这样(路径1):
用户IP -> 域名 -> CF代理IP(DNS解析) -> 你的服务器IP
那么假如你的服务器IP已经暴露,有人直接用修改hosts文件的方式强行绑定了域名和你的服务器IP(路径2)然后使劲儿D你,阁下又该如何应对?
用户IP -> 域名 -> 你的服务器IP(hosts文件绑定)
只允许Cloudflare的IP访问就好了!
为了让用户必须经由Cloudflare代理才能访问站点,可以将自己网站的HTTP服务器设置为只允许Cloudflare代理的IP地址访问。这样一般用户就无法用自己的IP地址通过(路径2)直接访问HTTP服务器了。这里的HTTP服务器以Nginx为例说明。
Cloudflare代理的IP地址
可以从Cloudflare的官方文档找到。IPv4和IPv6的都有,按需参考即可。
Nginx设置IP白名单
在server或路径中加入IP白名单设置。这里以网站根目录为例。
location /
{
## 使用的是2024.07.21确认的地址。设置前请确认上述官方文档。
## 放行CF地址(IPv4)
allow 173.245.48.0/20;
allow 103.21.244.0/22;
allow 103.22.200.0/22;
allow 103.31.4.0/22;
allow 141.101.64.0/18;
allow 108.162.192.0/18;
allow 190.93.240.0/20;
allow 188.114.96.0/20;
allow 197.234.240.0/22;
allow 198.41.128.0/17;
allow 162.158.0.0/15;
allow 104.16.0.0/13;
allow 104.24.0.0/14;
allow 172.64.0.0/13;
allow 131.0.72.0/22;
## 放行CF地址(IPv6)
allow 2400:cb00::/32;
allow 2606:4700::/32;
allow 2803:f800::/32;
allow 2405:b500::/32;
allow 2405:8100::/32;
allow 2a06:98c0::/29;
allow 2c0f:f248::/32;
## 屏蔽其他IP地址
deny all;
proxy_pass http://127.0.0.1:8080/;
## 其他配置……
}