最近发现有直接访问源站的请求,查了一下他们的域名直接指向的就是源站,可能是之前这个 IP 的用户吧。为了保险期间,我们希望只允许 CDN 访问,那么应该怎么做呢?
获取 IP 列表
我们使用了 Cloudflare 和 百度云加速,从本质上来看其实都是 Cloudflare(
百度云加速的 IP 列表在此;Cloudflare 的 IP 列表在此。
生成 firewall-cmd
规则
这里摸了个脚本:
function generateRule(ips = [], services = ["http", "https"], ip_version = 4) {
return ips
.map((ip) => {
return services
.map(
(service) =>
`sudo firewall-cmd --zone=drop --add-rich-rule='rule family="ipv${ip_version}" source address="${ip}" service name="${service}" accept' --permanent`
)
.join("\n");
})
.join("\n");
}
把对应的 IP 地址分好了塞进去就行了,非常的方便(
关闭开启的 http(s)
服务
接下来就是执行上面输出的结果了。然后我们需要关掉上一篇文章中启用的 http
和 https
服务:
sudo firewall-cmd --zone=drop --remove-service=http --permanent
sudo firewall-cmd --zone=drop --remove-service=https --permanent
最后重载 firewalld
即可:
sudo firewall-cmd --reload