/proc 攻防演义

从 Linux 进程真相到可观测性实战 — 开源电子书

MIT License llms.txt Linux 6.x

📖 在线阅读 📄 下载 PDF 📱 下载 ePub ⭐ GitHub

为什么需要这本书

/proc 是 Linux 主机上最大的信息泄露面——攻击者通过它摸清内核版本、读取进程内存、枚举网络端口、甚至逃逸容器。而大多数安全加固指南只告诉你"加 hidepid",却不解释为什么怎么验证怎么持续监控

本书给你一套完整的 /proc 安全工程方案——从攻击链分析到五层纵深防御,从 Prometheus 可观测性到 eBPF 实时监控,从 runc CVE 到 K8s PodSecurity。每一层都有可复制粘贴的配置、脚本和部署指南。

攻击者的六步攻击链

沿攻击者视角展开,每一步都对应具体的 /proc 接口和防御措施:

  1. 摸环境 — 内核版本、CPU、内存、网络路由(/proc/version, /proc/cpuinfo
  2. 找进程 — 枚举所有进程的命令行和环境变量(/proc/[pid]/cmdline, /proc/[pid]/environ
  3. 读内存 — 通过 maps + mem 读取任意进程内存(/proc/[pid]/maps, /proc/[pid]/mem
  4. 看网络 — 枚举所有 TCP/UDP/Unix socket(/proc/net/tcp, /proc/net/unix
  5. 隐身形 — LD_PRELOAD rootkit 劫持 readdir 隐藏进程
  6. 跨边界 — 通过 /proc/[pid]/ns/* 逃逸容器命名空间

五层纵深防御体系

第 1 层:减少暴露面
hidepid=2 · mount nosuid/nodev/noexec · 子集挂载 · pid namespace · maskedPaths
第 2 层:访问控制
procview 组 · ACL 精细控制 · fs.protected_symlinks · fs.protected_hardlinks
第 3 层:行为约束
kernel.yama.ptrace_scope=2 · kernel.dmesg_restrict · kernel.kptr_restrict · seccomp
第 4 层:完整性校验
auditd 规则监控 /proc/sys 写入 · AIDE/OSSEC 基线 · 文件完整性告警
第 5 层:可观测性
Prometheus node_exporter · 自定义 /proc/[pid]/io 采集 · eBPF 实时监控 · Loki 日志

30 秒快速加固:生产环境基线

可直接粘贴到生产主机的加固命令(对齐 CIS Benchmark):

# ① hidepid:阻止跨用户进程枚举(CIS §3.2) sudo mount -o remount,hidepid=2,gid=procview /proc echo "proc /proc proc defaults,hidepid=2,gid=procview 0 0" | sudo tee -a /etc/fstab # ② 限制 ptrace(CIS §3.3 / NIST AC-3) echo "kernel.yama.ptrace_scope=2" | sudo tee /etc/sysctl.d/99-proc-hardening.conf # ③ 限制 dmesg 和内核指针泄露(NIST AU-2 / DISA STIG) echo "kernel.dmesg_restrict=1" | sudo tee -a /etc/sysctl.d/99-proc-hardening.conf echo "kernel.kptr_restrict=2" | sudo tee -a /etc/sysctl.d/99-proc-hardening.conf sudo sysctl --system # ④ 审计 /proc/sys 写操作(NIST AU-2 / SI-4) sudo auditctl -w /proc/sys/ -p wa -k proc_sys_write # ⑤ 验证 runc 版本(CVE-2025-52881 修复) runc --version # 必须 >= 1.2.8

合规框架映射

框架覆盖章节映射控制项
CIS Linux Benchmark v3.0第 3 章§3.1 procfs mount options, §3.2 hidepid, §3.3 ptrace_scope, §3.4-3.5 kernel parameters
NIST SP 800-53 Rev 5第 3-4 章AC-3 (Access Enforcement), AU-2 (Audit Events), CM-7 (Least Functionality), SI-4 (System Monitoring)
NIST SP 800-123第 3, 7 章§4.2 OS Hardening, §5.3 Filesystem Integrity
DISA STIG RHEL 8/9第 3 章V-230XXX proc mount options, kernel.dmesg_restrict, kernel.kptr_restrict

配套工具:/proc 安全审计脚本

一键检查当前系统 /proc 配置是否符合安全基线(15+ 检查项,带安全评分):

curl -fsSL https://raw.githubusercontent.com/LeisureLinux/ebook-procfs-hardening/main/proc-audit.sh | sudo bash

检查项包括:hidepid 状态、ptrace_scope、dmesg_restrict、auditd 规则、runc 版本(CVE-2025-52881)、node_exporter 就绪度、machine-id、时间同步等。

目录

第 1 章 — 为什么 /proc 是头号攻击面

/proc 暴露的攻击情报、procfs 在内核 VFS 中的位置、真实安全事故分析(runc CVE-2025-52881)

第 2 章 — 攻击者怎么用 /proc:六步攻击链

环境指纹 → 进程发现 → 内存读取 → 网络枚举 → 进程隐藏 → 跨命名空间逃逸,每步附完整命令和输出解读

第 3 章 — /proc 五层纵深防御体系

hidepid · mount 选项 · 子集挂载 · pid namespace · procview 组 · ptrace_scope · auditd 规则 · AIDE 基线

第 4 章 — 可观测性落地

Prometheus node_exporter 定制采集 · 自定义 /proc/[pid]/io 导出器 · auditd + Loki 日志 · 告警调优 · 90 天实战案例

第 5 章 — eBPF 与 /proc 的下一代

copy_to_user 的设计原罪 · bcc/bpftrace 监控脚本 · Tetragon TracingPolicy · BPF rootkit 检测

第 6 章 — 容器时代的 /proc 攻防

CVE-2025-52881 深度分析 · runc/containerd/CRI-O 处理 · K8s PodSecurity · 三个容器逃逸案例

第 7 章 — SRE / Sec 工具链整合

Prometheus → Grafana → SIEM → SOAR 全链路 · IR Playbook · GitOps 加固(Ansible)

附录 A — Linux 6.x /proc 接口速查表

系统级 / 进程级 / 网络级 / 容器级 / sysctl 完整参考,打印即可贴工位

附录 B — 12 个可复现实验脚本

复制即跑的 bash 实验,Ubuntu 24.04 + Linux 6.6 环境

附录 C — 参考资源 / CVE 索引

内核文档、CIS Benchmarks、NIST SP 800-53、工具下载链接