解释:只有把域名托管到cloudflare,并且开启了cdn(小云朵)的网站才能访问,可以有效防止真实服务器 IP 被探测到
在运营网站的过程中,安全始终是一个永恒的话题。即便我们使用了 Cloudflare 这样的 CDN 服务,但如果配置不当,真实 IP 依然有可能泄露。
想象一下这个场景:你的网站正在使用 Cloudflare CDN,看似很安全。但是有一天,你突然发现服务器负载异常,网站响应缓慢。经过排查,你惊讶地发现有大量的直接 IP 访问请求,绕过了 CDN 的防护。这意味着你的服务器真实 IP 已经泄露了。
这种情况并不罕见,IP 可能通过多种途径泄露:
- DNS 历史记录
- 邮件服务器配置
- 解析记录变更前的访问
- 网站本身的某些功能特性
IP 地址范围
https://www.cloudflare.com/zh-cn/ips/
下载脚本
cd /root && curl -O https://raw.githubusercontent.com/woniu336/open_shell/main/cloudflare-only.sh
赋予权限
chmod +x /root/cloudflare-only.sh
执行
./cloudflare-only.sh
查看规则
iptables -L INPUT -n --line-numbers
仅查看80和443
iptables -L INPUT -n --line-numbers | grep -E "80|443"
查看ipv6
ip6tables -L INPUT -n --line-numbers | grep -E "80|443"
检查是否存在这些冲突规则
iptables -L INPUT -n --line-numbers | grep "dpt:80\|dpt:443"
白名单
添加本地ip,可以做到,在不开cdn的情况下,只有你自己可以访问
iptables -I INPUT 1 -s 你的ip/32 -p tcp -m multiport --dports 80,443 -j ACCEPT
保存规则
iptables-save > /etc/iptables/rules.v4
删除测试 IP:
iptables -D INPUT 1
删除规则
curl -sS -O https://raw.githubusercontent.com/woniu336/open_shell/main/clear-cloudflare.sh && chmod +x clear-cloudflare.sh && ./clear-cloudflare.sh
删除ipv6
for i in {1..8}; do
ip6tables -D INPUT 1
done
或者(保留fail2ban)
for i in $(iptables -L INPUT -n --line-numbers | grep -E "80|443" | grep -v "f2b-fail2ban" | awk '{print $1}' | sort -nr); do iptables -D INPUT $i; done && for i in $(ip6tables -L INPUT -n --line-numbers | grep -E "80|443" | grep -v "f2b-fail2ban" | awk '{print $1}' | sort -nr); do ip6tables -D INPUT $i; done
调整顺序(可选)
例如:将 f2b-nginx-bad-request 规则移到最前面(在 Cloudflare 规则之前)
删除原来的规则
iptables -D INPUT 18
调整到前面
iptables -I INPUT 1 -p tcp -m multiport --dports 80,443 -j f2b-nginx-bad-request