必须将所有dns记录设为cloudflare代理(橙色云图标),禁用灰色云图标;对cname链路需确保第三方域名也启用代理;源站防火墙仅允许cloudflare官方ip段访问,通过iptables等工具配置白名单规则。

你的网站已接入Cloudflare免费CDN,但日志里仍频繁出现非Cloudflare IP直连源站的请求,说明回源IP未受控,攻击者正绕过防护直接打你服务器。
确认Cloudflare代理状态是否生效
登录Cloudflare控制台→进入对应域名的DNS页面→逐条检查所有A、AAAA、CNAME记录的“代理状态”列:必须全部为橙色云图标(Proxied)。灰色云图标(DNS only)等于直接暴露源站IP,攻击者一扫就中。
特别注意:若存在CNAME记录指向非Cloudflare托管的第三方域名(如cdn.example.net),而该域名本身未启用代理,则整个链路失效,源站IP必然泄露。
只允许Cloudflare IP访问源站防火墙
这是防止直连攻击最硬核的一道防线。源站服务器防火墙必须拒绝所有非Cloudflare官方IP段的入向流量。
方法一:使用iptables(Linux)
下载最新Cloudflare IPv4/IPv6地址段列表:【curl -s https://www.cloudflare.com/ips-v4 | xargs -n1 echo "-A INPUT -s" | sed 's/$/ -j ACCEPT/' > /tmp/cf4.rules】;同理处理ips-v6;然后执行iptables-restore
方法二:腾讯云/阿里云安全组
在云平台安全组入方向规则中,删除所有0.0.0.0/0或任意IP的放行项;新增多条规则,协议类型TCP,端口80/443,源IP分别填入Cloudflare官方公布的每个IPv4网段(如173.245.48.0/20),每条单独一行。
注意:Cloudflare IP段会更新,建议每季度手动同步一次,或用脚本自动拉取并重载规则。
配置Nginx反向代理并隐藏真实响应头
第一步:在Nginx server块中添加proxy_pass指向源站内网IP(如192.168.1.10:8080);
第二步:强制清除敏感响应头:add_header X-Frame-Options "DENY" always;proxy_hide_header X-Powered-By;proxy_hide_header Server;
第三步:确保proxy_set_header Host $host与proxy_set_header X-Real-IP $remote_addr已启用——否则后端应用无法识别真实访客IP;
第四步:在源站Web服务(如Nginx或Apache)配置中禁用所有调试输出,移除HTML源码、JS文件、CSS注释、错误页中可能硬编码的IP、内网地址或云厂商标识(如“aliyun”、“qcloud”)。
验证源站是否真正隐身
① 打开终端执行:curl -I https://yourdomain.com | grep "X-Real-IP" —— 正常应返回Cloudflare边缘节点IP,而非你服务器的公网或内网IP;
② 访问网站后按Ctrl+U查看网页源代码,全选搜索“192.168.”、“10.”、“172.16”、“qcloud”、“aliyun”等关键词,任何一处命中都意味着信息泄露;
③ 使用在线工具(如dnsdumpster.com)扫描yourdomain.com全量子域名,逐一核对Cloudflare DNS面板中是否每个子域名记录均为橙色云图标——漏掉一个dev或test子域,就等于留了一扇没锁的后门。











