PAM 配置改动识别
PAM 是 Linux 的认证中枢,/etc/pam.d/ 下每个服务一个配置文件,用模块链描述认证、账号、会话、口令四类检查。攻击者在这里插入 pam_exec 调用或放宽 pam_unix 的参数,就能得到隐蔽的认证后门或口令记录点,而且不替换任何可执行文件,常规的文件完整性检查很难发现。
基本信息
| 目录 | /etc/pam.d/(服务配置)与 /etc/security/(模块参数) |
|---|---|
| 四类模块 | auth、account、session、password |
| 常见异常 | 出现 pam_exec、pam_permit、pam_rootok 的非标准组合 |
| 核查方式 | 与同发行版基线文件逐行比对,结合文件时间判断改动点 |
| 固有风险 | 配置写错会导致全系统无法登录 |
典型使用场景
- 排查隐藏的认证后门,例如登录时调用外部脚本
- 定位口令记录点,确认是否存在窃取凭据的模块
- 核对 sshd、sudo、login 等关键服务是否被放宽限制
- 与完整性检查结果结合,解释文件未被替换却仍然失陷的原因
- 核查后与基线比对,确认系统认证策略已恢复正常
核查配置
核查配置
ls -l --time-style=long-iso /etc/pam.d/ | head -20 # 看改动时间的分布
grep -Rn 'pam_exec\|pam_permit\|pam_rootok' /etc/pam.d/ # 找非标准模块调用
diff -u /etc/pam.d/sshd /baseline/pam.d/sshd # 与同版本基线逐行比对
ls -l --time-style=long-iso /etc/security/ | head # 模块参数文件的改动时间
stat -c '%y %n' /etc/pam.d/sshd # 关键文件的精确时间四类模块与关注点
| 类型 | 作用 | 核查关注 |
|---|---|---|
| auth | 验证身份 | 是否插入额外脚本或允许跳过口令校验 |
| account | 判断账号是否可用 | 是否放宽过期与锁定策略 |
| password | 口令修改规则 | 是否被改成弱策略或记录明文 |
| session | 会话建立前后的动作 | 是否借会话钩子执行外部程序 |
PAM 改动通常不伴随文件替换,完整性检查会显示一切正常。排查认证类后门时,把 /etc/pam.d 与 /etc/security 下的配置文件单独列为一个检查面,与哈希类检查并行做。若系统接入了集中认证(如 LDAP 或 SSSD),配置里还会出现远程模块调用,核查时先分清本地策略与集中策略各自的职责边界,再判断哪些改动真正扩大了登录入口。
PAM 配置写错可能导致全系统无法登录,核查阶段坚持只读:不修改、不重写文件,需要对比时用副本或把输出重定向到证据目录,任何改动都先在测试环境验证。