Linux帐户的密码加密后存放于/etc/shadow文件中。对于Redhat Enterprise版本,默认使用MD5算法,这个算法已经很不安全。很多经典的黑客教程都是教人拿到shadow文件后回去破解出root的密码,如果能用更难破解的sha算法加密密码无疑可以提高服务器的安全性。以下内容是综合了http://www.cyberciti.biz/faq/rhel-centos-fedora-linux-upgrading-password-hashing/ , http://kbase.redhat.com/faq/docs/DOC-15806 的内容而来,针对RHEL5.2以上版本。
显示当前密码加密算法:
# authconfig --test | grep hashing
输出:password hashing algorithm is md5
设置使用sha512算法:
# authconfig --passalgo=SHA512 --update
在我的RHEL5.3版中,提示unknown algorithm sha512, 使用了sha256,还没搞清楚是为什么。再次显示,已经更改为sha256算法。
最后,所有用户都需要重新设置密码才能生效。可以使用# chage -d 0 userName 强制所有用户下次登录修改密码。
在我用的archlinux上,设置方法不同。参考了WiKi上的内容:http://wiki.archlinux.org/index.php/SHA_Passwords
1.修改 /etc/pam.d/passwd文件
#%PAM-1.0
#password required pam_cracklib.so difok=2 minlen=8 dcredit=2 ocredit=2 retry=3
#password required pam_unix.so md5 shadow use_authtok
password required pam_unix.so md5 shadow nullok
把最后一行的md5用sha256替换
2.修改/etc/default/passwd文件
CRYPT=des 改为 CRYPT=sha2563.所有用户重新修改密码。
/etc/shadow文件详解
登录名”是与/etc/passwd文件中的登录名相一致的用户账号
“口令”字段存放的是加密后的用户口令字:
如果为空,则对应用户没有口令,登录时不需要口令;
星号代表帐号被锁定;
双叹号表示这个密码已经过期了;
6
6
6开头的,表明是用SHA-512加密;
1
1
1表明是用MD5加密;
2
2
2 是用Blowfish加密;
5
5
5 是用 SHA-256加密;
“最后一次修改时间”表示的是从某个时刻起,到用户最后一次修改口令时的天数。时间起点对不同的系统可能不一样。例如在SCOLinux中,这个时间起点是1970年1月1日。
“最小时间间隔”指的是两次修改口令之间所需的最小天数。
“最大时间间隔”指的是口令保持有效的最大天数。
“警告时间”字段表示的是从系统开始警告用户到用户密码正式失效之间的天数。
“不活动时间”表示的是用户没有登录活动但账号仍能保持有效的最大天数。
“失效时间”字段给出的是一个绝对的天数,如果使用了这个字段,那么就给出相应账号的生存期。期满后,该账号就不再是一个合法的账号,也就不能再用来登录了。
作者:fly小灰灰
来源:CSDN
原文:https://blog.csdn.net/yaofeino1/article/details/54616440
版权声明:本文为博主原创文章,转载请附上博文链接!