1. 课程导入与安全基线认知
在开始动手加固任何一台 RHEL 服务器之前,先要回答一个更基础的问题:我们凭什么判断一台服务器"安全"?如果只凭个人经验逐条检查,不同管理员对同一台机器可能给出完全相反的结论。安全基线(Security Baseline)正是为了解决这个问题而存在的——它把"一台服务器应该处于什么状态"从主观判断变成可度量、可复核、可审计的客观标准。
什么是 RHEL 安全基线
安全基线是一组针对特定操作系统版本、特定业务角色预先定义好的安全配置要求集合。对 RHEL 而言,它通常覆盖账户与口令策略、文件系统权限、服务与端口暴露面、内核参数、日志与审计、软件包完整性、SSH 与 PAM 配置等维度。每一条要求都应当具备三个要素:可检查(有明确的判定命令或文件路径)、可判定(有明确的通过/不通过阈值)、可修复(有对应的配置动作)。缺少任何一项,这条要求就只是"建议",无法进入基线。
以口令策略为例,一条合格的基线项应当写成类似"/etc/security/pwquality.conf 中 minlen 不小于 14、dcredit 不大于 -1、ucredit 不大于 -1"这样的形式,而不是笼统的"口令要足够复杂"。前者可以用 grep 直接验证,后者只能靠人争论。
三类主流合规标准及其差异
实际工作中最常被引用的三套标准是 CIS、STIG 和等保。它们并非互相替代,而是面向不同场景的互补关系。
| 标准 | 来源与定位 | 典型特点 | 适用场景 |
|---|---|---|---|
| CIS Benchmark | Center for Internet Security 社区共识 | 分 Level 1 / Level 2,条目清晰,附审计与修复脚本 | 通用加固、互联网业务服务器 |
| DISA STIG | 美国国防信息系统局 | 要求最严,条目粒度细,常含强制审计项 | 高安全等级、涉密或强合规环境 |
| 等保 2.0 | 我国网络安全等级保护制度 | 按级别(二级/三级/四级)提出控制项,强调测评与整改闭环 | 国内政企、金融、医疗等受监管行业 |
三者的关系可以这样理解:CIS 提供了一套"业界公认的良好实践",STIG 是"最严格的军事级要求",等保则是"我国法规层面的合规底线"。同一台服务器可能同时需要满足等保三级和 CIS Level 1,此时应取两者的并集,冲突处以更严格者为准。例如等保三级要求"应启用登录失败处理功能",CIS 对应条目要求 pam_faillock 连续失败 5 次锁定,STIG 可能要求 3 次——若同时适用,就按 3 次执行。
基线、合规与权限治理的关系
很多初学者会把"打基线"等同于"改配置文件",这是最大的误区。安全基线真正约束的是权限:谁能登录、能登录到哪些账户、能读写哪些文件、能执行哪些命令、能提权到什么程度。因此基线加固与权限治理是同一件事的两个视角——基线是"目标状态",权限治理是"达成并维持该状态的手段"。
下图展示了从合规标准到实际权限收敛的完整链路,以及各环节的输入输出关系:
图中最值得注意的是最下方的"持续验证"环节。基线不是一次性任务,服务器在运行过程中会因安装软件、添加用户、调整服务而偏离基线,这种偏离称为"基线漂移"。RHEL 自带的 OpenSCAP 配合 SCAP Security Guide(scap-security-guide 包)可以按 CIS 或 STIG 的 profile 自动扫描并生成 HTML 报告,这是后续章节反复使用的核心工具。
课程整体框架
本课程按"认知—加固—治理—验证"的主线展开,共 30 章,大致分为四个阶段:
- 基础认知阶段(第 1~4 章):安全基线定义、合规标准、权限模型(DAC/MAC)、实验环境搭建。
- 账户与权限加固阶段(第 5~12 章):用户与组治理、口令策略、PAM 栈、sudo 最小权限、SUID/SGID 收敛、文件权限与 ACL。
- 服务与系统加固阶段(第 13~22 章):SSH 加固、防火墙与 SELinux、服务最小化、内核参数、日志与审计、软件包完整性。
- 验证与运营阶段(第 23~30 章):OpenSCAP 扫描、基线漂移检测、自动化加固脚本、审计复盘与持续改进。
实验环境准备
为了让后续所有操作可复现,建议准备如下环境。以下参数为教学示例配置,可根据实际硬件调整:
| 项目 | 建议配置 | 说明 |
|---|---|---|
| 操作系统 | RHEL 9.x(或 Rocky/Alma 9.x 兼容替代) | 需启用订阅或配置本地仓库 |
| 虚拟机规格 | 2 vCPU / 4 GB 内存 / 40 GB 磁盘 | 可创建快照便于回滚 |
| 网络 | NAT + 仅主机双网卡 | 仅主机网段用于隔离实验 |
| 关键软件包 | scap-security-guide、openscap-scanner、audit、policycoreutils | 后续章节依赖 |
| 快照策略 | 安装完成后打"clean"快照 | 每次加固前可回滚 |
环境就绪后,先执行一次基线扫描,得到加固前的"初始状态",作为后续对比的基准:
# 确认 SCAP 内容已安装
rpm -q scap-security-guide openscap-scanner
# 查看可用的 CIS profile
oscap info /usr/share/xml/scap/ssg/content/ssg-rhel9-ds.xml | grep -A2 "cis"
# 执行一次基线扫描(示例:CIS Level 1 Server)
oscap xccdf eval \
--profile xccdf_org.ssgproject.content_profile_cis_server_l1 \
--results /root/baseline-before.xml \
--report /root/baseline-before.html \
/usr/share/xml/scap/ssg/content/ssg-rhel9-ds.xml
扫描结束后打开 baseline-before.html,重点关注 fail 与 notapplicable 两类结果:前者是需要修复的项,后者说明该规则不适用于当前系统(例如未安装某服务时对应的配置项)。把 fail 数量记录下来,这就是本课程的"起点分数"。后续每完成一章加固,重新扫描一次,观察 fail 数量的下降趋势——这比任何文字描述都更能说明基线治理的实际效果。
baseline-before.html 与 baseline-after.html。对比两者的差异,是理解"基线加固到底改变了什么"最直观的方式。