*本文原创作者:起于凡而非于凡,本文属FreeBuf原创奖励计划,未经许可禁止转载
注:本文和等保联系其实并不大,主要还是说一些linux里细节一些的东西,而且很有可能会浪费你生命中的好几分钟……
密码长度,作为等级保护主机测评项里中密码复杂度要求之一,是必须要查的。
在《等级测评师初级教程》里,对于密码长度的设置指向了/etc/login.defs里的PASS_MIN_LEN字段。# PASS_MIN_LEN Minimum acceptable password length.
PASS_MIN_LEN 5
简单明了,对新密码的长度最小值做出了限制。
不过,实际上这个参数是无效的,至少在centos6以及以上版本里,这个参数对新密码长度没有一点点的制约。
比如大家可以试一试,给PASS_MIN_LEN设一个值,再用非root账户去改改密码,看看对新密码长度有没有影响。甚至,还可以直接删除login.defs文件,试一试。
反正,我的测试结果是:这个参数没有起到作用。
结果是出来了,至于原因,我没找到,网上也没有相关的资料。或许该参数在centos以前的某个老版本里是有作用的,但随着版本更新,特别估计是开始使用PAM认证机制后,该参数就无效化了,仅仅作为一个迷惑人的参数放置在login.defs文件里。
实际上真正起作用的,是一个pam模块,具体点,也就是pam_cracklib.so模块。
PAM认证机制个人感觉就是一个模块化、组件化的机制,一些人把一些认证、验证以及其他功能实现好了,然后上层的应用去调用配置文件(接口),而配置文件呢再调用底层的实现,大概就是下图这个样子:
所谓的应用程序,就包括在linux里使用的命令,好,回到密码长度这个话题。
修改密码时对于密码的一系列验证由pam_cracklib.so模块实现,那么谁去调用?那当然就是passwd了(修改密码的命令)。
passwd怎么调用的?是通过配置文件(接口)做到的。
在centos6以及以上版本中,这个配置文件就是/etc/pam.d中与passwd同名的文件,也就是/etc/pam.d/passwd。
顺便一提,/etc/pam.d中基本都是这类同名文件:[root@centos01 ~]# ls /etc/pam.d
atd fingerprint-auth-ac password-auth smtp system-config-authentication