第十七章:第49节Linux安全防护——设置用户密码规则

更新于:2019-01-26 19:42:36

服务器的安全不光从用户名入手,最主要的是做好密码防护,也就是说密码不能设置太简单了,还有经常更换新密码,做好这些需要服务器管理员平时有着良好的习惯。


①密码复杂度


大写字母/小写字母/数字/特殊字符


这四种,密码中起码包含三种,这样的密码才算是安全的。


②经常更换新密码


看自己的需求吧,楠神自己也不爱经常换密码,主要是要记得密码太多,随意更换很容易忘掉。


如果有童鞋有这样的良好习惯,可以接着看下面的内容:


Linux密码过期时间设置


在/etc/login.defs文件中,有这样一些参数:

MAIL_DIR    /var/spool/mail 系统消息(邮件)文件夹 /var./spool/mail
PASS_MAX_DAYS   99999       密码有效最大天数 99999
PASS_MIN_DAYS   0           密码有效最小天数 就是你改了密码后最快多久可以再改密码
PASS_MIN_LEN    5           密码最小长度
PASS_WARN_AGE   7           密码失效警告倒计时
UID_MIN           500       用户UID最小500
UID_MAX         60000       用户UID最大60000
GID_MIN           500       用户组GID 最小 500
GID_MAX         60000       用户组GID 最大 60000
CREATE_HOME yes             创建家目录   是
UMASK           077         创建文件/目录的权限掩码


参数还有很多。这个配置文件和/etc/passwd、/etc/shadow一样,可以对用户进行一些限制。其中就关联一些用户密码有关的限制参数。


Linux下对于新添加的用户,有关密码的一些限制,如用户密码过期时间是从/etc/login.defs中PASS_MAX_DAYS提取的,系统默认就是99999,而有些安全操作系统是90。更改此处,可以让新建的用户默认密码过期时间变化,但对已有用户密码过期时间不变


如果要修改已存在的用户密码规则,需要使用chage命令(不是change)


1.png


参数的意思:

  -m 密码可更改的最小天数。为零时代表任何时候都可以更改密码。
  -M 密码保持有效的最大天数。
  -W 用户密码到期前,提前收到警告信息的天数。
  -E 帐号到期的日期。过了这天,此帐号将不可用。
  -d 上一次更改的日期
  -i 停滞时期。如果一个密码已过期这些天,那么此帐号将不可用。
  -l 例出当前的设置。由非特权用户来确定他们的密码或帐号何时过期。


演示:

chage -l nanshen 查看nanshen的密码设置情况


1.png

翻译过来:
最近一次密码修改时间 : 2018年12月1日 
密码过期时间 :从不
密码失效时间 :从不 
帐户过期时间 :从不 
两次改变密码之间相距的最小天数 :0
两次改变密码之间相距的最大天数 :99999 
在密码过期之前警告的天数 :7
举一些例子:
chage -l username 查看某个用户的密码设置情况
chage -M 600 username 修改账户密码的有效天数为600天。过了这个天数,账户密码无效。
chage -E "Jun 16, 2016" username 设定账户的具体到期时间。过了这个日期,账户就无效,默认是never。
chage -d 0 username 强制账户登陆时修改口令
chage -d 0 -m 0 -M 90 -W 15 强制用户下次登陆时修改密码,并且设置密码最低有效期0和最高有限期90,提前15天发警报提示

1.png


注意:


chage -M  针对的是账户密码过期时间。
chage -E  这个命令针对的是账户过期时间。


root密码最好不要加有效期,保留一个ssh登录账号不加密码有效期,主要防止出现所有的账号都不能登录的情况。


Linux也可以对用户密码字符做一些强制的规定,比如:


1)为新密码设置所需的最少字符类数(种类⇒大写字母/小写字母/数字/特殊字符)

[root@kevin ~]# authconfig --passminclass=2 --update
[root@kevin ~]# grep "^minclass" /etc/security/pwquality.conf 
minclass = 2

2)在新密码中设置允许的连续相同字符的最大数量

[root@kevin ~]# authconfig --passmaxrepeat=3 --update
[root@kevin ~]# grep "^maxrepeat" /etc/security/pwquality.conf 
maxrepeat = 3

3)在新密码中设置同一类的最大允许连续字符数

[root@kevin ~]# authconfig --passmaxclassrepeat=4 --update
[root@kevin ~]# grep "^maxclassrepeat" /etc/security/pwquality.conf 
maxclassrepeat = 4

4)新密码中至少需要一个小写字符

[root@kevin ~]# authconfig --enablereqlower --update
[root@kevin ~]# grep "^lcredit" /etc/security/pwquality.conf 
lcredit = -1

5)新密码中至少需要一个大写字符

[root@kevin ~]# authconfig --enablerequpper --update
[root@kevin ~]# grep "^ucredit" /etc/security/pwquality.conf 
ucredit = -1

6)新密码中至少需要一位数字

[root@kevin ~]# authconfig --enablereqdigit --update
[root@kevin ~]# grep "^dcredit" /etc/security/pwquality.conf 
dcredit = -1

7)新密码中至少需要一个其他字符

[root@kevin ~]# authconfig --enablereqother --update
[root@kevin ~]# grep "^ocredit" /etc/security/pwquality.conf 
ocredit = -1

8)在新密码中设置单调字符序列的最大长度(ex⇒’12345’,’fedcb’)

[root@kevin ~]# vim /etc/security/pwquality.conf
# add to the end
maxsequence = 3

9)设置旧密码中不能出现的新密码中的字符数

[root@kevin ~]# vim /etc/security/pwquality.conf
# add to the end
difok = 5

10)检查新密码中是否包含用户passwd项的GECOS字段中长度超过3个字符的单词

[root@kevin ~]# vim /etc/security/pwquality.conf
# add to the end
gecoscheck = 1

11)设置不能包含在密码中的Ssace分隔列表

[root@kevin ~]# vim /etc/security/pwquality.conf
# add to the end
badwords = denywords1 denywords2 denywords3


说明:/etc/security/pwquality.conf 在ubuntu下可能没有这个文件,centos有。