一.账号安全的基本措施
1.将非登录用户的Shell设为nologin
usermod -s nologin 用户名 #禁止登录
2.锁定长期不使用的账号(含解锁方式)
usermod -L lisi #锁定账户
usermod -U lisi #解锁账户
passwd -l lisi #锁定账户方
passwd -u lisi #解锁账户
3.删除无用的账号
userdel 用户名 #删除用户
4.chattr锁定重要账号文件(如passwd、shadow、fstab等)
lsattr /etc/passwd /etc/shadow #查看文件的状态
chattr +i /etc/passwd /etc/shadow #锁定文件
chattr -i /etc/passwd /etc/shadow #解锁文件
二.密码安全控制
对于新建用户,可以进入/etc/login.defs进行修改属性,设置密码规则,使得在下次创建用户时密码信息生效
设置密码有效期
要求用户下次登录时修改密码
1.适用于新建用户
vim /etc/login.defs #修改配置文件
-----此处省略部分注释及配置-------
PASS_MAX_DAYS 30 #修改密码有效期为30天
2.适用于已有用户
chage -M 30 dn #修改密码有效期
3.强制在下次登录成功时修改密码(/etc/shadow第三个字段被修改为0)
chage -d 0 dn #设置下次登录强制修改密码
三.命令历史记录限制
减少记录的命令条数;
登录时自动清空命令历史;
系统默认保存1000条历史命令记录;
history -c 命令只可以临时清除记录,重启后记录还在。
2.进入配置文件永久修改历史命令条数
vim /etc/profile
#进入配置文件
HISTSIZE=300
#将全局历史命令条数由1000改为300
source /etc/profile
#刷新配置文件,使文件立即生效
3.退出当前终端将命令清除
vim .bash_logout
echo " " > ~/.bash_history
source .bash_logout
4.开机后当前终端将命令清除
vim .bashrc
echo " " > ~/.bash_history
5.设置登录超时时间
vim /etc/profile
#进入配置文件
TMOUT=600
#设置全局自动注销时间,声明600s没有操作就登出
source /etc/profile
#更新配置文件
四.切换和限制用户
1.su:切换用户
可以切换用户身份,并且以指定用户的身份执行命令
1.1 切换用户的方式
su UserName:非登录式切换,即不会读取目标用户的配置文件,不改变当前工作目录,即不完全切换
su - UserName:登录式切换,会读取目标用户的配置文件,切换至自已的家目录,即完全切换
1.2 密码验证
超级管理员切换普通用户,不需要密码
普通用户切换普通用户,需要密码
普通用户切换超级管理员,需要密码
注意:su 切换新用户后,使用 exit 退回至旧的用户身份,而不要再用 su 切换至旧用户,
否则会生成很多的bash子进程,环境可能会混乱。
1.3 限制使用su命令的用户
(1)su命令的安全隐患
默认情况下,任何用户都允许使用su命令,有机会反复尝试其他用户(如root)的登录密码,
带来安全风险
为了加强su命令的使用控制,可借助于PAM认证模块,只允许极个别用户使用su命令进行切换
(2)限制使用su命令的用户
将允许使用su命令的用户加入wheel组。
启用pam_wheel认证模块。则只有wheel组内的用户可以使用su命令切换用户(编辑/etc/pam.d/su文件)。
(3)查看su操作记录
安全日志:/var/log/secure
示例:有dn和ky27两个用户,要求设置dn可以使用su命令切换用户,ky27用户不允许使用
vim /etc/pam.d/su #编辑/etc/pam.d/su配置文件
auth required pam_wheel.so use_uid #将此行的注释取消即可
gpasswd -a dn wheel #将希望可以使用su命令的用户加入到wheel组中
[root@localhost dn]# passwd -S dn
dn PS 1969-12-31 0 99999 7 -1 (密码已设置,使用 SHA512 算法。)
[root@localhost dn]# passwd -S ky27
ky