深色模式
合规差距清单模板:自评与整改输出
摘要:合规工作的产出物不是"通过",而是一份可追溯的差距清单。本文给出通用自评模板、证据收集脚本、差距分级方法与整改跟踪表。具体合规要求请以你组织适用的制度与标准文本为准。
适用环境
bash
cat /etc/os-release
command -v jq && jq --version
command -v /usr/local/bin/sec-baseline.sh && echo "基线脚本可用"
mkdir -p /root/compliance && cd /root/compliance1
2
3
4
2
3
4
操作步骤
1. 先确定"依据",再谈差距
差距 = 现状 − 要求。没有明确的"要求"就无法谈差距。依据通常来自:
依据通常来自适用的法律法规与行业标准(以现行有效文本为准)、客户合同或上级单位要求、内部安全基线文档。自评表中必须写清每条要求的来源编号,避免事后扯皮。
2. 差距清单模板(CSV 结构)
bash
cat >/root/compliance/gap-template.csv <<'EOF'
编号,控制域,控制项,要求描述,依据来源,现状描述,证据文件,符合性,差距等级,整改措施,责任人,计划完成日,复测结果
ACC-01,身份鉴别,口令复杂度,口令长度不小于12位且含大小写数字与符号,内部基线v1.2,未配置minlen,pwquality.conf,不符合,高,配置pam_pwquality并下发,张三,2026-10-31,
ACC-02,身份鉴别,登录失败锁定,连续失败5次锁定账号,内部基线v1.2,未启用pam_faillock,faillock.conf,不符合,中,启用faillock并设置unlock_time,张三,2026-10-31,
ACC-03,访问控制,管理员权限最小化,禁止sudo通配ALL授权,内部基线v1.2,存在一条NOPASSWD ALL,sudoers.d调查输出,不符合,高,改为逐命令白名单,李四,2026-10-25,
EOF1
2
3
4
5
6
2
3
4
5
6
字段说明:
- 符合性:符合 / 部分符合 / 不符合 / 不适用(不适用必须写理由)。
- 差距等级:高(可被直接利用或属硬性要求)/ 中 / 低。
- 证据文件:命令输出、截图、配置文件路径,必须可复查。
- 复测结果:整改后重新取证的结论与日期。
3. 自动化收集证据
bash
cat >/root/compliance/collect.sh <<'EOF'
#!/bin/bash
set -uo pipefail
OUT=/root/compliance/evidence/$(date +%F)
mkdir -p "$OUT"
{
echo "=== 身份鉴别 ==="
grep -E 'minlen|dcredit|ucredit|ocredit' /etc/security/pwquality.conf* 2>/dev/null
grep -E '^PASS_MAX_DAYS|^PASS_WARN_AGE' /etc/login.defs
cat /etc/security/faillock.conf 2>/dev/null
echo "=== 访问控制 ==="
awk -F: '$3==0 {print $1}' /etc/passwd
grep -REn "NOPASSWD:[[:space:]]*ALL" /etc/sudoers /etc/sudoers.d/ 2>/dev/null
echo "=== 安全审计 ==="
systemctl is-active auditd rsyslog
auditctl -l | wc -l
echo "=== 入侵防范 ==="
ss -lntup | grep -E ':(21|23|445|3389)\s'
echo "=== 时间同步 ==="
chronyc sources 2>/dev/null | head -5
echo "=== 空口令 ==="
awk -F: '$2=="" {print $1}' /etc/shadow
} > "$OUT/summary.txt" 2>&1
/usr/local/bin/sec-baseline.sh --format=json > "$OUT/baseline.json" 2>/dev/null
echo "证据目录: $OUT"
EOF
chmod +x /root/compliance/collect.sh
/root/compliance/collect.sh1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
4. 从基线脚本结果自动生成差距条目
bash
jq -r '.items[] | select(.status=="FAIL") |
[.item, "不符合", "高", "见 baseline.json", "", "", ""] | @csv' \
/root/compliance/evidence/$(date +%F)/baseline.json \
> /root/compliance/gap-auto-$(date +%F).csv
wc -l /root/compliance/gap-auto-$(date +%F).csv1
2
3
4
5
2
3
4
5
5. 差距分级与整改排序
排序原则:高 为对外可达、可导致未授权访问或数据泄露、或属硬性要求;中 为需一定条件才能利用或已有补偿控制;低 为影响有限、可纳入计划。
无法立即整改的高危项走例外流程:风险接受审批(谁签字、有效期多长)+ 补偿控制(网络隔离、WAF 规则、加强监控)+ 明确的整改计划与期限。
bash
# 输出待整改清单按等级排序
sort -t, -k9 /root/compliance/gap-template.csv | column -s, -t | head -201
2
2
6. 整改跟踪:状态看板
| 状态 | 含义 |
|---|---|
| 待整改 | 已确认差距,未开始 |
| 整改中 | 有方案,实施中 |
| 待复测 | 已实施,未取证 |
| 已闭环 | 复测通过,证据归档 |
| 例外 | 有审批与补偿控制 |
每周更新一次,重点看"逾期未闭环"与"例外到期"。
bash
awk -F, '$10!="" && $11!="" {print $1, $10, $11}' /root/compliance/gap-template.csv \
| grep -v "已闭环" | head -201
2
2
7. 输出自评报告
报告结构建议:评估范围与时间 → 评估依据(标准/制度及版本)→ 总体结论(各符合性数量分布)→ 差距清单(按等级排序,附证据索引)→ 整改计划(责任人、期限)→ 遗留风险与例外说明。
bash
cat >/root/compliance/summary.sh <<'EOF'
#!/bin/bash
D=$(date +%F)
total=$(tail -n +2 /root/compliance/gap-template.csv | grep -c .)
ok=$(tail -n +2 /root/compliance/gap-template.csv | grep -c ",符合," || true)
ng=$(tail -n +2 /root/compliance/gap-template.csv | grep -c ",不符合," || true)
echo "评估日期: $D"
echo "总项: $total 符合: $ok 不符合: $ng"
EOF
chmod +x /root/compliance/summary.sh && /root/compliance/summary.sh1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
验证
bash
ls -R /root/compliance/evidence | head -20
tail -n +2 /root/compliance/gap-template.csv | awk -F, '{print $8}' | sort | uniq -c
# 每条"不符合"必须有责任人与期限
tail -n +2 /root/compliance/gap-template.csv | awk -F, '$8=="不符合" && ($10=="" || $11=="") {print $1}'
# 复测后可重新取证比对
/root/compliance/collect.sh
diff <(cat /root/compliance/evidence/*/summary.txt | sort -u) /dev/null | head -51
2
3
4
5
6
7
2
3
4
5
6
7
判定标准:所有控制项有现状与证据;不符合项 100% 有责任人与期限;整改后完成复测并留证据。
常见坑
只写"符合/不符合"不留证据
没有证据的自评无法复核,也无法应对后续检查。证据与结论必须一一对应。
"不适用"被滥用成逃避手段
每个"不适用"都要写清理由与审批人,否则会成为掩盖问题的黑洞。
为了好看把不符合改成符合
这是严重的诚信问题。真实做不到应走例外审批 + 补偿控制。
整改完不复测
配置可能没生效或被回滚。每条整改必须复测取证后再标记闭环。
清单一次做完就归档
环境在变、新漏洞在出现。自评应按季度或每次重大变更后重做。