一. 为什么套了 CDN 其源站 IP 还会暴露&如何查询暴露情况
今天闲来无趣扫了扫自己的站点,使用浏览器进入了 https://{源服务器IP},结果发现进入了套着 CDN 博客,并且其证书是 Cloudflare 的源站证书。这是一个十分危险的情况。
为什么套了 CDN ,源站 IP 还会暴露呢?
这就要谈谈一个叫 Censys 的站点了,他会扫描全网的 IPV4 服务器 & IPV6 服务器。
比如我的源站 IP 为48.203.48.77 / 其对应的网站域名为 test.icewk.org 并开启了 CDN 代理,他会全网扫描 IPV4 地址,直到扫描到 https://48.203.48.77。
如果你没有设置 NGINX 的默认站点,其会自动匹配到你 NGINX 的第一个 开启 SSL 的网站,例如 test.icewk.org,你可以试试自己访问一下你的源站 IP 。如果你没有设置默认站点,这时候浏览器上的证书就写着你域名,就是这样知道了 48.203.48.77 与域名 test.icewk.org 的对应关系,也就暴露了源站 IP。
你可以访问 Censys Search 搜索你的域名来确认源站 IP 是否暴露。
二. 设置 NGINX 默认站点以防止源站IP被扫 / 删除 Censys 的记录
1. 设置 NGINX 默认站点 设置假证书 并使其返回 444
首先新建一个网站

打开网站的设置,随便填写一个 SSL 证书来开启 443 端口和 HTTPS 支持。自签的什么签的都行,只要 跟你套 CDN 的域名无关就行。你如果嫌麻烦我在这里给你一个证书,你直接用就好。

//密钥(KEY)
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgK0HE3hTJQDg6p/fj
nS92eSuRKZEZ5F4grT6tWFKNYVmhRANCAAQIP4WfZQx4/3/tIw0QDdt05DRKiIuO
pghp8GVQ94JcS5fmtZqX1yx0hBU4qZ0skIJr5D2M0BmhCBQ9Kulv2YDL
-----END PRIVATE KEY-----
//证书(PEM格式)
-----BEGIN CERTIFICATE-----
MIIDITCCAsagAwIBAgIUTcEWLzynkLCFCoAC1iDH2vG3EkYwCgYIKoZIzj0EAwIw
gY8xCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T
YW4gRnJhbmNpc2NvMRkwFwYDVQQKExBDbG91ZEZsYXJlLCBJbmMuMTgwNgYDVQQL
Ey9DbG91ZEZsYXJlIE9yaWdpbiBTU0wgRUNDIENlcnRpZmljYXRlIEF1dGhvcml0
eTAeFw0xOTAxMTMxNDMxMDBaFw0zNDAxMDkxNDMxMDBaMGIxGTAXBgNVBAoTEENs
b3VkRmxhcmUsIEluYy4xHTAbBgNVBAsTFENsb3VkRmxhcmUgT3JpZ2luIENBMSYw
JAYDVQQDEx1DbG91ZEZsYXJlIE9yaWdpbiBDZXJ0aWZpY2F0ZTBZMBMGByqGSM49
AgEGCCqGSM49AwEHA0IABAg/hZ9lDHj/f+0jDRAN23TkNEqIi46mCGnwZVD3glxL
l+a1mpfXLHSEFTipnSyQgmvkPYzQGaEIFD0q6W/ZgMujggEqMIIBJjAOBgNVHQ8B
Af8EBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMBMAwGA1UdEwEB
/wQCMAAwHQYDVR0OBBYEFCEZF6Eyem01XPbgwr6DXLZV1qsQMB8GA1UdIwQYMBaA
FIUwXTsqcNTt1ZJnB/3rObQaDjinMEQGCCsGAQUFBwEBBDgwNjA0BggrBgEFBQcw
AYYoaHR0cDovL29jc3AuY2xvdWRmbGFyZS5jb20vb3JpZ2luX2VjY19jYTAjBgNV
HREEHDAaggwqLmRuc3BvZC5jb22CCmRuc3BvZC5jb20wPAYDVR0fBDUwMzAxoC+g
LYYraHR0cDovL2NybC5jbG91ZGZsYXJlLmNvbS9vcmlnaW5fZWNjX2NhLmNybDAK
BggqhkjOPQQDAgNJADBGAiEAnrequCk/QZOOrcPH6C3Hgcy4SPNUy5rQtku/aYkj
qQoCIQCN6IyYNiXuwG+8jUgJrveiirBjiz2jXZSTEfVAyibjTg==
-----END CERTIFICATE-----
点击 配置文件 在 server 块填写 return 444; 来拒绝所有连接请求。

记得点保存。
在 高级设置 中点击 默认站点

在其中选择你刚才创建的网站即可,例如我就是 default.com 。记得点保存。

至此,你可以访问一下 https://{你的源站IP} 这时候会跳出无效证书,点击继续访问后会直接拒绝连接,并且所显示的证书是之前我们设置的 假证书。
2.删除 Censys 关于源站的信息
Censys 的数据库是动态的,一般更新周期为 7 天,在阻止 Censys 获取信息后的 7 天左右,其记录会自动删除。目前仅能防君子不防小人,不排除有其他类似于 Censys 的网站做这种事情还不删除记录,我的建议是使用设置 NGINX 默认站点的方法彻底关掉纯 IP 访问请求,再结合以下方法阻止 Censys 的爬虫。
Censys Search 关于退出数据收集的指南 官方文档是英文的,我来大致解释一下。
①. 阻止 Censys 爬虫的 UA
安装宝塔的 NGINX 防火墙 ,将 Censys 爬虫的 UA 记录到防火墙的黑名单中。其 UA 为:
Mozilla/5.0 (compatible; CensysInspect/1.1; +https://about.censys.io/)
②. 阻止 Censys 爬虫的 IP
在防火墙中将下方 IP 置于防火墙黑名单中:
162.142.125.0/24
167.94.138.0/24
167.94.145.0/24
167.94.146.0/24
167.248.133.0/24
199.45.154.0/24
199.45.155.0/24
206.168.34.0/24
2602:80d:1000:b0cc:e::/80
2620:96:e000:b0cc:e::/80
2602:80d:1003::/112
2602:80d:1004::/1123
