服务器的安全不光从用户名入手,最主要的是做好密码防护,也就是说密码不能设置太简单了,还有经常更换新密码,做好这些需要服务器管理员平时有着良好的习惯。
①密码复杂度
大写字母/小写字母/数字/特殊字符
这四种,密码中起码包含三种,这样的密码才算是安全的。
②经常更换新密码
看自己的需求吧,楠神自己也不爱经常换密码,主要是要记得密码太多,随意更换很容易忘掉。
如果有童鞋有这样的良好习惯,可以接着看下面的内容:
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)
参数的意思:
-m 密码可更改的最小天数。为零时代表任何时候都可以更改密码。 -M 密码保持有效的最大天数。 -W 用户密码到期前,提前收到警告信息的天数。 -E 帐号到期的日期。过了这天,此帐号将不可用。 -d 上一次更改的日期 -i 停滞时期。如果一个密码已过期这些天,那么此帐号将不可用。 -l 例出当前的设置。由非特权用户来确定他们的密码或帐号何时过期。
演示:
chage -l nanshen 查看nanshen的密码设置情况
翻译过来: 最近一次密码修改时间 : 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天发警报提示
注意:
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有。