主机加固实战指南:从 CIS Benchmarks 到 Immutable OS

81 阅读5分钟

主机加固(Host Hardening)是运维安全(DevSecOps)中的基石。它的核心逻辑是最小权限原则(Least Privilege)和减少攻击面(Attack Surface Reduction)。简单来说,就是把操作系统默认"宽容"的设置,变成"严苛"的堡垒。

以下针对四个关键领域进行深入讲解。

主机加固四层防御体系


1. CIS Benchmarks (安全基准)

CIS (Center for Internet Security) 发布了一系列针对各种操作系统(Linux, Windows)、中间件(Docker, K8s)和云厂商的最佳实践检查清单。它是目前全球公认的行业加固标准。

它的作用

提供了一份详细的"体检表"。不仅告诉你"要关闭不必要的端口",还会具体告诉你"关哪个、怎么关、如果不关会有什么风险"。

分级策略

  • Level 1 (Workstation/Server): 基本的安全措施。对业务影响小,不易导致系统不可用。建议所有生产环境必须满足。
  • Level 2 (High Security): 高级安全措施。非常严格,可能会限制某些功能(例如禁止挂载USB存储)。适用于处理敏感数据(支付、医疗)的环境。

如何落地

不要手动一条条改,通常使用自动化工具(如 Ansible Galaxy 中的 CIS roles,或者 OpenSCAP)来扫描和修复。


2. Disable Root Login (禁止 Root 直接登录)

这是主机加固最基础也最重要的一步。

为什么要禁止?

  1. 审计追踪 (Accountability): 如果每个人都用 root 登录,日志里全是 root did this,根本不知道具体是张三还是李四干的。使用普通用户登录后再 sudo,日志会记录 User A executed command X as root

  2. 防爆破 (Anti-Brute Force): 攻击者都知道超级管理员叫 root,如果开启 Root 登录,他们只需要猜密码。如果禁止了,他们还得先猜中你的普通用户名,难度指数级上升。

实施方法

修改 /etc/ssh/sshd_config 文件:

PermitRootLogin no

通常配合 PasswordAuthentication no(禁止密码登录,只允许 SSH Key)一起使用,效果更佳。


3. AppArmor / SELinux (强制访问控制 - MAC)

Linux 默认的权限管理是 DAC (自主访问控制),即"我是文件的拥有者,我想让谁读谁就能读"。而 AppArmor 和 SELinux 属于 MAC (强制访问控制),即"系统规定了这个程序只能读这几个文件,你是 Root 也不能乱动"。

它们的作用是沙盒化(Sandboxing),防止程序被黑客攻陷后,黑客利用该程序对系统造成更大破坏。

SELinux (Security Enhanced Linux)

  • 阵营: RedHat, CentOS, Fedora 系默认标配
  • 机制: 基于标签 (Labels)。系统给每个文件、进程都打上标签(如 httpd_t),然后制定策略规定哪些标签可以互动
  • 特点: 极其强大,但配置复杂。运维界有个梗:"装完系统的第一件事就是关掉 SELinux",这是一个坏习惯
  • 命令: setenforce 1 (开启), ls -Z (查看标签)

AppArmor (Application Armor)

  • 阵营: Ubuntu, Debian, SUSE 系默认标配
  • 机制: 基于路径 (Path)。配置文件直接写明:/usr/sbin/nginx 这个程序只能读取 /var/www/html/etc/nginx 下的文件
  • 特点: 学习曲线平缓,配置可读性高,适合快速上手

总结: 它们是最后一道防线。假设你的 Nginx 有漏洞被黑客拿下了,如果有 MAC 保护,黑客依然无法通过 Nginx 进程去读取 /etc/shadow(密码文件),因为策略里没允许。


4. Immutable OS (不可变操作系统)

这是云原生时代(Cloud Native)主机加固的终极形态。

核心概念

操作系统在运行时,其核心文件系统是**只读(Read-Only)**的。

传统运维 vs. 不可变运维

  • 传统: SSH 连上去 -> apt-get update -> 改配置文件 -> 重启服务。(容易产生配置漂移,且如果不小心被黑客修改了系统文件,很难发现)

  • 不可变: 禁止 SSH 修改系统。如果需要升级或修改配置,直接构建一个新的系统镜像,销毁旧机器,启动新机器(类似于 Docker 容器的逻辑,但应用在 OS 层面)

安全优势

  • 持久化攻击失效: 黑客即使利用漏洞写入了恶意软件到 /usr/bin,重启后或者系统刷新后,一切重置,恶意软件无法驻留
  • 配置一致性: 杜绝了"雪花服务器"(Snowflake Servers,即每台服务器配置都不太一样,难以维护)

代表系统

  • Flatcar Container Linux
  • Talos Linux (完全用于 K8s,甚至没有 SSH 接口,全靠 API 管理)
  • AWS Bottlerocket

总结对比

加固层级技术点核心价值适用场景
基础规范CIS Benchmarks标准化检查清单所有生产环境
访问控制Disable Root Login审计与防爆破所有 Linux 服务器
进程隔离AppArmor/SELinux限制进程权限,防止漏洞扩散对外服务的应用 (Web, DB)
架构变革Immutable OS系统只读,彻底消除配置漂移与篡改容器集群 (K8s Nodes), 高安全环境

下一步建议

如果您正在着手对现有环境进行加固,建议从CIS 扫描开始。使用 OpenSCAP 可以快速评估当前系统的安全合规状态,生成详细的修复建议报告。

主机加固不是一次性工作,而是持续的安全实践。建议将加固检查纳入 CI/CD 流程,确保每次部署都符合安全标准。