面板安全
已经做了哪些
| 机制 | 详情 |
|---|---|
| 登录防爆破 | 每对「用户名 + IP」5 次尝试,单个 IP 20 次,单个用户名 50 次,并逐步升级封禁 |
| 密码 | 经过哈希处理;密码绝不会出现在登录失败通知中 |
| 管理员操作日志 | 表 admin_audit_log:谁、做了什么、何时、IP、结果 |
| 静态密钥 | TOTP 密钥加密存储(AES-256-GCM) |
| 无外部请求 | 打包后的 bundle 中不访问第三方服务:图标、版本检查和遥测都已移除 |
| 不记录请求体 | 否则日志中会出现密码、令牌和 OAuth2 密钥 —— 只记录方法、路径、结果、IP 和时间 |
| 数据保留 | 按期限自动清理个人数据(参见环境变量) |
记录了什么,以及这些数据会怎样
| 内容 | 位置 | 默认期限 | 包含 |
|---|---|---|---|
| 管理员操作日志 | admin_audit_log | 30 天 | 谁、做了什么、何时、IP |
| 用户设备 | hwid_user_devices | 90 天 | HWID、操作系统、user-agent、IP |
| 订阅请求 | user_subscription_request_history | 30 天 | IP、user-agent |
| 流量历史 | nodes_user_usage_history | 14 天 | 不含 IP |
| 节点统计 | nodes_usage_history | 90 天 | 不含 IP |
自动清理默认关闭:如果希望自动遵守这些期限,请启用
SERVICE_CLEAN_USAGE_HISTORY 和 SERVICE_CLEAN_OLD_LOGS。
手动清理
在 Logs 页面选择数据源并点击「Delete selected」。服务器还会额外要求显式
确认(confirm: true),因此无法绕过界面直接触发清理。
管理员操作日志位于 Audit Log 页面:可按管理员和结果筛选,支持分页。
管理员检查清单
-
APP_SECRET保存在可靠的位置(密码管理器,而不是聊天记录里)。 -
.env文件权限为600,且不会进入第三方可访问的备份。 - 面板只能通过 HTTPS 访问,HTTP 会重定向。
-
METRICS_PORT未对外暴露:指标只在127.0.0.1上提供。 - 节点端口
2222只能从面板 IP 访问。 - 为管理员启用 2FA(TOTP)。
- 用户可访问源代码链接(AGPL 第 13 条)。
- 管理员密码保存在密码管理器中:要求很严格, 但正是这些要求保护着唯一的入口。
到节点的 SSH 终端
该功能(Settings → Experimental)提供节点服务器上的命令行。 私钥加密保存在浏览器中,不会传到服务器,但该访问权限非常宽泛。 只有在理解后果时才启用,并且只授予最少的管理员。
报告漏洞
请不要提交公开 issue。请通过仓库中的 Security Advisories 以私密方式描述问题。