目录
1. 账号安全控制
1.1 系统账号清理
- 将非登录用户的shell设为/sbin/nologin
usermod -s /sbin/nologin 用户名
- 锁定长期不使用的账户
usermod -L 用户名
passwd -l 用户名`
- 删除无用的账号
userdel [-r] 用户名
- 锁定账号文件passwd、shadow
[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
`这两个文件被锁了以后用户也会无法创建`
1.2密码安全控制
1.2.1 设置密码有效期
法一
[root@localhost ~]# vim /etc/login.defs `##修改密码配置文件,适用于新建用户`
法二
[root@localhost ~]# chage -M 30 zhangsan `##适用于已有的用户`
[root@localhost ~]# cat /etc/shadow | grep zhangsan `##查看shadow文件的zhnagsan的那一行`
1.2.2要求用户下次登录时修改密码
chage ##修改账号和密码有效期限
语法:chage [参数] [数值] username
常用参数
选项 | 说明 |
---|---|
l | 列出当前用户过期时间设置信息 |
m | 密码可以更改的最小天数,为0时任何时候都能更改 |
M | 密码保持有效的最大天数 |
E | 设置用户的过期时间 过了这些天账号将不可用 0表示马上过期 -1表示永不过期 |
d | 上一次更改的日期 |
[root@localhost ~]# chage -d 0 zhangsan `##下次登录时强制请求修改密码`
1.3 账号安全基本措施
1.3.1常用四个系统配置文件
/etc/profile
系统环境变量得配置文件(全局有效) 环境变量 PATH HISTSIZE
开机时,用户登录会自动加载
/etc/bashrc
全局有效,用户在切换shell环境时也会自动加载此文件中的配置
source 刷新
~/.bash_profile
只针对当前用户有效
echo ''> ~/.bash_history放在当前文件夹中
当前用户开机后首次登录系统时会执行一次这个命令
~/ . bashrc
只针对当前用户有效
echo ' ' > ~/ .bash_ history
当前用户每次登录或者切换shell环境时都会执行一次命令
1.3.1 命令历史限制
[root@localhost ~]# history -c `##临时清空历史命令`
[root@localhost ~]# vim /etc/profile
export HISTSI本E=200 `##减少记录的命令条数`
[root@localhost ~]# source /etc/profile
[root@localhost ~]# vim ~/.bashre
echo " " > -/.bash_ history `##添加这一行后登录时自动清空命令历史`
1.3.2 终端自动注销
[root@localhost ~]# vim /etc/profile
[root@localhost ~]# source /etc/proflie `##刷新配置文件`
2.系统引导和登录控制
2.1 使用su命令切换用户
2.1.1 切换用户
格式 su [-] 目标用户
[root@localhost ~]# pwd
/root
[root@localhost ~]# su wangwu `##该方法切换用户不会改变目录`
[wangwu@localhost root]$ pwd
/root
[root@localhost ~]# su - wangwu `##该方法切换用户会进入当前用户的家目录,并自动加载shell环境`
上一次登录:二 8月 9 17:12:30 CST 2022pts/0 上
[wangwu@localhost ~]$ pwd
/home/wangwu
2.1.2密码验证
root→任意用户,不验证密码
[root@localhost ~]# su wangwu
[wangwu@localhost root]$
普通用户→其他用户,验证目标用户的密码
[wangwu@localhost ~]$ su - root
密码:
上一次登录:二 8月 9 14:11:59 CST 2022tty2 上
[root@localhost ~]# whoami
root
2.1.3 限制使用su命令的用户
将允许使用su命令的用户加入wheel组
[root@localhost ~]# gpasswd -a wangwu wheel
正在将用户“wangwu”加入到“wheel”组中
[root@localhost ~]# id wangwu
uid=1003(wangwu) gid=1003(wangwu) 组=1003(wangwu),`10(wheel) ##已经将用户加入到wheel组中`
启用pam_ wheel认证模块
[root@localhost ~]# vim /etc/pam.d/su
2.2 PAM安全认证
2.2.1 Linux中的PAM安全认证
su命令的安全隐患
- 默认情况下,任何用户都允许使用su命令,有机会反复尝试其他用户(如root) 的登录密码,带来安全风险
- 为了加强su命令的使用控制,可借助于PAM认证模块,只允许极个别用户使用su命令进行切换
PAM(Pluggable Authentication Modules)可插拔式认证模块
- 是一种高效而且灵活便利的用户级别的认证方式
- 也是当前Linux服务器普遍使用的认证方式
2.2.2 PAM认证原理
-
一般遵循的顺序
Service (服务) → PAM (配置文件) → +pam_ *.so
-
首先要确定哪-项服务,然后加载相应的PAM的配置文件(位于/etc/pam.d下),最后调用认证文件(位于 /lib64/security下)进行安全认证
-
用户访问服务器时,服务器的某-个服务程序把用户的请求发送到PAM模块进