
1.1 CDN可以降低延迟、缓解DDoS,但作为反向代理会暴露或转发原始请求信息,可能泄露节点真实IP与客户端元数据。
1.2 本文目标:给出可执行的步骤——如何用防火墙限定回源、配置Nginx/代理、设置mTLS、禁用敏感接口缓存与审计日志,降低隐私泄露和回源风险。
2.1 常见泄露源:X-Forwarded-For / CF-Connecting-IP 等头部、TLS证书与证书透明日志、DNS A记录以及未受限的回源IP。
2.2 评估要点:列出所有对外端口、RPC/REST路径、DNS记录和SSL证书;标注哪些路径不应被缓存(如RPC、wallet endpoints)。
3.1 建表:节点IP、域名、所有对外端口、对外证书、目前被CDN代理的域名。
3.2 获取CDN边缘IP:例如Cloudflare可用 https://www.cloudflare.com/ips-v4 下载,然后用于防火墙白名单。
4.1 将原始节点只允许CDN回源:示例(Ubuntu + ufw)——先允许CDN IP段,再拒绝其他IP。
4.2 ufw示例命令:sudo ufw allow from 173.245.48.0/20 to any port 443 comment 'CF'(实际用下载到的IP列表循环添加);然后 sudo ufw deny proto tcp to any port 30303(阻断以太节点默认端口对公网开放)。
5.1 在Nginx启用real_ip模块并只信任CDN源:在http或server段加入 set_real_ip_from 173.245.48.0/20; real_ip_header CF-Connecting-IP;real_ip_recursive on;
5.2 禁止直接绕过CDN访问:在server段检测并拒绝非CDN源的连接,例如通过if ($remote_addr !~ ^(173\.245\.|103\.21\.) ) { return 403; }(用实际IP范围替换)。
6.1 对RPC/JSON接口进行no-store配置:在Nginx location /rpc/ { add_header Cache-Control "no-store, no-cache, must-revalidate"; proxy_pass http://backend_rpc; }
6.2 在CDN侧确保对应路径不缓存(Cloudflare Page Rules 或 Cache-Control respect)。
7.1 为CDN与原点建立双向TLS:生成客户端证书(CDN作为客户端)并在origin上验证。
7.2 OpenSSL示例生成:openssl req -new -x509 -days 365 -nodes -out origin-ca.pem -keyout origin-ca.key;在CDN上传origin-ca作为受信任证书并在nginx配置 ssl_client_certificate /etc/nginx/ssl/origin-ca.pem; ssl_verify_client on;
8.1 如果可能,使用CDN厂商的隧道服务(如Cloudflare Tunnel)将origin隐藏在私网内,避免公开A记录。
8.2 操作步骤:在节点上安装tunnel客户端,注册隧道并将域名CNAME指向Tunnel分配的域名;同时在DNS中删除直接指向origin的A记录。
9.1 保存两个层级日志:边缘CDN日志与origin access log。对比CF-Connecting-IP与origin记录,确认真实IP是否被安全处理。
9.2 测试命令:curl -v -H "CF-Connecting-IP:1.2.3.4" https://your-origin.example/rpc/ 查看Nginx是否正确读取并记录该头,或是否只接受来自CDN的连接。
10.1 发现泄露:如果发现origin IP公开或日志中出现非CDN源IP,立即将域名切换成维护页并更新防火墙规则阻断。
10.2 紧急措施:更换origin服务器IP并更新防火墙白名单,重新生成并更换origin TLS证书,审查是否存在密钥或钱包泄露。
11.1 误区:只依赖CDN禁止直接访问但未加防火墙;缓解:务必在origin层面白名单CDN IP并启用mTLS。
11.2 误区:缓存所有静态与动态路径;缓解:标注并对RPC/交易相关路径显式设置no-cache/no-store。
12.1 对延迟敏感但又注重隐私的节点,可仅对静态资源与区块下载启用CDN缓存,对RPC/交易流量走直连或隧道。
12.2 逐步部署:先在测试子域启用CDN和上述防护策略,监测日志与功能无误后再迁移主域。
问:CDN会不会把我的节点真实IP泄露给第三方?
答:可能会,如果你的origin存在公开A记录或防火墙未限制只允许CDN回源则会被扫描或记录。解决方法:删除直接指向origin的A记录、使用CDN隧道/私网、在origin防火墙内只允许CDN边缘IP并启用mTLS验证。
问:如何验证CDN是否正确隐藏了回源信息?
答:在部署后检查三项:DNS记录是否移除origin A记录;origin防火墙是否只允许CDN IP段访问;对外发起请求并比对CDN日志与origin日志中记录的客户端IP,若origin仅见到CDN边缘IP且通过mTLS验证成功,说明隐藏有效。
问:若发生回源泄露我第一步该怎么做?
答:立即断开受影响origin(DNS切换或防火墙阻断),用新IP替换出事origin并只允许CDN回源,重置并轮换证书与私钥,审计是否有密钥或钱包被访问,然后按事件响应流程通知利益相关方。