Skip to content

用户管理(User Manager)

你来这里要完成什么

当你需要“让某个人能连上 VPN / 不能再连 VPN / 处理无法登录 / 被锁定”等问题时,就在这个页面做。

你在这里最常做的几件事:

  • 新增用户并分配分组
  • 用户离职/停用:禁用用户
  • 用户无法认证:检查用户状态(active/disabled/locked)并处理
  • 用户被防爆破锁定:解锁用户

常见场景与操作步骤

场景 A:我要给用户开通 VPN(新建用户)

  1. 先准备好分组(在「组管理」配置 IP 池/命名)
  2. (可选)在「邮件服务」配置 SMTP(用于通知/下发)
  3. 在本页创建用户并分配分组
  4. 到「证书管理」下载用户 .ovpn 并下发
  5. (可选)如需静态路由/推送配置,到「CCD 管理」补齐 CCD

场景 B:用户离职/停用,禁止继续连接

  1. 在本页找到该用户
  2. 将用户状态设置为 disabled
  3. (建议)保留审计与证书文件,按公司流程处理

场景 C:用户说“账号密码不对/一直连不上”

  1. 先看用户状态是否为 active
  2. 如果是 locked:按下文“解锁”处理
  3. 如果是 disabled:确认是否为管理员主动禁用
  4. (必要时)检查认证日志与连接日志

这个页面怎么看(快速认知)

  • 列表:显示用户名/分组/状态
  • 筛选:按分组、按状态筛选(遇到“看不到用户”先检查筛选条件)
  • 操作:创建、编辑、禁用/启用、解锁等

用户状态(你排障时最先看的)

系统目前有 3 种常见状态:

  • active(激活):允许 OpenVPN 认证。
  • disabled(禁用):会从 user_passwd.txt 移除该用户,并禁用 CCD 文件(重命名 .disabled)。
  • locked(锁定):防暴力破解机制触发的临时锁定。锁定期内认证会被拒绝;锁定到期后可再次尝试登录。

注意:

  • 列表默认常为“仅激活”,所以被锁定的用户通常不会默认出现在列表里,需要切换筛选:仅锁定全部状态
  • lockeddisabled 是两回事:
    • disabled 是管理员主动禁用(强制收敛权限)。
    • locked 是系统自动触发的临时锁定(防爆破)。

OpenVPN 账号防爆破(失败次数过多锁定)

机制概览

OpenVPN 的账号密码认证通过 auth-user-pass-verify ... via-env 触发校验脚本。在认证链路中,会对失败登录进行计数,并在达到阈值后将该用户临时锁定。

默认(当前代码)策略:

  • 仅按“用户名”维度锁定(不默认按 IP 锁定,避免误伤同出口用户)。
  • 时间窗口:10 分钟
  • 失败阈值:10 次
  • 锁定时长:30 分钟

锁定后的表现

  • 锁定期内:该用户认证直接失败。
  • 一旦认证成功:会清空失败计数,并把用户从 locked 自动恢复为 active(不会覆盖 disabled)。

管理员如何手动解锁

  1. 在用户管理页,把“状态筛选”切到 仅锁定全部状态
  2. 找到对应用户,点击“启用/解锁”(会把状态置回 active

配置说明(环境变量)

以下环境变量在 OpenVPN 容器启动时注入(例如 docker-compose.ymlenvironment:)。

  • VPN_LOCKOUT_WINDOW_SECONDS:统计窗口(秒),默认 600
  • VPN_USER_LOCKOUT_THRESHOLD:用户失败阈值,默认 10
  • VPN_USER_LOCKOUT_SECONDS:锁定时长(秒),默认 1800

可选(默认关闭)的 IP 维度锁定:

  • VPN_IP_LOCKOUT_THRESHOLD:IP 失败阈值(>0 才启用)
  • VPN_IP_LOCKOUT_SECONDS:IP 锁定时长(秒)

更完整的“会话安全/白名单/异常检测/备份与诊断”说明见:系统设置

页面流程图(创建用户)

mermaid
flowchart TD
  A[打开「用户管理」] --> B[页面加载:用户列表/分组/SMTP 状态]
  B --> C[页面可操作]
  C --> D[点击「创建用户」]
  D --> E[填写用户信息并选择分组]
  E --> F{提交结果}
  F -->|成功| G[提示成功并回到列表] --> B
  F -->|失败| H[提示原因并允许修改重试] --> E

页面流程图(解锁 locked 用户)

mermaid
flowchart TD
  A[打开「用户管理」] --> B[状态筛选切到「仅锁定」]
  B --> C[定位被锁定用户]
  C --> D[点击「启用/解锁」]
  D --> E{更新成功?}
  E -->|是| F[用户状态变为 active]
  E -->|否| G[提示失败原因并重试]

跨域通 — 企业级 OpenVPN 管控平台