目录
1.账号安全控制
1.1 基本安全措施
1.1.1 系统账号清理
①将非登陆用户的shell设为/sbin/nologin
usermod -s /sbin/nologin
②锁定长期不使用的账号:
usermod -L 用户名
passwd -l 用户名
passwd -S 用户名
③删除无用的账号:userdel 【-r】
④锁定账号文件passwd、shadow
chattr +i /etc/passwd /etc/shadow
lsattr /etc/passwd /etc/shadow
chattr -i /etc/passwd /etc/shadow
常见的非登录用户包括bin、daemon、adm、lp、mail、nobody、apache、mysql、dbus、ftp、gdm、haldaemon等。为了确保系统安全,这些用户的登录shell通常是/sbin/nologin,表示禁止终端登录,应确保不被人为改动。
usermod -L zhangsan //锁定账号
passwd -S zhangsan //查看账号状态
usermod -U zhangsan //解锁账号
chattr +i /etc/passwd /etc/shadow //锁定文件
lsattr /etc/passwd etc/shadow //查看为锁定状态
chattr -i /etc/passwd /etc/shadow //解锁文件
lsattr /etc/passwd /etc/shadow //查看为解锁状态
在账号文件被锁定的情况下,内容不允许变更,因此无法添加、删除账号,也不能更改用户密码、登录shell、宿主目录等属性信息。
1.1.2 密码安全控制
为了降低密码被破解的风险,应该定期更改密码,避免长期使用同一个密码。管理员可以在服务器端限制用户密码最大有效天数,对于密码已经过期的用户,登录时将被要求重新设置密码,否则拒绝登录。
例:将密码有效期设为30天
[root@localhost ~]#vi /etc/login.defs //适用于新建的用户
PASS_MAX_DAYS 30
[root@localhost ~]#chage -M 30 lisi //适用于已有的lisi用户
例:强制要求用户zhangsan下次登录时重设密码
[root@localhost ~]#chage -d 0 zhangsan
Localhost login:zhangsan
password:
You are required to change your password immediately(root enforced)
Changing password for zhangsan.
(current) UNIX password:
New password:
Retype new password:
1.1.3 命令历史、自动注销
shell环境的命令历史机制为用户提供了极大的便利,但另一方面也给用户带来了潜在的风险。只要获得用户的命令历史文件,该用户的命令操作过程将会一览无余,如果曾经在命令行输入明文的密码,则无意之中服务器的安全壁垒又多了一个缺口。
Bash终端环境中,历史命令的记录条数由变量HISTSIZE控制,默认为1000条。通过修改/etc/profile文件中的HISTSIZE变量值,可以影响系统中的所有用户。
例:设置最多只记录200条历史命令
[root@localhost ~]#vi /etc/profile //适用于新登录用户
...... //省略部分内容
HISTSIZE=200
[root@localhost ~]#export HISTSIZE=200 //适用于当前用户
还可以修改用户宿主目录中的~ /.bash_logout文件,添加清空历史命令的操作语句。
[root@localhost ~]#vi ~/.bash_logout
history -c
clear
Bash终端中,还可以设置闲置超时时间,由变量TMOUT来控制,默认单位为秒。
[root@localhost ~]#vi /etc/profile //适用于新登录用户
...... //省略部分内容
export TMOUT=600
[root@localhost ~]#export TMOUT=600 //适用于当前用户
注意:当正在执行程序代码编译、修改系统配置等耗时较长的操作时,应避免设置TMOUT变量。必要时可以执行“unset TMOUT”命令取消TMOUT变量设置。
1.2 用户切换与提权
1.2.1 su命令——切换用户
使用su命令,可以切换为指定的另一个用户,从而具有该用户的所有权限。