PAM 后门是什么
PAM(可插拔认证模块)是 Linux 上所有认证的必经环节:本地登录、su、sudo、SSH 口令认证最终都要调用 /lib*/security/ 下的模块。把 pam_unix.so 换成带后门的版本,让口令校验恒定返回成功,就得到了一把「任意口令都能进」的万能钥匙。它比新增账号隐蔽得多,因为 /etc/passwd 里看不出任何异常,只能靠文件完整性校验抓出来。
基本信息
| 目标文件 | /lib/x86_64-linux-gnu/security/pam_unix.so(路径随发行版与架构变化) |
|---|---|
| 另一类改动 | /etc/pam.d/ 中滥用 pam_exec、pam_permit 绕过认证 |
| 包校验 | rpm -V pam / dpkg -V libpam-modules |
| 哈希比对 | 与干净主机同版本文件或发行版包内文件比对 |
| 时间线索 | 模块 .so 的 mtime 与包安装时间明显不符 |
| 处置原则 | 认证链被污染时优先从干净介质恢复或重装 |
典型使用场景
- 常规口令都能登录成功,怀疑存在万能口令后门
- 应急排查中核对核心认证文件完整性,属于系统校验的必查项
- 处置完成后复验认证链是否干净,用同一套命令再跑一遍
- 排查 /etc/pam.d 中不合常理的 pam_exec、pam_permit 调用
- 与 rootkit 检查一起做,判断是否已被植入认证层后门
校验模块与配置
校验模块与配置
rpm -Va pam 2>/dev/null | grep -E '^..5' # RHEL 系:内容不符的文件被标记
sudo dpkg -V libpam-modules 2>/dev/null | head # Debian 系:列出被改动的文件
md5sum /lib/x86_64-linux-gnu/security/pam_unix.so 2>/dev/null
rpm -qf /lib64/security/pam_unix.so 2>/dev/null # 确认文件归属哪个安装包
ls -la --time-style=long-iso /lib*/security/*.so | head -n 20 # 找 mtime 异常
sudo grep -rn 'pam_exec\|pam_permit' /etc/pam.d/ | head # 配置层是否被滥用检查项与判据
| 检查项 | 命令 | 命中判据 |
|---|---|---|
| 文件内容 | rpm -V pam / dpkg -V libpam-modules | 出现校验失败标记或文件被列出 |
| 文件归属 | rpm -qf / dpkg -S | 查不到归属说明来源不明 |
| 修改时间 | ls -la --time-style=long-iso | 与包安装时间明显不符 |
| 配置引用 | grep -rn pam.d/ | 出现无业务解释的 pam_exec、pam_permit |
| 哈希比对 | sha256sum 后与干净主机比对 | 同版本文件哈希不一致 |
不同发行版与架构下模块路径不同(/lib/security、/lib64/security、/lib/x86_64-linux-gnu/security),先用 rpm -qf 或 dpkg -S 确认真实路径,再与干净文件比对。
PAM 被篡改后这台主机上的口令认证结果已不可信:处置方向是从干净介质恢复或重装受影响主机,而不是逐条修改配置。