1Panel 当前版本自带的安全入口功能并不能有效隐藏面板特征,使用 Censys 等工具可以轻易将大量安装了 1Panel 面板的服务器扫描出来,当出现漏洞时存在被攻击的风险

本文将介绍通过配置 Cloudflare Tunnel 与 Cloudflare Access 来保护 1Panel 面板,隐藏面板特征,增加外部验证,提高面板的安全性,本教程也适用于保护其他不便直接暴露在公网上的服务

前置条件

  • 一个域名,并将其添加至 Cloudflare
  • 一台服务器,安装有 1Panel 或其他你需要保护的服务
  • Cloudflare 账户绑定有效的支付方式,如 Paypal

配置 Cloudflare Tunnel

  1. 登录 Cloudflare 控制台,点击 Zero Trust 选项卡
  2. 填写信息开通免费计划(免费计划限制50用户,个人使用几乎不可能超过这个限制)
  3. 在 Networks -> Tunnels 中,创建一个新的 Tunnel

Tunnel Type 选择 Cloudflared,填写 Tunnel 名称并点击右下角保存

选择服务器对应的系统与架构,将生成的命令复制到服务器终端中执行

命令执行完毕后,页面下方 Connectors 中出现 Connector 信息即表示 cloudflared 已成功安装并与 Cloudflare 的服务器建立连接,点击下一步

  1. 填写面板端口并绑定域名

Subdomain.Domain 表示之后面板访问的域名,Path 无特殊需求留空即可

Type 选择 HTTP,URL 填写 localhost:面板端口,点击保存

现在你应该可以通过绑定的域名访问你的面板了

配置 Cloudflare Access

  1. 回到 Cloudflare One 控制台
  2. 在 Access -> Access Groups 中,创建一个新的 Group

填写 Group 名称,将其设置为默认 Group,并添加用于登录验证的邮箱,如需要配置 Gituhb 登录,此处需要添加 Github 账户绑定的邮箱地址(Primary email address)

也可添加整个域名邮箱


注意不要将公开邮箱的域名添加到此处(如 @gmail.com,@163.com,@qq.com 等),否则所有使用此邮箱的用户都将可以访问你的面板

  1. (可选)增加新的登录方式,此处演示 Github

Cloudflare 默认使用 OTP 验证码来认证身份,需要到邮箱接收并填写验证码,添加 Github 等认证方式可以更加便捷地登录

回到 Cloudflare One 控制台,点击 Settings -> Authentication,点击 Login methods 中的 Add new,选择 Github

参照页面右侧的教程在 Github 中注册 OAuth App,填写获取到的 Client ID 和 Client secret,点击保存

  1. 在 Access -> Applications 中,创建一个新的 Application,类型选择 Self-hosted

填写应用名称和面板访问域名,点击下一步

填写 Policy name 并选择之前创建的 Access Group,点击下一步,完成应用创建

  1. 所有步骤已经完成,访问绑定的域名,可以看到现在必须通过 Cloudflare Access 的验证才能访问面板

验证后可以看到面板的登录页面

后续处理

  1. 确认面板可通过新域名访问后,在防火墙中删除原有面板端口的放行规则
  2. (可选)关闭面板的安全入口功能,现在面板已经被 Cloudflare 保护,安全入口已经没有使用的必要