肥鱼博客 - 听闻远方有你,动身跋涉千里。

使用 CDN 后如何保护源站 IP 不泄露

使用 CDN,一般都是出于加速和安全防护的目的,但是经常一些有意无意的配置导致源站 IP 暴露,致使 CDN 防护失效,本文将探讨如何更好地保护源站 IP 安全。

背景

开始之前,先介绍一个网站:Censys.io ,这个网站通过不间断地扫描
来记录 IP 等信息,因此在这里可以找到与你网站相关的很多东西(且不限于此),比如:

这也就意外着,只要有心套几层 CDN 都防不住,而且能实现这个功能的网站或工具不限于 Censys 一家。因此我们就要想办法尽量减少各个信息链的关联。

原理

Nginx 服务器本身工作原理,当未设置默认网站(default_server)时,通过 IP 可直接访问建立的第一个网站,而当你在 IP 前加上 https 访问时,Nginx 会自动返回该网站的 https 证书,从而暴露相关域名信息。

实例

以刚才的网站为例为例,查到的 IP 是 51.79.197.139,于是我们访问 https://51.79.197.139,可以看到:

已经把该 IP 下的默认站点 shijiu9.club 暴露了

结论

通过上述分析,我们知道只需要扫描全球所有 IP 段的所有 IP 的 443 端口就很有可能知道某个网站的源站 IP(直接扫描 0.0.0.0/0 即可)。

IP 限制

最暴力的方法,你用的啥 CDN,就利用防火墙只允许 CDN 的回源 IP 访问自己的 VPS。

IP 证书

这是最方便快捷的方法,就是新建一个默认的站点(default_server),证书使用 IP 证书,这样通过扫描 443 来判断源站的方法就无法获知你的域名,

[scode type="share"]默认站点的意思就是说不通过域名直接访问 IP,要显示的是哪个网站内容。[/scode]

空证书:

-----BEGIN CERTIFICATE-----
MIIBkjCB/AIJAI3bCYqa39hiMA0GCSqGSIb3DQEBBQUAMA0xCzAJBgNVBAYTAiAg
MCAXDTE4MTEyNDA5MDMzOFoYDzIwOTkxMjMxMDkwMzM4WjANMQswCQYDVQQGEwIg
IDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA18hepvNcznqDj735Opxircn3
M0Ruv8nkpHHPuurxr6tLPKAe1XAsy5dWHDbK7t4sXpT0ds9c74yqmvfwKofPk7z9
ZBhmyw/5sp454/JftL1c2fr58wB9ETfX6as5aR5hQR0M0NuQLSAB/KVzi9eeNWDd
EzT0QN5B1Ai9BR/ApMMCAwEAATANBgkqhkiG9w0BAQUFAAOBgQBiqHZsuVP09ubT
GzBSlAFEoqbM63sU51nwQpzkVObgGm9v9nnxS8Atid4be0THsz8nVjWcDym3Tydp
lznrhoSrHyqAAlK3/WSMwyuPnDCNM5g1RdsV40TjZXk9/md8xWxGJ6n1MoBdlK8T
H6h2ROkf59bb096TttB8lxXiT0uiDQ==
-----END CERTIFICATE-----
-----BEGIN RSA PRIVATE KEY-----
MIICXQIBAAKBgQDXyF6m81zOeoOPvfk6nGKtyfczRG6/yeSkcc+66vGvq0s8oB7V
cCzLl1YcNsru3ixelPR2z1zvjKqa9/Aqh8+TvP1kGGbLD/mynjnj8l+0vVzZ+vnz
AH0RN9fpqzlpHmFBHQzQ25AtIAH8pXOL1541YN0TNPRA3kHUCL0FH8CkwwIDAQAB
AoGAQ4ejh6AV5VCWJ8AOZXdXsofIYzUBa+glNAmiNx8b8BwteZWq0KVAf56nBkFn
lQXW4OrA7wXKUfW11rXNZaIHJePJXv1swkN9+Em18Hon6BrtcqnKAwzAbhok3SzY
IVjI/zrgOABH6+ii77xCRBzI1itVPNN88DAUHC7PYLYiaaECQQD7PSoij37+kMc/
wPeEkl9r3vzU0OrsCsjU8Ev714OaoL/SIuAh6nsiRh9rcbUrrpGSSzIcmsk9HMDa
hXBNkNl5AkEA298yQvssaUc4tbEWxAVfd9DsHJdCdbXfgf9Dy5/tpCzYncY7T0du
VVHqKu3jXWoMc5XlesiCOerU/DIlMM8dGwJBANQn7GLO5iC1xWvS2bF7oVSIMtzL
pvW4jaszWBbNAPccc59RkA9T4LMqn/GtTZ4bhhYRpbl+BB21IC3nrNPzU5ECQG8T
Ln0QDruQs2F2eR3F6RjKfr1i3LxCiQtPPZycypzp2vS5tDS0zVRk8XuGehoy/N9X
lnqU2NURgU92tbsWpokCQQDdc9tU3B/OM/YfzUNwvOLmUVwrJX6PFSFsOn+XHrCC
q9LcGEAHyzaf5GEWje84ee4rkv5oaZcwll3dg4IioBnC
-----END RSA PRIVATE KEY-----

回源限制

你根本不需要在源站放一个证书,你只要 CDN 设置为 http 回源,CDN 使用 https 就行了,不要用协议跟随。

比如在 CloudFlare上把 SSL 设为 full即可,记得一点就是不要把自己的网站设为默认网站。

邮局保护

不要在服务器上直接使用邮件服务,包括使用托管邮局和本地直接发信,因为收信用户都可以在邮件头信息中直接查看来源 IP,确有需要尽量使用代理服务器或者邮局 web 端来发信。当然了,防护措施不仅仅上面提到的这些,大家可以根据自己的需求选择。

当前页面是本站的「Google AMP」版。查看和发表评论请点击:完整版 »