LabHub
学习 学习路径 课程

企业认证对接

自动生成账号审计报告

在 LabHub 中继续学习

目标

通过脚本核对 HR 名册与 LDAP 目录,找出幽灵账户、未创建账户、特权幽灵账户和长期未登录账户,并在隔离处理后编写审计报告。

为什么重要

“离职人员的账户是否会立即停用?”是所有安全审计首先提出的问题。然而,大多数组织仍每季度安排人员在 Excel 中手工核对一次,事故就发生在两次核对之间。幽灵账户的产生并非因为懒惰,而是结构性问题——增量同步无法发现删除;没有预配机制(SCIM)时,账户会继续留在各个系统中。如果能每周自动执行这项核对,它就不再只是应付审计,而会成为日常运营。

步骤

  1. 准备:在 1389 端口启动 slapd,并加载 00-base10-people20-groups
  2. 导出目录中的所有 inetOrgPerson,生成 /root/audit/ldap_users.csv。第一行为 uid,cn,ou,title,按 uid 升序排列。
  3. /opt/lab/fixtures/auth/audit/hr_roster.csv 复制到 /root/audit/hr.csv。(内容必须完全一致)
  4. 目录中存在但 HR 名册中不存在的 uid 每行一个、按升序保存到 /root/audit/ghost.txt
  5. HR 名册中存在但目录中不存在的 uid 以相同格式保存到 /root/audit/missing.txt
  6. 从幽灵账户中找出属于 cn=admins,ou=Groups,dc=labhub,dc=co,dc=kr 组的 member,保存到 /root/audit/critical.txt
  7. /opt/lab/fixtures/auth/audit/lastlogin.csv 为依据,将截至 2026-08-01 已有 90 天以上未登录的 uid 按升序保存到 /root/audit/stale.txt。(文件中没有的 uid 视为“无登录记录”,也应包含在内。)
  8. 将所有幽灵账户移动到 ou=Disabled,dc=labhub,dc=co,dc=kr 下。(必须先创建 ou=Disabled entry。)移动后,在 ou=People 中不得再查到这些账户,且 ou=Disabled 的 entry 数量必须与幽灵账户数量相同。
  9. 编写 /root/audit/report.md。必须包含 ## 총계## 유령 계정## 미생성 계정## 특권 계정## 휴면 후보## 조치 계획 六个 h2 标题,并原样包含以下五行。
    total=<디렉터리 전체 사용자 수(격리 포함)>
    ghost=<유령 계정 수>
    missing=<미생성 계정 수>
    critical=<특권 유령 계정 수>
    stale=<90일 미접속 계정 수>
    

参考

导出目录账户

导出目录中的所有 inetOrgPerson,生成 /root/audit/ldap_users.csv。 第一行为 uid,cn,ou,title,按 uid 升序排列。

只导出所需属性。要把 ldapsearch 结果整理为 CSV,可先使用 -LLL 减少多余输出。

获取 HR 名册

/opt/lab/fixtures/auth/audit/hr_roster.csv 复制到 /root/audit/hr.csv。(内容必须完全一致)

不要改动原文件,请使用副本操作。先统计条目数,之后可据此核对集合运算结果。

提取幽灵账户

目录中存在但 HR 名册中不存在的 uid 每行一个、按升序保存到 /root/audit/ghost.txt

先对两侧 uid 列表排序,再求差集。comm 只有在输入已排序时才能得到正确结果。

提取未创建账户

HR 名册中存在但目录中不存在的 uid 以相同格式保存到 /root/audit/missing.txt

这是方向相反的差集。请记住,这份列表反映的是业务延迟指标,而不是安全问题。

识别特权幽灵账户

从幽灵账户中找出属于 cn=admins,ou=Groups,dc=labhub,dc=co,dc=kr 组的 member,保存到 /root/audit/critical.txt

这是幽灵账户列表与管理员组成员列表的交集,也是审计中优先级最高的处置对象。

识别长期未登录账户

/opt/lab/fixtures/auth/audit/lastlogin.csv 为依据, 将截至 2026-08-01 已有 90 天以上未登录的 uid 按升序保存到 /root/audit/stale.txt。 (文件中没有的 uid 视为“无登录记录”,也应包含在内。)

基准日期必须固定,结果才能复现。可以使用 date 命令把日期转为秒后比较。

隔离账户

将所有幽灵账户移动到 ou=Disabled,dc=labhub,dc=co,dc=kr 下。 (必须先创建 ou=Disabled entry。) 移动后,在 ou=People 中不得再查到这些账户,且 ou=Disabled 的 entry 数量必须与幽灵账户数量相同。

想一想为什么要隔离而不是删除账户。移动后数据仍应保留,但不再出现在“活跃用户”搜索结果中。

编写审计报告

编写 /root/audit/report.md。 必须包含 ## 총계## 유령 계정## 미생성 계정## 특권 계정## 휴면 후보## 조치 계획 六个 h2 标题,并原样包含以下五行。

total=<디렉터리 전체 사용자 수(격리 포함)>
ghost=<유령 계정 수>
missing=<미생성 계정 수>
critical=<특권 유령 계정 수>
stale=<90일 미접속 계정 수>

报告的价值在于数字和趋势。直接引用前面步骤得到的数值,并为每项附上处置计划。