Skip to content

安全设置

YunyiRADIUS 内置了多层安全防护机制。

系统安全配置

进入「系统管理 → 安全设置」:

配置项说明默认值
密码最小长度用户密码最小字符数6
密码复杂度是否要求大小写+数字
登录失败锁定连续失败后锁定次数5
锁定时间 (分钟)自动解锁时间15
Token 有效期JWT Token 过期时间120 分钟
验证码重发间隔短信验证码重发间隔60 秒

数据加密

字段级加密

以下敏感字段使用 AES-256-GCM 加密存储:

字段加密位置说明
用户密码radius_user.password认证时透明解密
NAS 共享密钥net_nas.secretRADIUS 认证时解密
SMS AccessKey Secretsms_config.ali_access_secret发送短信时解密
SMS SecretKeysms_config.tc_secret_key发送短信时解密

加密密钥从 Web.Secret 派生,每个部署实例使用唯一的加密密钥。

密码哈希

管理员密码使用 bcrypt 哈希存储,不可逆。

访问控制

RBAC 权限模型

系统内置角色:

角色权限
super (超级管理员)全部权限
admin (管理员)除系统设置外的大部分权限
read (只读)仅查看权限

可以创建自定义角色,精确控制每个 API 端点的读/写权限。

JWT 认证

  • Cookie 存储(HttpOnly + SameSite=Lax,生产 HTTPS 环境下自动标记为 Secure)
  • 自动刷新机制
  • 登出即失效
  • 令牌上下文隔离:管理后台令牌与用户门户令牌分别携带 aud=admin / aud=portal 声明,且管理 API 强制校验 aud。门户(用户)令牌无法调用管理接口,管理令牌也不能用于门户上下文,从机制上杜绝跨上下文越权访问。

IP 速率限制

端点类型限制
登录接口5 次/3 分钟
公开短信验证码接口5 次/3 分钟(按客户端 IP 限流,防短信轰炸)
敏感操作 (充值/退款)5 次/秒/秒 bursts
备份/恢复5 次/秒
短信测试5 次/秒

安全响应头

系统对所有 HTTP 响应注入以下安全头部,防护点击劫持、MIME 嗅探与来源泄露:

响应头取值防护目标
X-Frame-OptionsDENY禁止被嵌套进 <iframe>,防点击劫持
X-Content-Type-Optionsnosniff禁止 MIME 类型嗅探
Referrer-Policyno-referrer不向第三方泄露来源 URL
Content-Security-Policydefault-src 'self'(脚本/样式/连接均限定同源)降低 XSS 与资源注入风险
Strict-Transport-Securitymax-age=31536000; includeSubDomains(仅 HTTPS 生效)强制 HTTPS,防降级攻击

PII 脱敏

  • 用户列表等批量视图中,手机号等敏感字段以掩码展示(如 138****8000)。
  • 仅在编辑详情页返回完整明文,便于运维操作,且不影响业务功能。

请求体限制

  • 服务端对请求体大小设上限(默认 8MB),超限返回 413,缓解大负载导致的资源耗尽风险。

系统备份

导出备份

在「系统管理 → 备份恢复」点击「导出备份」下载完整系统配置 JSON 文件。

⚠️ 备份文件中的用户密码和 NAS 密钥会被脱敏处理(替换为 ***REDACTED***),确保备份文件泄露不会暴露凭据。

恢复备份

上传之前导出的 JSON 备份文件恢复系统配置。恢复时:

  • 用户密码使用占位符(保留原值不受影响)
  • NAS 设备、节点、策略等配置会被还原
  • 不会覆盖管理员账号

安全最佳实践

  1. 生产环境更换默认密钥Web.Secret 与 License apiSecret 均须显式配置,切勿使用内置默认值(未配置 apiSecret 时系统会跳过对外部 License 服务的调用并告警,而非使用硬编码回退)
  2. 启用 HTTPS:配置 TLS 证书保护传输安全
  3. 管理端口隔离:管理端口 (1816) 仅内网访问
  4. 定期备份:定时导出系统配置
  5. 审计日志:关注操作日志中的异常行为
  6. RADIUS 端口防火墙:仅允许 NAS 设备 IP 访问 1812/1813
  7. 定期更新:及时升级到最新版本获取安全补丁

YunyiStudio 版权所有