使用Nftables,网站仅允许Cloudflare IPs访问
通过配置 nftables
拒绝其他 IP 地址访问 HTTP(端口 80)和 HTTPS(端口 443)端口,而允许 Cloudflare 的 IP 地址访问这些端口。
1. 获取 Cloudflare 的 IP 地址范围
如前所述,你可以从 Cloudflare 官方获取 IP 地址范围:
2. 修改 nftables
配置文件
你可以通过以下步骤更新配置,只拒绝非 Cloudflare 的 IP 地址访问 80 和 443 端口。
创建或编辑 nftables
配置文件
- 打开
nftables
配置文件:
1 | sudo nano /etc/nftables.conf |
- 将以下配置添加到文件中(注意在原始配置文件的基础上进行修改或替换):
1 |
|
在这个配置中:
iif "lo" accept
允许本地回环接口 (localhost) 访问。ip saddr
和ip6 saddr
允许 Cloudflare 的 IP 地址访问 HTTP 和 HTTPS(根据你从 Cloudflare 获取的最新 IP 地址)。- 最后一条规则
ip protocol tcp tcp dport { 80, 443 } drop
会拒绝所有其他来源的 IP 访问 80 和 443 端口。
3. 应用配置
保存文件后,运行以下命令加载新的 nftables
配置:
1 | sudo nft -f /etc/nftables.conf |
或者重启 nftables
服务:
1 | sudo systemctl restart nftables |
4. 验证规则
你可以使用以下命令查看当前的 nftables
配置,确保规则已经正确加载:
1 | sudo nft list ruleset |
总结
这样,只有 Cloudflare 的 IP 地址可以访问 HTTP 和 HTTPS 服务,其他所有 IP 地址都将被拒绝访问这两个端口。注意定期更新 Cloudflare 的 IP 地址范围,以保持防火墙配置的有效性。
相关文章