对于Linux系统来说,用户密码的复杂程度和是否定期更改是系统安全性高低的重要体现,特别是对于多用户系统来说尤其重要。用户密码的策略限制基本可以从以下3个方面入手:
0x01 密码策略设置
如果要设置用户密码的有效期,可以编辑login.defs文件
$ cat /etc/login.defs|grep -v "^#"|grep -v "^$" MAIL_DIR /var/spool/mail PASS_MAX_DAYS 90 ##密码的最大有效期, 99999:永久有期 PASS_MIN_DAYS 0 ##是否可修改密码,0表示可修改,非0表示多少天后可修改 PASS_MIN_LEN 8 ##密码最小长度,但是使用pam_cracklib.so模块后,该参数不再有效 PASS_WARN_AGE 7 ##密码失效前多少天在用户登录时通知用户修改密码 UID_MIN 500 UID_MAX 60000 GID_MIN 500 GID_MAX 60000 CREATE_HOME yes UMASK 077 USERGROUPS_ENAB yes ENCRYPT_METHOD SHA512 ##密码加密方式 MD5_CRYPT_ENAB no ##如果密码加密方式选择MD5,这边为yes,否则为no
login.defs文件修改后只对新建的用户起作用,如果要改变原有的用户则需要用到chage命令。
0x02 chage命令修改
a、查看账户的当前设置
$ chage -l test Last password change : Jan 03, 2018 ##密码最后修改时间 Password expires : Apr 03, 2018 ##密码到期时间 Password inactive : never Account expires : never ##账户到期时间,never为长期有效 Minimum number of days between password change : 0 ##更改密码最少天数 Maximum number of days between password change : 90 ##更改密码最大天数 Number of days of warning before password expires : 7 ##提前多少天提示用户
b、修改密码过期时间
$ chage -M 90 test ##密码过期时间为90天
c、修改账户过期时间
$ chage -E "Apr 03, 2018" test ##账号过期时间为4月3号 $ chage -E 90 test ##账号过期时间为90天后 $ chage -E never test ##恢复账号过期时间为不过期
0x03 密码复杂度配置
密码复杂度可以编辑system-auth文件配置
密码场景:定义用户密码最小长度为8位,其中最少有4个字母且最少包含2个大写字母,最少有1个数字和一个特殊字符;错误密码最多可以重试3次;不能使用最近5次使用过的旧密码。可以按如下配置
$ cat /etc/pam.d/system-auth password requisite pam_cracklib.so try_first_pass retry=3 type= minlen=8 ucredit=-2 lcredit=-4 dcredit=-1 ocredit=-1 password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok remember=5
参数注释:
retry=3 定义登录/修改密码失败时,可以重试的次数;
type=xxx 当添加/修改密码时,系统给出的缺省提示符是什么,用来修改缺省的密码提示文本。默认是不修改的,如上例。
minlen=8 定义用户密码的最小长度为8位
ucredit=-2 定义用户密码中最少有2个大写字母 (数字为负数,表示至少有多少个大写字母;数字为正数,表示至多有多少个大写字母;下面同理)
lcredit=-4 定义用户密码中最少有4个小写字母
dcredit=-1 定义用户密码中最少有1个数字
ocredit=-1 定义用户密码中最少有1个特殊字符(除数字、字母之外)
remember=5 修改用户密码时最近5次用过的旧密码就不能重用了

聂扬帆博客
一个分享IT运维相关工作经验和实战技巧的个人博客
2018年1月25日 上午9:29 沙发
技术博客,不错,赞一个。。。。。。。
2018年10月15日 上午10:29 板凳
文章分享的很不错,棒棒的