主机加固(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 直接登录)
这是主机加固最基础也最重要的一步。
为什么要禁止?
-
审计追踪 (Accountability): 如果每个人都用
root登录,日志里全是root did this,根本不知道具体是张三还是李四干的。使用普通用户登录后再sudo,日志会记录User A executed command X as root。 -
防爆破 (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 流程,确保每次部署都符合安全标准。