- 首页
- 深入了解
- 安全设计
安全设计
mTLS 双向认证与证书体系
首次启动自动生成的证书
| 文件(<数据目录>/certs/) | 用途 | 有效期 |
|---|---|---|
ca.crt / ca.key | 自签根 CA(CN=Qidun Root CA,EC P-256);ca.key 绝不外发 | 10 年 |
server.crt / server.key | 服务端证书,SAN 覆盖 localhost + 127.0.0.1 + ::1 + 全部网卡 IP | 365 天 |
client-local.crt / client-local.key | 本机 CLI 调用 API 用的客户端证书(零配置) | 365 天 |
自动续签
- 服务端证书距到期不足 30 天或网卡 IP 变化导致 SAN 不覆盖时,自动用 CA 重签。
- CA 缺失 / 过期时整套证书体系自动重建。
- 给浏览器 / 其他机器签发客户端证书:
qidun cert client -o client.p12,流程见 证书与首次登录。
双进程互保与守卫蜜罐
双进程互保
- 同一二进制以
--role main与--role guard运行两个进程,每 2 秒互相心跳探测(main 探 530,guard 探 529)。 - 连续 3 次失联即判定对方死亡并自动拉起:优先走服务管理器(Windows
sc start/ Linuxsystemctl start),失败则直接派生分离进程。 - 防重启风暴:重启互斥 + 距上次重启不足 30 秒不再触发;重启动作写审计日志。
- 叠加服务层保活(Windows SCM 故障恢复 5s/10s/30s 三连重启;systemd
Restart=always),形成三层保活。
守卫蜜罐(530 端口)
任何非本机来源连接 530 端口,无需完成 TLS 握手即被无条件有限期封禁(默认 3 天,写入封禁台账 + 系统防火墙规则,到期自动解封,可配 0=永久)并触发 critical 告警。白名单 IP 豁免;误触后可在面板或用
qidun ip unblock 手动解封。自身防篡改(系统自检)
- 首次运行对自身可执行文件 + 管理员附加路径建立 SHA-256 基线(文件被占用时降级为大小 + 修改时间)。
- 基线整体再做一层 HMAC 签名(随机机器密钥
<数据目录>/secret.key,0600):签名不符意味着基线数据库本身被篡改——防止攻击者改文件后同步改基线。v1.2.10 起由旧版主机名派生密钥自动迁移。 - 默认每 3600 秒复检;发现篡改立即 critical 告警,总览页顶部出现红色横幅;持续篡改每 6 小时心跳式重提醒。
- 软件升级后必须手动重置基线(面板一键操作),否则会持续误报。
面板登录防护
| 防线 | 机制 | 默认 |
|---|---|---|
| 第 0 道:mTLS | 无客户端证书连不上面板 | 强制 |
| 第 1 道:软锁 | 窗口内失败达阈值 → 来源 IP 一律返回 429,锁定期不再计数防刷 | 5 次 / 300 秒 → 锁 900 秒 |
| 第 2 道:有限期封禁 | 失败达封禁阈值 → 防火墙封禁 3 天(可配 0=永久,到期自动解封) | 20 次 |
| 白名单 | 内置 127.0.0.1 / ::1 恒不处置,可追加 IP/CIDR | 内置 |
| 口令存储 | bcrypt 哈希;初始密码为 16 位随机串 | — |
| 会话 | 会话以 HttpOnly + SameSite=Strict Cookie 承载(前端不再写入 localStorage),token 256bit 随机;12 小时有效(可配),改密即吊销全部会话 | 720 分钟 |
| 防枚举 / 会话细节 | 登录失败统一报错,无用户枚举;token 256bit 随机、内存态、每 10 分钟清理;Cookie HttpOnly + SameSite=Strict | — |
通信与数据安全
- 请求体限制 1MB,超大请求直接拒绝。
- MySQL 密码落库加密 — AES-256-GCM,密钥为随机机器密钥
<数据目录>/secret.key(0600,不再由主机名派生),不出现在任何明文配置里。 - mysqldump 密码走临时 defaults-extra-file,不进命令行,不进进程列表。
- 外部报警接收(
/api/push/events)双重鉴权:来源 IP 白名单(支持 CIDR)+ 恒定时间比较的共享 Token。 - 看门狗 Webhook 仅允许 http/https 协议(本机 / 回环 / 局域网 / 公网地址均可,便于同机多实例互报)。
- webshell 特征库编码存储(XOR + Base64 编译期编码),避免安全软件把 Qidun 误判为「webshell 投放器」。
- 全部敏感操作(封禁 / 解封 / 改配置 / 改密…)写审计日志,含操作者用户名。
- 同源部署 — API 与面板共用 529 端口,前端同源
fetch,不启用 CORS,杜绝跨源窃取。 - 安全响应头 — 全站
Content-Security-Policy(connect-src 'self')/Strict-Transport-Security/Referrer-Policy: no-referrer/Permissions-Policy/X-Content-Type-Options: nosniff/X-Frame-Options: DENY/frame-ancestors 'none',防 XSS 与点击劫持。 - 系统防火墙开关 — 面板可检测并一键开启/关闭系统防火墙(Windows 三配置档 / Linux ufw·firewalld);开启时默认放行常用端口 22/80/443/3389 与本面板 529/530(先放行再开启,防自锁);关闭系统防火墙会使封禁规则不再拦截流量,需二次确认并写审计 + 看门狗 critical 告警。
- 审计日志注入防护 — 写入审计日志的用户名 / 动作 / 详情中的换行自动替换为空格,防日志伪造。
端口与暴露面
| 端口 | 服务 | 对外要求 |
|---|---|---|
| 529 | 面板 + API(HTTPS + mTLS) | 仅向管理员网络开放;需要浏览器导入证书 |
| 530 | 守卫心跳 / 蜜罐(HTTPS + mTLS) | 故意对公网开放作蜜罐;仅本机连接合法 |
相关阅读:证书与首次登录(实操) · 技术架构 · 告警参考
Qidun 启盾 v1.2.17 · 离线静态文档 · 界面基于 KuoqiUI · 返回首页