审计、合规与备份:检测、响应、恢复
0. 元信息
- 主题路径:
docs/topics/linux-hardening/subtopics/audit-compliance-and-backup/ - 父主题:
linux-hardening - 主分类:安全与可靠性
- 辅助分类:工程技术
- 适合对象:完成前三张子主题的运维 / 后端 / 安全工程师;目标是把前 8 阶段的加固”变成可证明、可扫描、可恢复”的状态
- 建议周期:1.5~2 周(每周 8~10 小时,含 OpenSCAP 跑全 profile + 备份恢复演练)
- 前置知识:
identity-and-sshpermissions-and-macnetwork-and-kernel - 最终目标:能配置 auditd 规则覆盖 CIS 推荐项并验证事件、能配置 journald 持久化 + 集中日志、能跑 OpenSCAP SCAP 1.3 与 Lynis 双扫描并解读报告、能用 restic 或 borgbackup 设计异地多活备份并完成一次恢复演练、能按 PICERL 写 IR 流程
1. 学习路线
auditd 框架(auditctl / audit.rules / ausearch / aureport)
→ 关键规则(账号 / 提权 / 配置 / 内核模块加载)
→ journald 持久化与转发(Storage / ForwardToSyslog)
→ rsyslog / syslog-ng 与 syslog 协议
→ 集中日志(rsyslog → graylog / loki / ELK / splunk)
→ HIDS(AIDE / Tripwire / OSSEC-Wazuh / Samhain)
→ 漏洞与合规:CIS Benchmark / DISA STIG / NIST SP 800-53
→ 扫描器:OpenSCAP(XCCDF / OVAL / SCAP 1.3)+ Lynis + Vuls
→ 报告解读(HTML / ARF / lynis.log)
→ 备份原则(3-2-1 / 异地 / 加密 / 演练)
→ restic / borgbackup / 备份到 S3 / 演练恢复
→ IR 流程:NIST SP 800-61 / SANS PICERL
按”先检测,再合规,最后兜底”的顺序:先把事件留痕(auditd / journald / 集中);再用扫描器对照基线;最后用备份守住底线。
2. 阶段周数分配(1.5~2 周,建议 2 周)
| 阶段 | 1.5 周速通 | 2 周稳推 | 备注 |
|---|---|---|---|
| 1. auditd 框架启动 | 0.5 天 | 0.5 天 | auditctl -l 起步 |
| 2. auditd 规则语法(30+ 条) | 1 天 | 1 天 | CIS 4.x 推荐项 |
| 3. journald 持久化与转发 | 0.5 天 | 1 天 | Storage=persistent + 转发 syslog |
| 4. rsyslog 集中日志 | 0.5 天 | 1 天 | *.* @loghost:514 或 TLS |
| 5. HIDS(AIDE / Wazuh) | 0.5 天 | 0.5 天 | 初始化数据库;aide —check |
| 6. CIS / DISA 基线对照 | 0.5 天 | 0.5 天 | gap matrix |
| 7. OpenSCAP(SCAP 1.3 + SSG) | 1 天 | 1 天 | 跑 cis_level1_server |
| 8. Lynis + Vuls | 0.5 天 | 0.5 天 | hardening_index + 漏洞库 |
| 9. 备份与恢复(restic / borg) | 1 天 | 1.5 天 | 3-2-1;演练一次 |
| 10. IR 流程(PICERL) | 0.5 天 | 0.5 天 | incident-response.md 模板 |
每天 1.5 小时;1.5 周速通每天 2 小时能跑完,但 oscap 跑全 profile + 演练备份恢复需时。建议 2 周:给备份恢复演练(30 分钟)和 IR 模板打磨留时间。
3. 十阶段表
| 阶段 | 核心知识 | 实践产出 | 可观察学会标准 |
|---|---|---|---|
| 1. auditd 框架 | auditctl audit.rules ausearch aureport | 启动 auditd;写规则覆盖 /etc/passwd /etc/shadow /etc/sudoers /usr/sbin/usermod | ausearch -k passwd_changes 看到 usermod 事件 |
| 2. auditd 规则语法 | -w <path> -p <rwx> -k <key>、-S <syscall>、-F key=、权限字段 | 写 30+ 条规则覆盖 CIS 4.x 推荐项 | auditctl -l 与 /etc/audit/rules.d/audit.rules 一致;augenrules --load 持久 |
| 3. journald | Storage=persistent / SystemMaxUse / ForwardToSyslog / RateLimitIntervalSec | /var/log/journal 持久化;journalctl -u sshd --since today | 重启后日志还在;journalctl -b -p err 看 err |
| 4. 集中日志 | rsyslog imuxsock imjournal *.* @loghost:514 / TLS 转发 | 配 rsyslog 把所有日志发到远端 loghost | 远端 loghost 收到 auth.* 与 authpriv.* |
| 5. HIDS | AIDE / Tripwire / Wazuh agent | 装 AIDE;初始化数据库;aide --check | 改 /etc/passwd 后 aide --check 报警 |
| 6. CIS / DISA 基线 | CIS Benchmark v2.0 Ubuntu / RHEL、DISA STIG 类别 | 对照表给当前 OS 标 gap | gap 矩阵写进 notes/gap.md |
| 7. OpenSCAP | SCAP 1.3、XCCDF、OVAL、SSG、DataStream、ARF | 装 openscap-scanner scap-security-guide;跑 oscap xccdf eval --profile cis_level1_server | 报告 HTML/ARF 出来;critical 数有基线 |
| 8. Lynis + Vuls | Lynis hardening_index、Vuls(NVD/OVAL 漏洞库) | lynis audit system;vuls scan | hardening_index ≥ 80;Vuls 报告高危已标记 |
| 9. 备份与恢复 | restic / borgbackup、S3 / SFTP 后端、密钥保管、prune 策略、季度演练 | 备份 /etc /var/log /home /srv;删一个文件从备份恢复 | RPO ≤ 24h / RTO ≤ 4h;演练报告 notes/dr-drill.md |
| 10. IR 流程 | NIST SP 800-61 / SANS PICERL:准备 / 识别 / 遏制 / 根除 / 恢复 / 复盘 | 一份 incident-response.md 模板 | 知道每阶段动作、IOC 取证保留、合规通报 |
关键陷阱:auditd 规则写在命令行重启后清空;journald 默认 volatile 重启丢;rsyslog 集中但磁盘满;AIDE 数据库与备份同盘 = 一起丢;oscap profile 选错;restic repo 没加密 = 备份即泄露;备份密钥随备份走 = 一起丢;IR 取证覆盖生产数据。
4. 第一周任务(每天 1.5~2 小时)
Day 1 约定:用一台 Ubuntu 22.04 或 RHEL 9.x 虚机/容器,先建快照;统一记录
auditctl -V、auditctl -l、journalctl --verify、rsyslogd -v、oscap --version、lynis --version、restic version、borg --version。
| 日 | 任务 | 当天交付 | 自检命令 |
|---|---|---|---|
| Day 1 | auditd 启动:apt install auditd audispd-plugins 或 dnf install audit;systemctl enable --now auditd;写最小规则:-w /etc/passwd -p wa -k passwd_changes;故意 usermod testuser;ausearch -k passwd_changes 看到事件 | audit.rules 起步 | auditctl -l、ausearch -k passwd_changes、aureport --summary |
| Day 2 | 完善 auditd 规则:写 /etc/audit/rules.d/audit.rules 30+ 条,覆盖 /etc/passwd /etc/shadow /etc/sudoers /etc/sudoers.d /usr/sbin/usermod /usr/sbin/groupmod /usr/sbin/usermod /usr/sbin/usermod、/var/log/faillock、adjtimex settimeofday stime(time-change)、/sbin/insmod /sbin/rmmod /sbin/modprobe(modules)、mount umount umount2;augenrules --load;auditctl -l 持久 | audit.rules 30+ 条 | auditctl -l | wc -l、augenrules --load、ausearch -k shadow_changes --start today |
| Day 3 | journald 持久化:/etc/systemd/journald.conf 改 Storage=persistent、SystemMaxUse=200M、MaxRetentionSec=2week、ForwardToSyslog=yes;systemctl restart systemd-journald;重启后 journalctl -b -p err 仍看到上次启动记录;journalctl -u sshd --since today | journald 持久化 | cat /var/log/journal/*/.*.journal /dev/null | head -2(应成功)、journalctl --verify、journalctl -b -p err | wc -l |
| Day 4 | rsyslog 集中:/etc/rsyslog.d/10-forward.conf 写 *.* @loghost:514(UDP)或 *.* @@loghost:514(TCP);备机起一个 nc -ul 514 监听;本机 logger "test" 应在远端看到;如支持 TLS:*.* @(transport-tls)loghost:6514 | rsyslog 转发 + 接收证据 | logger -t test "hello"、tcpdump -i any -nn -s0 udp port 514 看本机发出、nc -ul -p 514 在远端收到 |
| Day 5 | HIDS(AIDE):装 aide;aideinit 生成 /var/lib/aide/aide.db.new;改名为 aide.db;故意改 /etc/hosts 一行;aide --check 报警;移到 baseline | AIDE 数据库 + 检查输出 | aide --check、aide --update、ls -l /var/lib/aide/aide.db、aide.wrapper --check(如有) |
| Day 6 | OpenSCAP:装 openscap-scanner + scap-security-guide;oscap info /usr/share/xml/scap/ssg/content/ssg-ubuntu2204-ds.xml 看 profile;oscap xccdf eval --profile cis_level1_server --results scan.xml --report scan.html /usr/share/xml/scap/ssg/content/ssg-ubuntu2204-ds.xml;scan.html 看 critical 数 | scan.html + critical 数 | oscap --version、oscap info、oscap xccdf generate guide 看可定制 profile、firefox scan.html | grep -i critical |
| Day 7 | 项目(备份 + IR 演练):装 restic;restic init --repo /var/backup/restic-repo;写 /etc/restic/backup.env 含 RESTIC_PASSWORD + RESTIC_REPOSITORY;restic backup /etc /var/log /srv;restic snapshots;故意 rm /etc/resolv.conf;restic restore latest --target / --include /etc/resolv.conf 恢复;restic check 校验;写 notes/dr-drill.md 含 RPO / RTO 计算 | restic 备份 + 演练报告 | restic snapshots、restic check、restic restore latest --target /tmp/test-restore --include /etc/resolv.conf |
Day 7 拆解
步骤 A —— 最小可用(90 分钟)
- 装
restic:Ubuntuapt install restic/ RHELdnf install epel-release && dnf install restic; echo "RESTIC_PASSWORD=$(head -c 32 /dev/urandom | base64)" | sudo tee /etc/restic/backup.env;chmod 600 /etc/restic/backup.env;sudo mkdir -p /var/backup/restic-repo && sudo restic -c /etc/restic/backup.env init;sudo restic -c /etc/restic/backup.env backup /etc /var/log /srv --exclude /srv/cache;sudo restic -c /etc/restic/backup.env snapshots;- 故意
sudo rm /etc/resolv.conf; sudo restic -c /etc/restic/backup.env restore latest --target / --include /etc/resolv.conf;- 验证:
cat /etc/resolv.conf恢复; sudo restic -c /etc/restic/backup.env check看数据完整性。
步骤 B —— 加 IR 模板(30~45 分钟)
- 写
notes/incident-response.md模板,包含 6 段(PICERL):- 准备:联系清单 + 备机列表 + 取证工具;
- 识别:
ausearch -m AVC+journalctl -p err --since+ss -lnt+find / -mtime -3; - 遏制:隔离网卡 / 禁用账号 / 关闭 service;
- 根除:杀进程 / 删恶意文件 / 改密码 / 轮换密钥;
- 恢复:从 restic 恢复配置 + 验证 + 监控;
- 复盘:时间线 + IOC + 缺失的加固;
- 计算 RPO(备份间隔 ≤ 24h)与 RTO(恢复时间):
start=$(date +%s); restic restore latest --target /tmp/r; echo "RTO: $(($(date +%s) - start)) seconds"; restic forget --keep-hourly 24 --keep-daily 7 --keep-weekly 4 --keep-monthly 12 --prune设 retention policy;- 把
backup.env的口令摘出来单独保管(KMS / 纸质); - 计划一次”断电演练”:在另一台机器跑
restic restore,验证异地恢复路径。
5. 阶段通用验收(每一阶段都通过)
- 能用 1 张表说出 auditd 关键规则 key(
passwd_changes/shadow_changes/sudoers_changes/time-change/modules/mounts); - 改完配置用
auditctl -l、ausearch -k <key>、aureport --summary、oscap xccdf eval --results scan.xml、lynis audit system、restic snapshots看证据,存进notes/; - 制造 1 个对照实验:留 auditd 关 →
usermod后ausearch看不到事件;开 auditd + 规则 → 看到事件; - 至少 3 组自定义数据:故意改
/etc/passwd看 ausearch;故意rm文件后restic restore;故意改配置后oscap跑出 critical; - 记录变更:每加一条 auditd 规则 / HIDS 规则 / 备份策略 写 1 条(who/when/what/why);
- 能修改已有 audit 规则(删/加一条审计 key)、修改 oscap profile 选择、修改备份 retention,而不是只照搬。
6. 最终验收(学完 10 阶段后)
- 独立完成:auditd 30+ 条规则覆盖 CIS 4.x 推荐;journald 持久化;rsyslog 集中;AIDE 数据库 + check;oscap 跑全 profile 0 critical;lynis hardening_index ≥ 80;restic repo 加密 + 演练恢复;IR 6 段模板;
- 完成至少 30 条 CIS 4.x 审计控制项:用
auditctl -l对照;至少 20 条 OpenSCAPcis_level1_server控制项 pass;至少 1 次 restic 恢复演练(RTO ≤ 30 分钟); - 完成 1 个综合项目:在一台预加固机器上做”全链路审计 + 一次入侵复盘 + 一次数据恢复”:用 auditd 取证、oscap 找 critical、restic 恢复被误删文件;输出
incident-response.md与dr-drill.md; - 用 15 分钟讲清”检测(auditd / HIDS)→ 集中(journald + rsyslog)→ 评估(oscap / lynis)→ 备份(restic)→ IR(PICERL)“五层各堵哪类风险,auditd
-w与-S的取舍。
7. 综合项目
首选:写一份 harden-audit-backup.md —— 准备一台已加固的 Ubuntu 22.04 虚机(前三张子主题的成果),按 10 阶段顺序跑:auditd → 规则 → journald → 集中 → HIDS → CIS gap → oscap → lynis → 备份 → IR。
要求:
- 准备
notes/baseline-before.md:auditctl -l | wc -l、oscap xccdf evalcritical 数、lynis hardening_index、无 backup 演练; - 逐项改:auditd 规则 → journald 持久化 → rsyslog 集中 → AIDE 初始化 → oscap 跑全 profile → lynis 跑分 → restic init + 备份 → 演练恢复;
- 持久化:
/etc/audit/rules.d/audit.rules、/etc/systemd/journald.conf.d/99-persist.conf、/etc/rsyslog.d/10-forward.conf、/var/lib/aide/aide.db、/etc/restic/backup.env; - 验证:
auditctl -l | wc -l ≥ 30;ausearch -k passwd_changes --start today命中;oscap xccdf evalcritical 降到 0;lynis show hardening_index≥ 80;restic check通过;restic restore latest --target /tmp/r成功恢复; - 输出
notes/retrospective.md:哪些被坑过(auditd 规则不持久、AIDE 数据库与备份同盘、oscap profile 选错、restic repo 没加密);写notes/incident-response.md。
备选:在一台故意”裸奔”机器上做 IR 演练:人为注入”入侵痕迹”(陌生公钥、SUID shell wrapper、被改的 cron),按 IR 模板做识别 / 遏制 / 根除 / 恢复 / 复盘。
任何综合项目都必须包含:
- 需求与成功标准(含 auditd 规则数、scan critical、hardening_index、RPO/RTO);
- 基线 vs 目标差距表;
- 配置按层(auditd / journald / rsyslog / HIDS / oscap / lynis / restic / IR);
- 脚本化(
scripts/harden-audit-backup.sh+scripts/verify-audit-backup.sh),幂等可重跑; - 正常 + 异常验证(关 auditd → 事件丢失;跑 oscap → critical 数;删文件 → restic 恢复);
- 报告:基线、目标、结果、剩余项、复盘;
- README;
- 复盘记录。
本主题贡献(Loop 6-D · linux-hardening / audit-compliance-and-backup)
本主题把”基线扫描、运行时审计、备份恢复、合规对账”四条独立工程线拧成一条验收闭环,输出可被其它子主题复用的加固包与 IR 模板。
3 项核心职责
- 基线 + 合规扫描:用 OpenSCAP + SCAP Security Guide 跑 CIS Benchmark(含 RHEL 8 / Ubuntu 22.04 profile),记录 critical 数与 hardening_index;用 lynis 做二次体检,输出”基线 vs 目标”差距表。
- 运行时审计 + 日志:用 auditd 写规则集(文件 / 系统调用 / 登录 / 提权)并
/etc/audit/rules.d/持久化,配 journald + rsyslog 把事件送到远端;故意关 auditd 验证事件丢失,确认规则不持久就会失效。 - 备份 + 恢复:用 restic 写加密增量备份(含 offsite),配 cron + systemd timer 触发;故意删文件做 restore 演练,验证 RPO / RTO 达标。
4 项交付物
- 基线 vs 目标差距表:OpenSCAP + lynis 报告原文(HTML / JSON),逐条对照 CIS Benchmark 控制项号与期望证据命令。
- auditd 规则集 + 持久化:
/etc/audit/rules.d/hardening.rules+augenrules --load,配 auditd + journald + rsyslog 配置三层按层落档,故意关 auditd 验证事件丢失。 - restic 加密备份 + 恢复脚本:
scripts/harden-audit-backup.sh+scripts/verify-audit-backup.sh(幂等可重跑),含restic init/restic backup/restic forget/restic restore,故意删文件做 restore 演练。 - IR 演练记录:在一台”裸奔”机器上人为注入入侵痕迹(陌生公钥、SUID shell wrapper、被改的 cron),按识别 / 遏制 / 根除 / 恢复 / 复盘 5 步走,配
notes/incident-response.md。
3 个验收指标
- OpenSCAP scan:critical = 0、hardening_index ≥ 80%(与目标 profile 对齐)。
- auditd:规则集 ≥ 30 条,
auditctl -l可查,关 auditd 后事件立即丢失(验证规则持久化生效)。 - restic:备份恢复 RTO ≤ 30 分钟、RPO ≤ 24 小时,repo 必须加密(
restic snapshots --json可查)。
8. 推荐开源资料(按角色分工,避免堆链接)
| 阶段 | 角色 | 资料 | 链接 | 用法 |
|---|---|---|---|---|
| 1~2 | auditd 权威 | man auditd(8)、man audit.rules(5)、man auditctl(8)、man ausearch(8) | https://man7.org/linux/man-pages/ | 规则语法与 key 第一站 |
| 1~2 | auditd 实战 | Red Hat Security Guide: Audit | https://docs.redhat.com/en/documentation/ | 30 条 CIS 推荐规则 |
| 3 | journald | man journald.conf(5)、man journalctl(1) | https://www.freedesktop.org/software/systemd/man/ | 字段解释;RateLimitIntervalSec 配 |
| 4 | rsyslog | man rsyslogd(8)、man rsyslog.conf(5) | https://www.rsyslog.com/doc/ | TLS 转发;RELP |
| 5 | HIDS | man aide(1)、AIDE README | https://github.com/aide/aide | 初始化与 check 流程 |
| 5 | HIDS(替代) | Wazuh Docs | https://wazuh.com/ | agent + manager;OSSEC 后继 |
| 6 | CIS / DISA / NIST | CIS Benchmarks v2.0、DISA STIG、NIST SP 800-53/123 | https://www.cisecurity.org/ · https://public.cyber.mil/stigs/ · https://csrc.nist.gov/publications/ | 注册 CIS;DISA / NIST 公开 |
| 7 | OpenSCAP | OpenSCAP User Guide、ComplianceAsCode SSG | https://www.open-scap.org/ · https://github.com/ComplianceAsCode/content | profile 选择;ARF 解读 |
| 8 | Lynis | Lynis Docs | https://cisofy.com/lynis/ | hardening_index 解读;warning 必查 |
| 8 | Vuls | Vuls Docs | https://vuls.io/ | NVD / OVAL 接入;高危标记 |
| 9 | 备份 | restic docs | https://restic.readthedocs.io/ | init / backup / restore / check / forget / prune |
| 9 | 备份(替代) | borgbackup docs | https://borgbackup.readthedocs.io/ | init / create / list / extract / check / prune |
| 10 | IR 流程 | NIST SP 800-61r3 Computer Security Incident Handling | https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-61r3.pdf | PICERL 6 段流程参考 |
| 10 | IR 详细 | SANS PICERL 白皮书 / SANS Reading Room | https://www.sans.org/reading-room/ | 取证 + 通信计划 ICP |
| 全部 | 攻击者视角 | Hanno Böck《Linux Hardening in Hostile Networks》 | https://michael-wolf.de/ | 解释 CIS 为什么这么定 |
| 全部 | 命令速查 | Daniel J. Barrett《Linux Pocket Guide》(O’Reilly) | O’Reilly 出版 | audit / log / 备份速查 |
许可证提示:CIS Benchmarks 注册免费账号下载;NIST SP 800-61r2 公开;OpenSCAP 是 LGPL-2.1;ComplianceAsCode SSG GPL-3.0+ / BSD;Lynis GPL-3.0;Vuls AGPL-3.0(注意 AGPL 在网络服务场景的开源传染要求);restic BSD-2-Clause;borgbackup BSD-3-Clause;Wazuh GPL-2.0。复制 CIS 控制点脚本到生产前先在 staging 验证 —— 默认读思路后自己写。
默认使用顺序:
manpage → Red Hat Security Guide → CIS / DISA / NIST 基线 → OpenSCAP / Lynis 工具 → restic 演练 → 复盘到notes/retrospective.md与notes/incident-response.md。
9. 学习资料汇聚(v0.3 自包含)
本节由本计划生成。
9.1 背景与动机
前 8 阶段把”门”加固了。但安全不是 0/1:攻击者可能已从某个 CVE 进来;合规审计要求每年 / 每季度扫描;硬件故障、误删、勒索软件可能让你”即使没被攻破,也得恢复”。
审计给你”发生了什么”的答案:谁在什么时候改了 /etc/passwd、谁跑过 usermod、谁 mount 过 USB。合规扫描给你”和基线差距”的答案:哪些 CIS / DISA 控制项没满足。备份给你”被破坏后能恢复”的答案:文件、配置、密钥、日志的副本在另一处。
这三层组成了**检测(audit + HIDS)→ 评估(OpenSCAP / Lynis)→ 恢复(restic / IR)**的纵深。
9.2 概念地图
flowchart TB
Audit[auditd]
Journal[journald]
Syslog[rsyslog / syslog-ng]
HIDS[AIDE / Tripwire / Wazuh]
Center[SIEM / loghost]
CIS[CIS Benchmark]
STIG[DISA STIG]
NIST[NIST SP 800-53 / 800-123]
OSCAP[OpenSCAP / SCAP 1.3]
Lynis[Lynis]
Vuls[Vuls]
Backup[Backup]
Restic[restic]
Borg[borgbackup]
IR[Incident Response]
PICERL[PICERL]
80061[NIST SP 800-61]
Audit --> Center
Journal --> Center
HIDS --> Center
Syslog --> Center
CIS --> OSCAP
STIG --> OSCAP
NIST --> OSCAP
OSCAP --> Report[Reports / ARF]
Lynis --> Report
Vuls --> Report
Backup --> Restic
Backup --> Borg
Restic --> IR
Borg --> IR
IR --> 80061
IR --> PICERL
9.3 基础知识讲解
9.3.1 主推
| 资料 | 角色 | 评分 |
|---|---|---|
man auditd(8) audit.rules(5) ausearch(8) aureport(8) | auditd 权威 | 5 |
man journald(5) journald.conf(5) journalctl(1) | journald | 5 |
man rsyslogd(8) rsyslog.conf(5) | rsyslog | 4 |
| Red Hat Security Guide: Audit | auditd + rules 实战 | 5 |
| OpenSCAP User Guide | 扫描器主线 | 5 |
| Lynis Docs | hardening_index 解读 | 4 |
| ComplianceAsCode/content (SSG) | OpenSCAP 数据流仓库 | 5 |
| restic docs | 备份工具 | 4 |
| borgbackup docs | 备份工具 | 4 |
| NIST SP 800-61r3 Computer Security Incident Handling | IR 流程 | 5 |
| SANS PICERL 白皮书 | IR 详细动作 | 4 |
| Hanno Böck, Linux Hardening in Hostile Networks | 检测/响应视角 | 4 |
9.3.2 备查
| 资料 | 链接 |
|---|---|
| Arch Wiki: Security / Audit | https://wiki.archlinux.org/ |
| OpenSCAP 项目 | https://www.open-scap.org/ |
| ComplianceAsCode | https://github.com/ComplianceAsCode/content |
| Lynis | https://cisofy.com/lynis/ |
| Vuls | https://vuls.io/ |
| Wazuh | https://wazuh.com/ |
| SANS Reading Room | https://www.sans.org/reading-room/ |
9.3.3 必查 man pages
auditd(8)auditctl(8)audit.rules(5)ausearch(8)aureport(8)augenrules(8)systemd-journald(8)journald.conf(5)journalctl(1)rsyslogd(8)rsyslog.conf(5)logger(1)aide(1)aide.conf(5)oscap(8)oscap-info(8)scap-security-guiderestic(1)borg(1)
9.4 经典问题与经典案例
| # | 问题 | 为什么会重要 | 最简答案 / 证据 |
|---|---|---|---|
| 1 | auditd 规则命令行写 | 重启失效 | 写进 /etc/audit/rules.d/audit.rules + augenrules --load |
| 2 | journald 默认 volatile | 重启日志丢 | Storage=persistent |
| 3 | rsyslog 集中但 loghost 没限流 | 雪崩 | loghost 端 RateLimit |
| 4 | AIDE 数据库与备份同盘 | 一损俱损 | AIDE 数据库在只读介质或独立盘 |
| 5 | oscap 选错 profile | 报告通过但漏关键 | 用 oscap info 看 profile 名 |
| 6 | Lynis 跑 root vs sudo | 报告项不一致 | 统一用 sudo |
| 7 | restic 没加密 | 备份即泄露 | repo 必带 --repo sftp:user@host:/path + RESTIC_PASSWORD 或 key file |
| 8 | 备份密钥在仓库 | 一起丢 | 单独保管(age / KMS / 纸质) |
| 9 | 备份只本地一份 | 磁盘坏即丢 | 3-2-1 原则 |
| 10 | 没演练恢复 | 备份损坏不知 | 季度演练;提前 1 个月预告 |
| 11 | IR 时直接在生产取证 | 污染证据 | 先镜像磁盘 / 内存 dump |
| 12 | IR 复盘无记录 | 同类事件再发 | 写 incident-response.md |
| 13 | AIDE 跑得不对文件 | 误报 | aide --check vs aide --update |
| 14 | 集中日志用 UDP 514 | 丢包 / 注入 | TLS 转发;或用 RELP |
| 15 | 日志时间不同步 | 事件难对齐 | NTP / chrony;UTC |
| 16 | MaxRetention 没设 | journald 占满 /var | SystemMaxUse= MaxRetentionSec= |
| 17 | auditd 规则 -w 与 -S 重复 | 日志爆炸 | 二选一 |
| 18 | oscap 报 critical 没追到具体命令 | 不知怎么改 | 看 ARF rule;用 --rule 单独跑 |
| 19 | Lynis warning 当 info | 真问题漏掉 | warning 必查 |
| 20 | 备份时业务高峰 | IO 抖动 | 低峰跑;nice ionice |
| 21 | 备份完没校验 | 文件损坏不知 | restic check / borg check |
| 22 | 备份策略 RPO 24h 太长 | 数据丢 | 提频;或增量 |
| 23 | IR 通报合规 / 法务缺 | 罚款 | 提前定 ICP(内部通信计划) |
| 24 | 审计日志没保护 | 攻击者清 | audit log 单独分区 / 远端 |
| 25 | 没设 disk_full_action | 写满停 | disk_full_action = syslog 或 halt |
| 26 | space_left_action 没设 | 早期不告警 | email / syslog / exec |
| 27 | 日志含密码 / 私钥 | 泄露 | 写日志前脱敏 |
| 28 | restic 备份 /proc /sys | 无意义占空间 | --exclude |
9.5 学习难点
概念难点
| 难点 | 为什么会卡 | 突破路径 |
|---|---|---|
auditd -w vs -S | 文件路径 vs 系统调用 | 二选一;CIS 文档指明 |
| SCAP / XCCDF / OVAL | 标准名易混 | 看 ComplianceAsCode README |
| Lynis 报告字段 | 几十个项 | 按 PASS/WARNING 分组 |
| restic snapshot / pack / blob | 内部数据模型 | 看 restic 设计文档 |
| 3-2-1 备份 | 数量 / 类型 / 异地 | 画一张图:3 份 / 2 介质 / 1 异地 |
| IR 阶段 6 步 | 流程多 | 画流程图;用模板 |
思维难点
| 难点 | 为什么会卡 | 突破路径 |
|---|---|---|
| 告警太多 / 太少 | 规则粗 | 按”高价值事件”过滤;分阶段铺 |
| IR 时急着恢复 | 破坏证据 | 先镜像再恢复;保留 IOC |
| 备份频率 vs 业务影响 | 频 = 性能 | 分层:每天全量 / 每小时增量 |
工程难点
| 难点 | 为什么会卡 | 突破路径 |
|---|---|---|
| 集中日志磁盘爆 | loghost 容量 | 限流 / 轮转 / cold storage |
| auditd 规则写得过多 | 性能 / 日志雪崩 | 选关键;不重复 -w 与 -S |
| 备份到 S3 慢 | 网络 / 限速 | 增量 + 压缩 + 限速 |
| 跨地区合规 | GDPR / DPA | 选区域;加密 key 自管 |
9.6 技术标准与接口
9.6.1 Entity
| 名称 | 版本 | 组织 | 状态 | 许可证 |
|---|---|---|---|---|
| Linux Audit | 3.x | linux-audit | 活跃 | GPL-2.0 |
| auditd rules format | 当前 | Red Hat / Linux Audit | 主流 | GPL-2.0 |
| systemd-journald | 255+ | systemd | 活跃 | LGPL-2.1 |
| rsyslog | 8.x | rsyslog 项目 | 活跃 | GPL-3.0 |
| syslog-protocol | RFC 5424 | IETF | Standard | 公开 |
| AIDE | 0.18+ | rhatto | 活跃 | GPL-2.0 |
| Wazuh | 4.x | Wazuh | 活跃 | GPL-2.0 |
| OpenSCAP | 1.3+ | OpenSCAP | 活跃 | LGPL-2.1 |
| SCAP / XCCDF / OVAL | 1.3 | NIST | 现行 | 公开 |
| ComplianceAsCode SSG | 持续 | ComplianceAsCode | 活跃 | GPL-3.0+ / BSD |
| Lynis | 3.x | CISOfy | 活跃 | GPL-3.0 |
| Vuls | 0.30+ | Future Corp | 活跃 | AGPL-3.0 |
| restic | 0.16+ | restic | 活跃 | BSD-2-Clause |
| borgbackup | 1.2+ | borgbackup | 活跃 | BSD-3-Clause |
| NIST SP 800-61 | r2 | NIST | 现行(r3 草案) | 公开 |
| SANS PICERL | n/a | SANS | 事实 | 公开 |
| CIS Benchmarks v2.0 | 持续 | CIS | 现行 | 注册免费 |
| DISA STIG | 持续 | DISA | 现行 | 公开 |
| NIST SP 800-53 | Rev. 5 | NIST | 现行 | 公开 |
| NIST SP 800-123 | Rev. 1 | NIST | 现行 | 公开 |
9.6.2 Scope
- auditd:内核审计;可监控文件 / syscall。
- journald:systemd 自带日志;可转发 syslog。
- rsyslog / syslog-ng:传统 syslog 实现。
- AIDE / Tripwire / Wazuh:HIDS 文件完整性。
- OpenSCAP:合规扫描;支持 XCCDF / OVAL。
- Lynis:单主机 hardening 检查。
- Vuls:基于 NVD/OVAL 的漏洞扫描。
- restic / borgbackup:去重 + 加密 + 版本化备份。
- NIST SP 800-61 / SANS PICERL:IR 流程参考。
- CIS / DISA / NIST 800-53 / 800-123:合规基线。
- 这些层不替代应急响应 SOP 和法务通报。
9.6.3 Structure
- auditd 关键:
- 文件路径监控:
auditctl -w /etc/passwd -p wa -k passwd_changes - 系统调用:
auditctl -a always,exit -F arch=b64 -S adjtimex -S settimeofday -k time-change - 排除:
auditctl -a never,exit -F exe=/usr/bin/grep - 关键 key:
passwd_changesshadow_changessudoers_changestime-changesystem-localemodulesmounts
- 文件路径监控:
- journald 关键:
Storage=persistentSystemMaxUse=200MMaxRetentionSec=2weekForwardToSyslog=yesRateLimitIntervalSec=30sRateLimitBurst=1000。 - rsyslog 关键:
module(load="imuxsock")module(load="imjournal")*.* @loghost:514(UDP)/*.* @@loghost:514(TCP)/*.* @(transport-tls)loghost:6514(TLS)。 - OpenSCAP 关键命令:
oscap info /usr/share/xml/scap/ssg/content/ssg-ubuntu2204-ds.xmloscap xccdf generate guide /usr/share/xml/scap/ssg/content/ssg-ubuntu2204-ds.xmloscap xccdf eval --profile cis_level1_server --results scan-results.xml --report scan-report.html /usr/share/xml/scap/ssg/content/ssg-ubuntu2204-ds.xml
- Lynis:
lynis audit systemlynis show detailslynis show warnings。 - restic 关键:
initbackupsnapshotsrestorecheckpruneforget。
9.6.4 Ecosystem
- 集中日志:Graylog、ELK、loki、splunk、qradar。
- HIDS:AIDE、Tripwire、OSSEC / Wazuh、Samhain、afick。
- 扫描器:OpenSCAP、Lynis、Vuls、kube-bench(K8s)、anchore(容器)。
- 漏洞库:NVD、GHSA、Ubuntu USN、Debian DSA、Red Hat RHSA、Oracle ELSA。
- 备份后端:S3、SFTP、Backblaze B2、Azure Blob、本地磁盘。
- IR 工具:Velociraptor、MISP、GRR、TheHive / Cortex。
- 事实标准:CIS 是事实基线,SP 800-53 是国家控制项,OpenSCAP 是事实扫描器。
9.6.5 Depth Tiers
| 层级 | 能力 |
|---|---|
| L0 | 知道有日志、合规、备份 |
| L1 | 看得懂 journalctl / aureport / oscap HTML |
| L2 | 能写 auditd 规则、跑 oscap 跑全 profile、配 restic 备份 |
| L3 | 能解读 Lynis 报告、oscap ARF、备份损坏情况;写 IR 流程 |
| L4 | 能为多机集群统一审计 + 合规流水线;把 IR 流程跑通;季度演练 |
本计划目标:L3。
9.6.6 Source
- Linux Audit:https://github.com/linux-audit
- ComplianceAsCode/content:https://github.com/ComplianceAsCode/content
- OpenSCAP:https://www.open-scap.org/
- Lynis:https://cisofy.com/lynis/
- Vuls:https://vuls.io/
- restic:https://restic.readthedocs.io/
- borgbackup:https://borgbackup.readthedocs.io/
- NIST SP 800-61r2:https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-61r3.pdf
- CIS Benchmarks:https://www.cisecurity.org/
- DISA STIG:https://public.cyber.mil/stigs/
- 引用版本快照日期:2026-07-30。
10. 常见误区
- auditd 规则写在命令行,重启清空;
- journald 默认 volatile,重启日志丢;
- rsyslog 集中但 loghost 无限流,本地雪崩;
- AIDE 数据库与备份同盘,一损俱损;
- oscap profile 选错,报告过但漏关键;
- Lynis warning 当 info,真问题漏;
- restic repo 没加密,备份即泄露;
- 备份密钥随备份走,一起丢;
- 备份只本地一份,磁盘坏即丢;
- 没演练恢复,备份损坏不知;
- IR 时直接在生产取证,污染证据;
- 复盘记录无文档化,同类事件再发;
- 集中日志用 UDP 514,丢包 / 注入;
- 多主机时间不同步,事件难对齐;
- 备份时业务高峰,IO 抖动;
- 备份完不校验,文件损坏不知;
- 审计日志被攻击者清;应远端 / 单独分区;
- 备份里含敏感明文,备份即泄露。
11. 所有知识点分类(统一规则)
- 编程语言
- 数据结构与算法
- 计算机基础
- 工程技术
- Web 与后端
- 前端与客户端
- 数据与人工智能
- 项目与职业能力
- 安全与可靠性
本计划归属:安全与可靠性 主 + 工程技术 辅。