1Panel 当前版本自带的安全入口功能并不能有效隐藏面板特征,使用 Censys 等工具可以轻易将大量安装了 1Panel 面板的服务器扫描出来,当出现漏洞时存在被攻击的风险
本文将介绍通过配置 Cloudflare Tunnel 与 Cloudflare Access 来保护 1Panel 面板,隐藏面板特征,增加外部验证,提高面板的安全性,本教程也适用于保护其他不便直接暴露在公网上的服务
前置条件
- 一个域名,并将其添加至 Cloudflare
- 一台服务器,安装有 1Panel 或其他你需要保护的服务
- Cloudflare 账户绑定有效的支付方式,如 Paypal
配置 Cloudflare Tunnel
- 登录 Cloudflare 控制台,点击 Zero Trust 选项卡
- 填写信息开通免费计划(免费计划限制50用户,个人使用几乎不可能超过这个限制)
- 在 Networks -> Tunnels 中,创建一个新的 Tunnel
Tunnel Type 选择 Cloudflared,填写 Tunnel 名称并点击右下角保存
选择服务器对应的系统与架构,将生成的命令复制到服务器终端中执行
命令执行完毕后,页面下方 Connectors 中出现 Connector 信息即表示 cloudflared 已成功安装并与 Cloudflare 的服务器建立连接,点击下一步
- 填写面板端口并绑定域名
Subdomain.Domain 表示之后面板访问的域名,Path 无特殊需求留空即可
Type 选择 HTTP,URL 填写 localhost:面板端口,点击保存
现在你应该可以通过绑定的域名访问你的面板了
配置 Cloudflare Access
- 回到 Cloudflare One 控制台
- 在 Access -> Access Groups 中,创建一个新的 Group
填写 Group 名称,将其设置为默认 Group,并添加用于登录验证的邮箱,如需要配置 Gituhb 登录,此处需要添加 Github 账户绑定的邮箱地址(Primary email address)
也可添加整个域名邮箱
注意不要将公开邮箱的域名添加到此处(如 @gmail.com,@163.com,@qq.com 等),否则所有使用此邮箱的用户都将可以访问你的面板
- (可选)增加新的登录方式,此处演示 Github
Cloudflare 默认使用 OTP 验证码来认证身份,需要到邮箱接收并填写验证码,添加 Github 等认证方式可以更加便捷地登录
回到 Cloudflare One 控制台,点击 Settings -> Authentication,点击 Login methods 中的 Add new,选择 Github
参照页面右侧的教程在 Github 中注册 OAuth App,填写获取到的 Client ID 和 Client secret,点击保存
- 在 Access -> Applications 中,创建一个新的 Application,类型选择 Self-hosted
填写应用名称和面板访问域名,点击下一步
填写 Policy name 并选择之前创建的 Access Group,点击下一步,完成应用创建
- 所有步骤已经完成,访问绑定的域名,可以看到现在必须通过 Cloudflare Access 的验证才能访问面板
验证后可以看到面板的登录页面
后续处理
- 确认面板可通过新域名访问后,在防火墙中删除原有面板端口的放行规则
- (可选)关闭面板的安全入口功能,现在面板已经被 Cloudflare 保护,安全入口已经没有使用的必要