一、故障現(xiàn)象
SUSE Linux Enterprise Server 11 SP3 系統(tǒng)中,普通用戶無(wú)法修改密碼,但root用戶可以正常修改。錯(cuò)誤日志如下:
系統(tǒng)日志顯示:
Jun 16 11:35:47 ZJHZ-CMREAD-CGTEST17 passwd[16285]: password change failed, pam Error 21 - account=bcwap, uid=3954, by=3954 Jun 16 11:36:29 ZJHZ-CMREAD-CGTEST17 su: (to zabbix) zabbix on /dev/pts/2 Jun 16 11:36:37 ZJHZ-CMREAD-CGTEST17 passwd[16712]: User zabbix: Authentication information cannot be recovered Jun 16 11:36:37 ZJHZ-CMREAD-CGTEST17 passwd[16712]: password change failed, pam error 21 - account=zabbix, uid=6606, by=6606
二、故障分析
初步懷疑原因如下:
- /etc/passwd 和 /etc/shadow 文件權(quán)限問(wèn)題:與其他正常主機(jī)對(duì)比后排除。
- passwd 命令權(quán)限或文件被修改:同類主機(jī)對(duì)比后排除。
- 動(dòng)態(tài)鏈接庫(kù)異常:使用 ldd 命令檢查,所有鏈接庫(kù)文件均正常,且版本一致。root用戶可正常修改密碼,此可能性較小。
- 新建用戶測(cè)試:新建用戶也無(wú)法修改密碼,排除用戶配置文件問(wèn)題。
- PAM 配置文件問(wèn)題:日志中 pam error 21 提示,可能性最大。 common-auth、common-password、common-account、common-Session、su、sshd 等文件均可能存在問(wèn)題。第三方安全加固軟件可能修改了 common-auth 和 common-password 文件。
聯(lián)系SUSE原廠技術(shù)支持尋求幫助。
三、故障解決
SUSE原廠工程師的排查步驟:
- 檢查PAM配置文件,未發(fā)現(xiàn)明顯問(wèn)題。注釋部分規(guī)則后問(wèn)題依舊。
- 使用 strace 命令跟蹤 passwd 命令執(zhí)行過(guò)程:
strace -o /tmp/pw.log -ft su - testuser -c "passwd"
日志分析未發(fā)現(xiàn)異常。
- 再次檢查 common-password 文件:將所有規(guī)則還原至初始設(shè)置后,問(wèn)題解決。 common-password 文件加固后和初始配置對(duì)比如下:
加固后: auth required pam_unix2.so nullok account required pam_unix2.so session required pam_unix2.so password required pam_pwcheck.so nullok password required pam_unix2.so nullok use_first_pass use_authtok password required pam_unix.so remember=5 use_authtok md5 shadow password required pam_cracklib.so min=disabled,12,8,6,5 max=40 passphrase=3 match=4 similar=deny random=42 enforce=everyone retry=3 初始值: password required pam_pwcheck.so nullok cracklib password required pam_unix2.so nullok use_authtok
四、總結(jié)
問(wèn)題最終得到解決。SUSE工程師建議:common-auth、common-password、common-account、common-session 四個(gè)文件應(yīng)分別只包含與其對(duì)應(yīng)策略相關(guān)的配置(auth, password, account, session)。安全加固廠商將auth和session相關(guān)配置寫(xiě)入common-password文件導(dǎo)致配置混亂,某些模塊重復(fù)加載。