Published on

宝塔面板隐藏源站 IP 教程

在使用 CDN(如 Cloudflare)时,如果源站 IP 暴露,攻击者可能会绕过 CDN 直接攻击源站。本文介绍一种在宝塔面板中通过配置默认站点来隐藏源站 IP 的方法。

原理

当攻击者或网络空间测绘引擎(如 Censys、Shodan 、FOFA)直接通过 IP 访问你的服务器时,如果服务器没有配置默认站点,Nginx 通常会返回第一个加载的站点。

如果该站点配置了 SSL 证书,Nginx 会在握手阶段返回该站点的证书信息。由于证书中包含真实的域名,扫描器就会将这个 IP 地址与你的域名关联起来并记录在案。一旦源站 IP 暴露,攻击者就可以绕过 CDN 直接攻击源站。

为了防止这种情况,我们需要配置一个“陷阱”站点作为默认站点。当有人通过 IP 直接访问时,返回一个特殊的错误码(如 418)以及一个无关的(或自签名的)SSL 证书,从而切断 IP 与真实域名的联系。

步骤

一、创建一个新网站

  1. 登录宝塔面板。
  2. 点击左侧菜单的 网站 -> PHP项目 -> 添加站点
  3. 域名 处填写一个不存在的域名,例如 default.n 或者直接填写服务器 IP。
  4. PHP 版本 选择 纯静态 即可。
  5. 点击 提交p1

二、设置默认站点

  1. 网站 页面中,点击上方的 高级设置 按钮。
  2. 在弹出的窗口中,选择 默认站点 选项卡。
  3. 选择刚才创建的 default.n (或你填写的 IP 站点)。
  4. 点击 保存p1

这样,当有人通过 IP 直接访问你的服务器,或者访问未绑定的域名时,Nginx 就会将请求转发到这个默认站点。

三、配置 Nginx 返回 444

为了让扫描者更困惑,我们可以让这个默认站点返回一个非标准的 HTTP 状态码,比如 444 No Response。这个状态码是 Nginx 特有的,表示服务器不向客户端返回任何信息,并立即关闭连接。这对于防止扫描非常有效。

  1. 在网站列表中,点击刚才创建的站点 default.n设置
  2. 进入 配置文件 选项卡。
  3. SSL配置 前添加 return 444; p1

四、设置假 SSL (可选)

为了防止通过 SSL 证书泄露真实域名信息,我们需要给这个默认站点配置一个“假”的 SSL 证书。

  1. 在站点设置的 SSL 选项卡中。
  2. 选择 当前证书 选项卡。
  3. 将下方的密钥和证书内容分别粘贴到对应的文本框中,然后点击 保存

密钥 (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-----

证书 (PEM):

-----BEGIN CERTIFICATE-----
MIIBkjCB/AIJAI3bCYqa39hiMA0GCSqGSIb3DQEBBQUAMA0xCzAJBgNVBAYTAiAg
MCAXDTE4MTEyNDA5MDMzOFoYDzIwOTkxMjMxMDkwMzM4WjANMQswCQYDVQQGEwIg
IDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA18hepvNcznqDj735Opxircn3
M0Ruv8nkpHHPuurxr6tLPKAe1XAsy5dWHDbK7t4sXpT0ds9c74yqmvfwKofPk7z9
ZBhmyw/5sp454/JftL1c2fr58wB9ETfX6as5aR5hQR0M0NuQLSAB/KVzi9eeNWDd
EzT0QN5B1Ai9BR/ApMMCAwEAATANBgkqhkiG9w0BAQUFAAOBgQBiqHZsuVP09ubT
GzBSlAFEoqbM63sU51nwQpzkVObgGm9v9nnxS8Atid4be0THsz8nVjWcDym3Tydp
lznrhoSrHyqAAlK3/WSMwyuPnDCNM5g1RdsV40TjZXk9/md8xWxGJ6n1MoBdlK8T
H6h2ROkf59bb096TttB8lxXiT0uiDQ==
-----END CERTIFICATE-----

测试

配置完成后,尝试直接在浏览器中输入你的服务器 IP 地址(http://YOUR_IP 和 https://YOUR_IP)。

  • 你应该会看到浏览器显示 无法访问此网站连接已重置(因为 Nginx 返回了 444 并关闭了连接)。
  • 查看抓包工具或开发者工具的网络请求,应该看不到正常的 HTTP 响应。

通过以上设置,即使攻击者扫描到了你的 IP,也无法直接获取到你服务器上真实运行的网站内容,从而有效保护了源站 IP。