Linux系统的安全性主要取决于用户账号的安全性。每个进入Linux系统的用户都会被分配唯一的账号,用户对系统中各种对象的访问权限取决于他们登录系统时的账号权限。
风险分析
对可登录账号进行控制,可以大大降低攻击者获取Shell的概率,让系统更加安全。
加固详情
系统账号默认存放在/etc/passwd中,可以手动查询账号信息,将除需要登录的账号以外的其他账号全部设置为禁止登录,即将其Shell设置为/sbin/nologin。
[root@centos7~]# cat /etc/passwd|grep-i test1
test1:x:1003:1004::/home/test1:/bin/bash
[root@centos7~]# usermod-L-s /sbin/nologin test1
[root@centos7~]# cat /etc/passwd|grep-i test1
test1:x:1003:1004::/home/test1:/sbin/nologin
加固步骤
使用usermod-L-s /sbin/nologin username锁定账号登录。
风险分析
root 用户作为超级管理员,拥有操作系统资源的所有访问权限,因此日常使用中不建议直接使用root用户登录系统,以防重要的文件或文件夹被删除,造成系统崩溃。
加固详情
创建一个普通用户并给予sudo权限,然后禁止root用户直接登录系统。
加固步骤
(1)首先创建一个普通用户test。
[root@centos7~]# useradd test
[root@centos7~]# passwd test
Changing password for user test.
New password:
passwd: all authentication tokens updated successfully.
(2)根据业务场景,在/etc/sudoers中给普通用户添加适当的sudo权限。
(3)编辑文件/etc/ssh/sshd_config,将PermitRootLogin设置为no,禁止root用户登录,如图1-1所示。
图1-1 禁止root用户登录
风险分析
非活动用户可能对系统安全造成威胁,例如对系统进行暴力破解、撞库攻击等。
加固详情
对于密码过期30天后仍未登录使用的用户,进行强制禁用。
加固步骤
执行命令useradd-D-f 30,将默认密码不活动期限设置为30天。
风险分析
防止非root用户访问root用户权限文件。
加固详情
确保root用户的GID为0。
加固步骤
执行命令usermod-g 0 root。
风险分析
防止非root用户访问root用户权限文件。
加固详情
确保仅root用户的UID为0。
加固步骤
执行命令awk-F: '($3==0) { print $1 }' /etc/passwd,返回UID为0的用户,确保返回的只有root用户,如果返回非root用户,则执行usermod命令修改用户的UID为非0数字。以下示例修改用户test的UID为1234。
[root@centos7~]# cat /etc/passwd|grep-i test
test:x:1004:1005::/home/test:/bin/bash
[root@centos7~]# usermod-u 1234 test
[root@centos7~]# cat /etc/passwd|grep-i test
test:x:1234:1005::/home/test:/bin/bash
密码是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.