安全设计与无人值守更新

本节聚焦于 NetAccel 的三大安全支柱:

  1. 全盘加密与唯一设备身份
  2. 两阶段配置与加密容器迁移
  3. 无人值守安全更新与审计

1. 全盘加密(LUKS)与唯一设备身份

NetAccel 的根分区使用 LUKS 全盘加密。解密密钥由多源信息派生,例如:

通过 netaccel-unique-id 服务,在早期启动阶段生成并固定设备身份, 用于:

1.1 启动与身份链(Mermaid)


flowchart TD
    A[上电 / 引导启动] --> B[U-Boot / Bootloader]
    B --> C[加载内核 + initramfs]
    C --> D[initramfs: 解锁 LUKS 根分区
使用 SID + 序列号 + Lab Key 派生密钥] D --> E[挂载加密根分区 /] E --> F[systemd: 启动 netaccel-unique-id] F --> G[生成 /etc/netaccel/unique-id
并供后续服务使用] G --> H[正常用户空间启动
network, dnsmasq, Clash, Beacon 等]

即使存储介质被物理窃取,没有 SID 和实验室密钥的组合,也无法解锁根分区。


2. 两阶段配置与加密容器迁移

为了支持“金种镜像 + 多台量产设备”的场景,NetAccel 采用两阶段配置:

  1. 第一阶段(first-boot-provision): 处理与通用镜像相关的初始化,例如重新生成机器 ID、初始唯一 ID 文件、 日志目录、首次 beacon 注册等。
  2. 第二阶段(lock-and-config): 在设备已确认获得稳定 IP / 子网之后,锁定网络配置、写入持久文件、 生成最终加密容器布局。

通过这种设计,同一张“金种镜像”可以在多台设备上复制,同时又能确保每台设备最后 拥有自己的身份和密钥材料。


3. 无人值守安全更新(Unattended Security Update)

NetAccel 需要在“无人看管”的环境中长时间运行,因此安全更新策略非常关键。

3.1 无人值守更新流水线(Mermaid)


flowchart LR
    subgraph SCHED["定时任务 / systemd timer"]
      A[每日 / 每周 定时触发]
    end

    A --> B[检查网络可用性
可选:仅在指定时段执行] B --> C[apt update / 获取安全更新列表] C --> D[apt upgrade --with-security
或 unattended-upgrades] D --> E[记录日志到 /var/log/netaccel
(加密分区)] E --> F[[是否需要重启?]] F -->|是| G[安排延迟重启
并写入标记文件] F -->|否| H[保持当前运行状态] G --> I[安全时段内自动重启] I --> J[系统启动完成后清理重启标记]

更新策略可以根据部署环境调整,例如:学生公寓、家庭、医院机房, 各自有不同的“允许重启窗口”。


4. 日志与审计

出于隐私与审计平衡考虑,NetAccel 的日志策略遵循:

对医生/学校/研究机构而言,这种设计确保了: