一、账号安全控制:
用户账号是计算机使用者的身份凭证或标识,每个要访问系统资源的人,必须凭借其用户账号才能进入计算机。在Linux系统中,提供了多种机制来确保用户账号的正当、安全使用
1.1 基本安全措施:
在Linux系统中.除了用户手动创建的各种账号之外,还包括随系统或程序安装过程而生成的其他大量账号.除了超级用户rool之外.其他大量账号只是用来维护系统运作、启动或保持服务进程.一般是不允许登录的.因此也称为非登录用户账号.
对于Linux服务器中长期不用的用户账号,若无法确定是否应该删除.可以暂时将其锁定.例如.若要锁定.解锁名为wei的用户账号.可以执行以下操作〈(passwd、usermod命令都可用来锁定.解锁账号).
[root@localhost ~]# passwd -S wei ##查看账号状态
wei PS 2023-12-27 0 99999 7 -1 (密码已设置,使用 SHA512 算法。)
[root@localhost ~]# usermod -L wei ##锁定账号
[root@localhost ~]# passwd -S wei
wei LK 2023-12-27 0 99999 7 -1 (密码已被锁定)
[root@localhost ~]# usermod -U wei ##解锁账号
[root@localhost ~]# passwd -S wei
wei PS 2023-12-27 0 99999 7 -1 (密码已设置,使用 SHA512 算法。)
如果服务器中的用户账号已经固定.不再进行更改,还可以采取锁定账号配置文件的方法.使用chattr命令,分别结合“+i""-i”选项来锁定、解锁文件.使用lsattr命令可以查看文件锁定情况。
[root@localhost ~]# chattr +i /etc/passwd /etc/shadow ##锁定文件
[root@localhost ~]# lsattr /etc/passwd /etc/shadow ##查看锁定文件的状态
----i----------- /etc/passwd
----i----------- /etc/shadow
[root@localhost ~]# chattr -i /etc/passwd /etc/shadow ##解锁锁定文件
[root@localhost ~]# lsattr /etc/passwd /etc/shadow
---------------- /etc/passwd
---------------- /etc/shadow
[root@localhost ~]#
在账号文件被锁定的情况下,其内容将不允许变更.因此无法添加、删除账号,也不能更改用户的密码.登录 Shell、宿主目录等属性信息.
[root@localhost ~]# chattr +i /etc/passwd /etc/shadow
[root@localhost ~]# useradd billgate
useradd:无法打开 /etc/passwd
1.2 密码安全控制:
在不安全的网络环境中.为了降低密码被猜出或被暴力破解的风险.用户应养成定期更改密码的习惯.避免长期使用同一个密码。管理员可以在服务器端限制用户密码的最大有效天数,对于密码已过期的用户,登录时将被要求重新设置密码.否则将拒绝登录。
[root@localhost ~]# vim /etc/login.defs ##适用新用户
PASS_MAX_DAYS 30
[root@localhost ~]# chang -M 30 lisi ##适用已有lisi用户
在某些特殊情况下.如要求批量创建的用户初次登录时必须自设密码.根据安全规划统一要求所有用户更新密码等,可以由管理员执行强制策略.以便用户在下次登录时必须更改密码。例如.执行以下操作可强制要求用户wei下次登录时重设密码.
[root@localhost ~]# chage -d 0 wei
1.3命令历史、自动注销:
Shell环境的命令历史机制为用户提供了极大的便利,但另一方面也给用户带来了潜在的风险.只要获得用户的命令历史文件.该用户的命令操作过程将会一览无余.如果曾经在命令行输入明文的密码.则无意之中服务器的安全壁垒又多了一个缺口。
Bash终端环境中.历史命令的记录条数由变量HISTSIZE控制.默认为1000 条。通过修改/etc/profile文件中的HISTSIZE变量值.可以影响系统中的所有用户.例如,可以设置最多只记录200条历史命令
[root@localhost ~]# export HISTSIZE=200
除此之外.还可以修改用户宿主目录中的~/ .bash_logout 文件,添加清空历史命令的操作语句。这样.当用户退出已登录Bash环境以后.所记录的历史命令将自动清空.
[root@localhost ~]# vi ~/.bash_logout
history -c
clear
Bash终端环境中,还可以设置一个闲置超时时间.当超过指定的时间没有任何输入时即自动注销终端.这样可以有效避免当管理员不在时其他人员对服务器的误操作风险.闲置超时由变量 TMOUT来控制.默认单位为秒(s).
[root@localhost ~]# export TMOUT=600 ##适用当前用户
二、用户切换与提权:
Linux系统为我们提供了su、sudo两种命令.其中 su命令主要用来切换用户,而sudo命令用来提升执行权限。
2.1 su命令——切换用户
使用su命令,可以切换为指定的另一个用户.从而具有该用户的所有权限。当然.切换时需要对目标用户的密码进行验证(从root用户切换为其他用户时除外)。
例如,当前登录的用户为 root,若要切换为wei用户,可以执行以下操作。
[root@localhost ~]# su - wei
密码:
上一次登录:三 1月 3 22:44:35 CST 2024:0 上
[wei@localhost ~]$
上述命令操作中,选项“一”等同于“---login”或“一I”,表示切换用户后进入目标用户的登录Shell环境.
默认情况下,任何用户都允许使用su命令.从而有机会反复尝试其他用户(如root)的登录密码,这样带来了安全风险。为了加强su命令的使用控制,可以借助于pam_wheel认证模块.只允许极个别用户使用su命令进行切换。实现过程如下:将授权使用su命令的用户添加到 wheel组,修改/etc/pam.d/ su认证配置以启用pam_wheel认证.
[root@localhost ~]# gpasswd -a wei wheel
正在将用户“wei”加入到“wheel”组中
[root@localhost ~]# grep wheel /etc/group
wheel:x:10:wei
[root@localhost ~]# vim /etc/pam.d/su
auth sufficient pam_wheel.so trust use_uid ##去掉开头的#号
auth required pam_wheel.so use_uid
启用pam_wheel认证以后,未加入到 wheel组内的其他用户将无法使用su命令.尝试进行切换时将提示“拒绝权限”.从而将切换用户的权限控制在最小范围内。
2.2 sudo 命令——提升执行权限:
使用sudo命令就可以提升执行权限,不过,需要由管理员预先进行授权.指定允许哪些用户以超级用户(或其他普通用户)的身份来执行哪些命令.
1)在配置文件/etc / sudoers中添加授权
sudo机制的配置文件为/elc/sudoers,文件的默认权限为440,需使用专门的visudo 工具进行编辑。虽然也可以用vi进行编辑,但保存时必须执行“:w!”命令来强制操作.否则系统将提示为只读文件而拒绝保存。
配置文件/etc/sudoers中,授权记录的基本配置格式如下所示。
user MACHINE=COMMANDS
授权配置主要包括用户、主机.命令三个部分.即授权哪些人在哪些主机上执行哪些命令.各部分的具体含义如下.
用户(user):直接授权指定的用户名,或采用“%组名”的形式(授权一个组的所有用户).
主机(MACHINE),使用此配置文件的主机名称。此部分主要是方便在多个主机间共用同一份sudoers文件.一般设为localhost或者实际的主机名即可.
命令(COMMANDS);允许授权的用户通过sudo方式执行的特权命令.需填写命令程序的完整路径.多个命令之间以逗号“,”进行分隔。
典型的 sudo配置记录中,每行对应一个用户或组的sudo授权配置。
例如,若要授权用户jerry能够执行ifconfig命令来修改Р地址.而wheel组的用户无需验证密码即可执行任何命令,可以执行以下操作.