现网一台suse11 sp3主机在使用普通用户修改密码时,无法正常修改,使用root用户可以修改用户密码,具体错误日志如下:
message日志如下:
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
从以上报错的日志及密码相关的东西来说,怀疑以下几项:
1、/etc/passwd、/etc/shadow文件设置了特殊权限,导致普通用户passwd执行时无法写入 ---经和其他主机对比,排除;
2、passwd特殊权限位被回收或该文件被更改过 ---对于同类主机,也排除该问题;
3、动态链接库so文件异常---通过ldd查看,发现所有链接的so库文件都存在,且版本和正常主机的版本一致。同时由于root可以正常修改,这个可能也比较小;
4、新建普通用户,再切到该问题,确认是否可以正常修改---发现新建用户也无法正常修改自己的密码,提示同上;
5、pam文件中有相关策略---可能性最大,因为message日志中有pam error 21的错误 。
跟用户认证相关的几个pam文件有,common-auth、common-password、common-account、common-session、su、sshd ,而第三方安全加固公司在加固时一般会修改前两个文件 。看了下前两个文件,发现使有的几条策略也都是经常用的几条配置,比较密码长度复杂度、失败锁定等。简单尝试修改了两处,发现情况并未解决,且现网大多数机器都加固过,已经没有完全纯净的环境可以对比参考。刚好公司刚新买了SUSE原厂维保,也想试下原厂维保的质量,建单联系了SUSE让其分析该问题。
原厂的分析思路:
1、基本上也是照我上面说的先看了一遍,未发现明显问题。在pam策略上也注释了两处,发现问题仍旧;
2、使用strace命令进行跟踪,命令如下:
strace -o /tmp/pw.log -ft su - testuser -c "passwd"
-f 跟踪进程fork的子进程,-t参数打印时间信息。
查看输出的这部分日志信息,发现在执行passwd命令修改前也无明显错误。
3、再次检查pam文件,官方将common-password里的所有规则全部还原为初始设置后,再进行密码修改验证,发现问题解决。common-password加固和初始值分别如下:
加固后: 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
问题虽然解决,不过原厂工程师也给出了建议,common-auth、common-password、common-account、common-session这四个文件分别写的策略是 auth、password、account、session相关的内容,建议每个文件里,只写入跟该策略相关的内容。比如common-password里,只写入password开头的内容,而安全加固厂家在加固时,把auth和 session相关的东西也写在了该文件内。这样写,容易造成配置混乱,且某些模块重复加载。
原文来自:
本文地址://lrxjmw.cn/nomout-user-passwd.html编辑:张雄,审核员:逄增宝
本文原创地址://lrxjmw.cn/nomout-user-passwd.html编辑:问题终结者,审核员:暂无