在互联网海洋中隐藏你的源站 IP


# 在互联网海洋中隐藏你的源站 IP

本文将尽可能全方位为你讲解如何在互联网中隐藏你的源站 IP,理论来说按照此方法配置后无法使用常规方法获取到源站 IP。

经转载的文章可能不是最新版本,如需查看最新版本,请访问 https://licaoz.com/post/hide-your-origin-ip-in-the-internet-ocean;转载请保留出处。

建议使用此前与你要保护域名无关的 IP 地址以尽可能完全隐藏。

CDN 层

警告:务必 选择 靠谱且信誉良好 的 CDN 服务商,选择无良 CDN 服务商可能会导致你的源站 IP 由其被泄露,甚至可能导致你网站访客的安全无法被保证。

务必 为你的网站安排好 CDN。CDN 不仅可以加快访客的访问速度,还可以隐藏你的源站 IP。大陆地区 CDN 请 务必 选择合法合规拥有增值电信业务许可证且许可证 内容分发网络业务的服务商。

大陆地区 CDN 服务商推荐:白山 / 腾讯云 / 阿里云 / 又拍云 / 上海云盾

国际 CDN:无脑推荐 CloudFlare

DNS 层

切勿 使用 任何 子域名直接解析到你的源站 IP,即使这个子域名只有你一个人知道。

另外,也请选择靠谱的 DNS 服务商;不知名小 DNS 服务商可能无法保证其可靠性与安全性。

如果不需要分地区、运营商等高级解析,可以直接托管到 CloudFlare DNS(使用 NS 接入 CloudFlare)。

服务端

如非必要,建议 允许 CDN 回源节点 IP 访问源站的 WEB 端口。

部分默认的 Web 服务器配置不当也会导致源站 IP 泄露——它会使服务端首个配置的 SSL 证书被暴露在 IP 地址的 443 端口,例如:

IP:443 示例图片

宝塔面板解决方案

此方法理论来说是目前最有效的方法,但不排除以后被针对性查找等预料之外的情形。

请逐步进行,每个节并不是单独的解决方案而是一个步骤。

以你服务器的公网 IP 地址建站

进入宝塔面板,点击左侧菜单栏中的「网站」进入网站列表。

在右侧网站列表中,单击「添加站点」;在弹出窗口的「创建站点」Tab 下,「域名」一栏中输入你的服务器公网 IP 地址——一般地,它应该与你域名 A 记录解析地址、宝塔面板左上角地址相同;完成后,点击弹框右下角「提交」。

给你的 IP 地址签发一个 SSL 证书

打开 ZeroSSL 网站并 Log in。

这里 「Enter Domains」输入框中输入你的源站 IP 地址并选择「Next Step」。

有效期选择 90-Day Certificate 即可,如果你有钱买 1-Year Certificate 也不是不行对吧,然后「Next Step」。

CSR 这个让它自己生成就行了,直接「Next Step」。

后面这个也不用管 除非你想氪金,直接「Next Step」。

如果不出问题,你的订单应该已经提交成功并进入验证阶段。

验证阶段请选择「HTTP File Upload」并依照提示放置验证文件到指定位置,「Next Step」。

然后,单击「Verify Domains」。

如果没什么问题的话就会签发证书啦,接着你会被引导至安装页面。

在「Download Certificate」中选择你的 Web 服务,点击右侧「Download Certificate (.zip)」。

部署证书

在 宝塔面板 -> 网站 -> 站点修改 -> SSL -> 其他证书 中填入刚才签发的证书并确认。

NGINX 证书拼接方法:将 certificate.crt 中的内容置于前,ca_bundle.crt 中的内容置于后。

注意: 宝塔面板证书配置左侧需填写内容为 private.key(私钥文件),右侧才为证书文件,不要搞反了。

部署完成后访问 HTTPS://IP 应该会有「连接安全」、「证书有效」之类的提示并且会有一个小锁图标(新版 Chrome 为类似于向下箭头符号的图标)。

修改配置

一般地,我们认为 IP 地址不应被任何人直接访问;所以这一节将会教你如何禁止任何直接的访问。

本节以 NGINX 为例进行演示。

首先,进入 宝塔面板 -> 网站 -> 站点修改 -> 配置文件。

server{} 中,任意位置(建议直接插到 SSL-START 上方),插入 return 444; 并保存。

444 No Response Used internally to instruct the server to return no information to the client and close the connection immediately.

此时,无论是以 HTTP 还是 HTTPS 访问 IP 地址都应该返回这个错误:ERR_EMPTY_RESPONSE,如果如此则证明配置正常。

本文来源:LCZBlog