> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ipmideck.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 安全

> 这里的每一项安全声明都基于 ipmideck 自己的后端代码，而非营销宣传。

ipmideck 是为那些阅读源代码而不是信任厂商的人构建的。下面的
声明基于产品的后端代码。

## 数据与账户安全

凭据在静态时加密，登录被哈希，会话被签名，仅凭
数据库本身永远不足以进入。

### AES-256-CBC 凭据加密

BMC 凭据在静态时用 AES-256-CBC 和每个机密一个随机 IV 加密。
加密密钥位于一个单独的密钥文件中（`data/encryption.key`，32 个随机字节，
仅所有者权限），绝不在数据库中，因此仅凭被盗的数据库无法
解密任何内容。

### bcrypt 登录 + HMAC-SHA256 签名会话

登录密码用 bcrypt 哈希（每个密码加盐，恒定时间校验）。会话
令牌用 HMAC-SHA256 签名，在每次请求时重新校验，并在用户名更改时
失效。Cookie 为 HttpOnly 且 SameSite=Lax。

### 暴力破解锁定

按用户名锁定，在五次失败尝试后采用指数退避（最长一小时），
外加防时序泄露的通用错误，因此攻击者从登录失败的方式中什么也学不到。

### 无 shell 的 ipmitool，完全离线

ipmitool 通过参数列表（`create_subprocess_exec`）调用，绝不通过 shell，
因此不存在命令注入面。整个系统完全离线运行：没有
遥测、没有云、没有外部调用。

## 硬件保护

FanPilot 为故障安全而构建：热限值胜过任何曲线，控制回路
即使在你不看着时也持续运行。

### 临界温度下的安全覆盖

在达到或超过临界温度时，风扇被强制设为 100%（默认 85°C，可配置）。
没有任何风扇曲线能覆盖该覆盖，热限值始终胜出。

### 用迟滞停止振荡

可配置的迟滞裕度（默认 3°C）防止风扇在温度限值附近快速上下
振荡，使速度变化保持平滑且可预测。

### 自主后台回路

风扇控制运行在一个后台任务中（约 30 秒轮询），即使仪表板
关闭也持续工作，保护并不依赖于浏览器标签页处于打开状态。

### 非干净关闭恢复 + 优雅关闭

在非干净停止（断电或 `kill -9`）后，ipmideck 会恢复 BMC 自己的自动模式，
并在检测到服务器离线和传感器陈旧时自动恢复。一次干净关闭会将
风扇交还给 BMC 的热管理。
