使用 CF access 为公网服务搭建 github 验证

使用 CF access 为公网服务搭建 github 验证

前言

通过自己的 vps 搭建完私有化服务后,服务会通过 vps 的公网 ip、端口暴露在互联网上,即便通过 ng、argo 进行反代,ip 还是会被扫描,有可能被他人以 ip: 端口的方式访问服务,并破解管理员账户、密码,尤其是默认账户和若密码。我们常用的 xui、3xui、1panel、wordpress 等面板就存在这种安全隐患

我们可以借用免费的 CF access,为我们的项目入口搭建 github 验证,外部访问必须先验证设定的 github 账户,才能进入到面板登录界面,这样即便将面板账户和密码设置为默认,也很难被攻破

现在假设你 vps 上已经搭建了一个 xui 面板,并通过 ng 或 argo 进行了反代,或者通过 CF 端口回源,得到了一个可访问的域名: xui.123123.xyz,让我们开始设置 (必须是托管在 CF 的域名才可以使用 CF access)

获取 CF zero trust 团队域名

注册地址: https://one.dash.cloudflare.com, 玩过 warp 或 argo 的人大家应该都会,需要绑定信用卡,使用免费计划即可。注册后会得到一个团队域,类似于这样: 团队用户名.cloudflareaccess.com,将这个域名保存下来备用

以下操作转到 github 上

设置 github auth apps

登录你的 github 账号,依次点击 settings(点击右上角头像可见)—— developer settings —— auth apps —— new auth app,创建一个验证程序

  • 名称:随意,比如 cf-access
  • 主页 URL :
1
https://<你的zerotrust团队用户名>.cloudflareaccess.com
  • 应用描述:随便填或留空
  • 认证回调 URL:
1
https://<你的zerotrust团队用户名>.cloudflareaccess.com/cdn-cgi/access/callback
  • 然后点击注册应用

玩过哪吒面板的应该都知道,设置方式是一样的,只是 URL 和回调 URL 不一样

获取 client ID 和密钥

进入你刚刚设置好的 auth app,会获得一个 client ID,保存下来。点击生成 client secret,会获得一个密钥,也保存下来

以下操作转到 CF zero trust

设置 access 组

在 zero trust 管理界面点击左侧 access —— access组,点击 添加组

  • 组名称:随意,比如 xui组,勾选 设置为默认组
  • 选择器:选择 emails 填写你的 github邮箱,点击保存

设置身份验证

在 zero trust 管理界面点击左侧 设置,找到 身份验证,进入后在 登录方式 处点击新增,选择 github,(这里也可以选择比较常见的谷歌验证,如果选谷歌,上一步的 emails 就要填写你的谷歌邮箱)

  • 名称:随意,比如 github-xui
  • 应用 ID:就是刚刚在 github 获取到的 client ID
  • 客户端密码:对应的是 client secret
  • 点击保存

设置 access 应用程序

在 zero trust 管理界面点击左侧 access —— 应用程序,点击 添加应用程序,点击 自托管

  • 应用程序名称:随意填,比如也填 xui
  • 应用程序域名:填写你 xui 的域名,比如,子域填写 xui,区域选择 123123.xyz,这里可以添加多个域名,比如你有多个 xui 面板,都可以添加在这里。

往下拉,找到 标识提供程序,将接受所有可用的标识提供程序关闭手动选择 你所建立的 github 身份验证,也就是 github-xui。其他均保持默认,点击下一步

  • 策略名称:可以随意,比如还是 xui
  • 操作:为 allow
  • 会话持续时间,建议选择 一周
  • 分配组:打 ,会默认选中你在 access 组中设定的组,也就是 xui组,并选择 include,其他保持默认,点击下一步

这里 勾选所有方式,其他默认,点击 保存应用程序 即可。任何访问包括 get、post 等都会被首先要求验证身份

测试设置是否正确

进入你刚刚添加的应用程序,点击 配置,再点击 测试策略,输入你 github 的邮箱,点击测试,弹出 访问被允许 即表示成功;如果失败,请按上述步骤重新检查一次

现在,访问你的 xui 面板域名,会首选弹出验证提示,点击验证,需要登录 github(和哪吒面板的 github 验证是一个道理),登录后才是 xui 面板的账号密码登录界面

#cloudflare #github #建站