普通用户无法修改密码问题处理
一、问题现象
现网一台suse11 sp3主机在使用普通用户修改密码时,无法正常修改,使用root用户可以修改用户密码,具体错误日志如下:
message日志如下:
1Jun 16 11:35:47 ZJHZ-CMREAD-CGTEST17 passwd[16285]: password change failed, pam error 21 - account=bcwap, uid=3954, by=3954
2Jun 16 11:36:29 ZJHZ-CMREAD-CGTEST17 su: (to zabbix) zabbix on /dev/pts/2
3Jun 16 11:36:37 ZJHZ-CMREAD-CGTEST17 passwd[16712]: User zabbix: Authentication information cannot be recovered
4Jun 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命令进行跟踪,命令如下:
1strace -o /tmp/pw.log -ft su - testuser -c "passwd"
-f 跟踪进程fork的子进程,-t参数打印时间信息。
查看输出的这部分日志信息,发现在执行passwd命令修改前也无明显错误。
3、再次检查pam文件,官方将common-password里的所有规则全部还原为初始设置后,再进行密码修改验证,发现问题解决。common-password加固和初始值分别如下:
加固后:
1auth required pam_unix2.so nullok
2account required pam_unix2.so
3session required pam_unix2.so
4password required pam_pwcheck.so nullok
5password required pam_unix2.so nullok use_first_pass use_authtok
6password required pam_unix.so remember=5 use_authtok md5 shadow
7password required pam_cracklib.so min=disabled,12,8,6,5 max=40 passphrase=3 match=4 similar=deny random=42 enforce=everyone retry=3
8初始值:
9password required pam_pwcheck.so nullok cracklib
10password required pam_unix2.so nullok use_authtok
四、小结
问题虽然解决,不过原厂工程师也给出了建议,common-auth、common-password、common-account、common-session这四个文件分别写的策略是 auth、password、account、session相关的内容,建议每个文件里,只写入跟该策略相关的内容。比如common-password里,只写入password开头的内容,而安全加固厂家在加固时,把auth和 session相关的东西也写在了该文件内。这样写,容易造成配置混乱,且某些模块重复加载。
捐赠本站(Donate)
如您感觉文章有用,可扫码捐赠本站!(If the article useful, you can scan the QR code to donate))
- Author: shisekong
- Link: https://blog.361way.com/passwd-recoverd/5491.html
- License: This work is under a 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议. Kindly fulfill the requirements of the aforementioned License when adapting or creating a derivative of this work.