密码是Linux用来校验用户身份的首要方法。因此保护密码的安全对于用户、局域网以及整个网络来说都非常重要。近几年来,弱密码导致的安全事件越来越多,密码安全变得愈加重要。
风险分析 如果用户的密码被破解且经常用于登录,那么该用户的个人隐私就有被泄露的风险;若该用户经常修改密码,这种风险就会相应降低很多,可以起到及时止损的作用。
加固详情 设置密码生存期,可以对密码的有效期、到期提示天数、最小密码长度等进行设置。
加固步骤 编辑文件/etc/login.defs,密码生存期参数如表1-1所示。
表1-1 密码生存期参数
风险分析 简单的密码很容易被攻击者使用数据字典破解,加大密码的复杂度,可以增加攻击者破解的难度。想要从根本上防范暴力破解,还需要结合其他的防御手段。
加固详情 对密码的复杂度进行设置。
加固步骤 编辑文件/etc/pam.d/system-auth,在文件中增加以下内容,密码复杂度参数如表1-2所示。
password requisite pam_pwquality.so try_first_pass retry=5 dcredit=-1 lcredit=-1 ucredit=-1 ocredit=-1 minlen=8
表1-2 密码复杂度参数
风险分析 使用弱加密算法加密的密码被拦截或者泄露后很容易被破解,所以使用安全的加密算法非常有必要,常见的不安全的加密算法有MD5、SHA-1等,为保证安全,推荐使用SHA-512。
加固详情 使用安全的加密算法。
加固步骤 编辑文件/etc/pam.d/password-auth和/etc/pam.d/system-auth,并添加以下内容。
password sufficient pam_unix.so sha512
配置加密算法为SHA-512,如图1-2所示。
图1-2 配置加密算法为SHA-512
风险分析 空密码登录系统是非常危险的,可导致绕过认证鉴权访问系统。
加固详情 确保/etc/shadow密码字段不为空。
加固步骤 执行命令awk-F: '($2=="" ) { print $1 " does not have a password "}' /etc/shadow,返回值即密码字段为空的用户,然后执行命令 passwd username为空密码用户设置密码。相关示例如下。
检查发现用户test的密码字段为空;
[root@centos7~]# awk-F: '($2=="" ) { print $1 " does not have a password "}' /etc/shadow #查询空密码用户
test does not have a password
给test用户设置密码。(如果用户不使用密码,可以直接删除。)
[root@centos7~]# passwd test
Changing password for user test.
New password:
passwd: all authentication tokens updated successfully.