我们一直会认为如果用CDN隐藏网站真实IP就可以万无一失了,但网站服务器经常会不通过CDN受到攻击,或者是SSH被强制爆破,殊不知一个蹊跷的网站正泄露你的站点IP。
有一个坑爹的网站Censys,时刻在全网扫描激活的IP地址,然后利用Nginx一个漏洞来检查IP对应的域名,并做了对应关系。如果服务器是Nginx的Web服务,可以直接通过https://ip地址来访问,Nginx会向浏览器发送默认的SSL证书,通过查看证书详情可以找到对应的域名。如果两厢匹配,那么你的站就被这个坑爹的Censys给记录了,通过 search.censys.io 搜索域名或IP就能找到关联信息,甚至他还会扫描你服务器开放的端口。
二、步骤
1.测试该网站是否记录了IP
通过图我们可以看到,我服务器的IP已经被该网站所记录,且其还记录了我服务器开放的端口。如果被黑客非法使用,后果不堪设想。
2.泄露的原因
我们先来重现一下Nginx的这个漏洞。Nginx的配置文件很干净整洁。下图中就是一个很常见的配置,估计很多人这么用了很久,都觉得没啥问题。
这个时候,黑客来了,此时,他啥都不知道,他只是通过IP扫描工具扫到了你的服务器的IP是在线状态。然后他直接把你的IP前面加上https://用浏览器来访问。我并没有设置default_server 默认网站,Nginx依然给黑客返回了我网站的证书。
这主要是因为Nginx的逻辑问题,客户端请求了一个压根没有配置的主机名,这里就是IP地址,Nginx 服务端看到请求来都来了,会把配置文件里面找到的第一个网站的配置返回给客户端,因为请求的是443端口,所以会返回配置文件里面第一个https站点。此时,黑客就拿到了你的网站的域名跟与其对应的真实IP,你通过 CDN 隐藏网站真实IP的想法就不可能实现。
3.宝塔面板开启HTTPS防窜站
在宝塔面板网站页面上方找到HTTPS防窜站,并且开启。这样就会向浏览器发送一个错误的证书,使黑客无法看到你网站的网址。
4.设置IP为空证书
这里以宝塔面板为例,用服务器IP新建一个网站,并且在网站配置文件添加一段代码。
宝塔面板修改配置文件
listen 443 ssl;
server_name 服务器IP;
set $empty "";
ssl_ciphers aNULL;
ssl_certificate data:$empty;
ssl_certificate_key data:$empty;
非宝塔修改配置文件
server {
listen 443 ssl;
server_name 服务器IP;
set $empty "";
ssl_ciphers aNULL;
ssl_certificate data:$empty;
ssl_certificate_key data:$empty;
}
5.宝塔面板设置一个默认站点
首先你得配置一个默认站点。在宝塔网站菜单创建一个空网站,并将其设置为默认站点。配置假的SSL证书,并在站点管理中的SSL上传虚假的证书。
证书(PEM)
-----BEGIN CERTIFICATE-----
MIIBkjCB/AIJAI3bCYqa39hiMA0GCSqGSIb3DQEBBQUAMA0xCzAJBgNVBAYTAiAg
MCAXDTE4MTEyNDA5MDMzOFoYDzIwOTkxMjMxMDkwMzM4WjANMQswCQYDVQQGEwIg
IDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA18hepvNcznqDj735Opxircn3
M0Ruv8nkpHHPuurxr6tLPKAe1XAsy5dWHDbK7t4sXpT0ds9c74yqmvfwKofPk7z9
ZBhmyw/5sp454/JftL1c2fr58wB9ETfX6as5aR5hQR0M0NuQLSAB/KVzi9eeNWDd
EzT0QN5B1Ai9BR/ApMMCAwEAATANBgkqhkiG9w0BAQUFAAOBgQBiqHZsuVP09ubT
GzBSlAFEoqbM63sU51nwQpzkVObgGm9v9nnxS8Atid4be0THsz8nVjWcDym3Tydp
lznrhoSrHyqAAlK3/WSMwyuPnDCNM5g1RdsV40TjZXk9/md8xWxGJ6n1MoBdlK8T
H6h2ROkf59bb096TttB8lxXiT0uiDQ==
-----END CERTIFICATE-----
密钥(KEY)
-----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-----
6.将Censys的IP加入黑名单
141.212.121.0/24
141.212.122.0/24
141.212.123.0/24
198.108.66.0/23
这个方法其实也不靠谱,因为不止Censys一家在扫全网IP。