背景介绍

今天看到一篇文档,通过censys.io这个网站,可以查出套用CF的CDN以后的网站的真实ip地址。
如果你不相信,可以去下面的地址查一下

https://censys.io/ipv4?q=你的域名

会列出所有你的ip

解决方案

  1. 服务端使用cloudflare的自签名证书,设置强制跳转到https
  2. Cloudflare的SSL加密部分选择 FULL 模式
  3. 部署Authenticated Origin Pulls

即把下面内容保存成 cloudflare.crt

-----BEGIN CERTIFICATE-----
xxxxxxxxxxxxxxxxxxxxxxxxxxxx==
-----END CERTIFICATE-----

然后在Nginx增加下面配置

sl_client_certificate /etc/nginx/certs/cloudflare.crt;
ssl_verify_client on;

重启nginx,直接访问网站会提示400 Bad Request.

最后在Cloudflare控制台启用认证来源,即 Authenticated Origin Pulls 设置为 on .

安全了

不过censys保存的快照不知道什么时候可以删除

后续

发现有人说了下原理如下:
扫描ip,然后https://ip 取得证书,还有默认网站内容
如果某网址内容和证书一样,就是认为这个ip为源

简单解决方案

宝塔新建个网站,
域名填写ip,作为default,
搞张自签名的ip证书加上,
直接访问ip或者其他恶意指向都会定向到这个默认的ip站点



全文来源于