共计 2389 个字符,预计需要花费 6 分钟才能阅读完成。
背景
我们购买的云服务器都有一个外网 ip, 可以直接通过这个外网 ip 访问在云服务器上搭建的网站。我们通常也会购买一个域名来绑定这个外网 ip。正常情况下,是通过域名访问网站的。
如果我们的网站内容还是不错,就会有别有用心的人购买新域名,然后绑定到我们的外网 ip, 然后,通过他们的新域名就可以访问到我们的网站,搜索引擎就会收录他们的域名。
那么,恶意绑定的原理是什么呢?
本质上通过外网 ip 能够直接访问网站。
解决
方案 1
在已有的网站上设定策略,禁止 IP 和非本网站的域名的访问,直接返回 404 或 444。不需要修改 nginx 的配置,直接修改网站的配置文件,如下图:
代码如下:
set $deny 1;
if ($host = "goubyte.com"){set $deny 0;}
if ($host = "www.goubyte.com"){set $deny 0;}
if ($deny = 1){return 404;}
方案 2
方案 1,虽然能解决网站的恶意解析的问题,如果部署多个站点,每个站点都需要单独配置。有点麻烦。
方案 2 的思路通过一个创建一个默认站点来对非法域名或 IP 进行拦截。
1 创建一个空的站点,如下图:
2 将 www.empty.com 空站点改为默认站点,如下图:
3 开启 https 防窜站。
HTTPS 防窜站 功能主要是为了解决指定了非 SSL 默认站点时,未开启 SSL 的站点使用 HTTPS 会直接访问到已开启 SSL 的站点的问题。因此,需要开启 https 防窜站。如下图:
4 空白站点开启 ssl。
空白站点配置假 SSL 证书,如下图:
并强制开启 https。假证书密钥如下:
-----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-----
假证书如下:
-----BEGIN CERTIFICATE-----
MIIBkjCB/AIJAI3bCYqa39hiMA0GCSqGSIb3DQEBBQUAMA0xCzAJBgNVBAYTAiAg
MCAXDTE4MTEyNDA5MDMzOFoYDzIwOTkxMjMxMDkwMzM4WjANMQswCQYDVQQGEwIg
IDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA18hepvNcznqDj735Opxircn3
M0Ruv8nkpHHPuurxr6tLPKAe1XAsy5dWHDbK7t4sXpT0ds9c74yqmvfwKofPk7z9
ZBhmyw/5sp454/JftL1c2fr58wB9ETfX6as5aR5hQR0M0NuQLSAB/KVzi9eeNWDd
EzT0QN5B1Ai9BR/ApMMCAwEAATANBgkqhkiG9w0BAQUFAAOBgQBiqHZsuVP09ubT
GzBSlAFEoqbM63sU51nwQpzkVObgGm9v9nnxS8Atid4be0THsz8nVjWcDym3Tydp
lznrhoSrHyqAAlK3/WSMwyuPnDCNM5g1RdsV40TjZXk9/md8xWxGJ6n1MoBdlK8T
H6h2ROkf59bb096TttB8lxXiT0uiDQ==
-----END CERTIFICATE-----
5 空白站点非法访问,配置 4444 或 404 错误码。如下图:
6 nginx 重载配置,然后,浏览器内输入 https://ip,空白站点就会接管该请求,并返回 444 错误码。如下图:
后记
本文,阐述了什么是恶意解析或域名恶意绑定,对于一个网站而言,如何防止恶意解析或恶意绑定,给出了两种解决方案,方案 1 是针对单站点的做法,并且配置简单。但是,对于多站点最好的是方案 2,虽然配置繁琐,但是一劳永逸,对于后续新增的站点,不会存在恶意解析的问题。推荐方案 2。