Files
nexus/wiki/concepts/Immutable-Root-Filesystem.md

53 lines
2.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: "Immutable Root Filesystem"
type: concept
tags:
- Security
- Linux
- Container OS
sources:
- public-cloud-learning-sessions-eks-optimization-part-2-of-3-running-containers-w
last_updated: 2026-04-24
---
# Immutable Root Filesystem
只读根文件系统是一种操作系统安全加固技术,通过将根文件系统挂载为只读,确保操作系统核心文件在运行时无法被修改。任何运行时变更必须通过镜像更新机制完成,从而消除因意外或恶意修改导致的系统不可用风险。
## 核心原理
根文件系统在启动后被挂载为只读read-only即使拥有 root 权限也无法直接写入 `/` 目录下的文件。需要修改系统配置时,必须:
1. 重新构建包含更新内容的 OS 镜像
2. 通过安全的更新机制(如 A/B 分区切换)部署新镜像
3. 重启系统以激活变更
## 典型实现
| 技术 | 实现方式 |
|------|---------|
| dm-verity | 通过加密哈希树验证根文件系统块设备完整性,篡改被检测 |
| OverlayFS | 在只读底层之上叠加可写层,但底层不变 |
| OSTree | Git-like 分层镜像系统,支持原子升级和回滚 |
| A/B 分区 | 双分区设计,在线下载新镜像到非活动分区,重启切换 |
## 在 Bottlerocket 中的实现
Bottlerocket OS 默认启用只读根文件系统:
- 根分区通过 dm-verity 加密验证,任何篡改被检测
- `/etc` 目录作为 tmpfs临时文件系统运行时可写但重启清空
- 所有持久配置通过 API 或 userdata 注入,不直接修改根文件系统
## 安全价值
- **防篡改**:恶意软件无法修改系统关键文件
- **一致性保证**:每次启动系统状态可预测
- **最小化攻击面**:无需运行时包管理器,降低漏洞暴露
- **原子更新**:通过镜像级更新确保系统要么完全更新,要么保持原状
## 适用场景
- 容器宿主操作系统Bottlerocket、Flatcar Container Linux、CoreOS
- 嵌入式安全系统
- 无法物理访问的远程服务器
- 需要严格合规(如 PCI-DSS、FIPS的基础设施