censys.io扫描ip这个功能的确强大,不过有开源的脚本,分分钟扫描全球ip4,但是对于用于网站的就不友好了。

censys能扫描到网站使用CDN之后的源站ip,我们也有很多个网站被泄漏了,但是今天全部重新整理、测试之后,发现就只有用cloudflare CDN的才会被扫描到,阿里云、腾讯云的CDN都扫描不到,当然这取决于你当时配置CDN的步骤,如果先开放了A解析,那同样能扫描到。比如这个博客域名www.jingxialai.com,能扫到的都是曾经套过cloudflare CDN的服务器ip。

网上搜索Cloudflare censys泄漏源站ip的资讯很多,相关教程也多,不过看了很多都是先自签ip证书,或者先弄个假证书,然后再替换回去。不过我们在通过第三方平台cname接入的时候,又发现了如果步骤顺序对了,censys同样也是可以扫描不到源站IP的。

最终实际测试了2台服务器、2个子域名,不同方式接入均不会被扫描到,相当于先走Cloudflare自签证书。

理论上以下过程不适用于已经泄露过网站ip的服务器,也就是如果之前同台服务器下有其他网站已经泄露了,那下面依旧可能扫到,如果这个时候还能扫到,就直接给服务器ip绑定个假证书,当然也可以一开始就上ip证书,只是有的人不知道怎么给服务器ip绑定证书。

一、绑定假证书的方式:

服务器环境搭建好之后,先不要上网站,先套服务器ip的假证书。

就是在你服务器nginx.conf里面添加个ip证书就行:

    listen 80;
    listen [::]:80;
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    ssl_certificate /usr/local/nginx/conf/ssl/1.crt;
    ssl_certificate_key /usr/local/nginx/conf/ssl/1.key;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
    ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
    ssl_prefer_server_ciphers on;
    ssl_session_timeout 10m;
    ssl_session_cache builtin:1000 shared:SSL:10m;
    ssl_buffer_size 1400;
    add_header Strict-Transport-Security max-age=15768000;
    ssl_stapling on;
    ssl_stapling_verify on;

在server段增加443证书的方式,1.crt和1.key就是假证书,这个证书你随便生成个与你无关的证书,然后把名称改成1.crt和1.key,放到你服务器ssl目录就好,有的证书格式是pem.

然后重启nginx之后,再给服务器绑定网站。

一、接入域名之后随便解析

比如测试域名:test.jingxialai.com 设置A解析IP:172.69.22.128

就是这个第一次解析的ip乱写,填写Cloudflare自己的节点ip就行。

二、去SSL设置

  1. Overview – 选择Full(全程模式)
  2. Edge Certificates – Always Use HTTPS – on(强制跳转到HTTPS)
  3. Origin Certificates – Create Certificate(创建一个自己的域名证书)
  4. 把创建的证书分别保存为pem和key,放到自己的服务器网站相关配置路径去
  5. 创建证书下面有个Authenticated Origin Pulls – On (开启证书身份验证)

三、改回正常解析ip

现在就去把自己的域名解析,改到自己服务器真ip就行了,然后过几天再去censys.io测试看看有没有扫到。

或者给自己服务器默认ip直接绑定个假证书。

如果不放心,就加强下安全规则,只允许Cloudflare的ip回源访问,把这里面的IP:https://www.cloudflare.com/ips/ 都加到服务器安全组的白名单,只允许访问80、443端口。同时不要开放0.0.0.0/0的80和443访问权限,服务器安全组这步可以最先做。

不过你网站要是用了默认的SMTP邮件,还是会泄露服务器ip,所以可以用第三方邮件推送或者用手机号验证。

Tagged in: