目录
[2.2.PAM(Pluggable Authentication Modules)可拔插式认证模块](#2.2.PAM(Pluggable Authentication Modules)可拔插式认证模块)
一.账号安全基本措施
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(解锁)
md5sum /etc/password 校验和
2.密码安全控制
chage命令
2.1.常用选项
|--------|-------------------------------|
| -m | 密码可更改的最小天数,为0时可代表任何时候 |
| -M | 密码保持有效的最大天数 |
| -w | 用户密码到期前,提前收到警告信息的天数 |
| -E | 账号到期的日期 |
| -d | 上一次更改的日期 |
| -i | 停滞时期 如果一个密码已过期这些天,那么此账号将不可用 |
| -l | 列出当前的设置 由非特权用户来确定他们的密码或账号何时过期 |
- 设置密码有效期
- 要求用户下次登录时修改密码
bash
chage -M 天数 用户名 (针对已存在的用户,天数为 99999 表示为永不过期)
2.2.相关实操
bash
vim /etc/login.defs --> PASS_MAX_DAYS 天数(针对新建的用户)
2.3.相关实操
bash
chage -d 0 用户名(强制用户下一次登录修改密码)
3.命令历史限制
- 减少记录的命令条数
- 登录时自动情况命令历史
bash
history(查看历史命令)
vim /etc/profile --> export HISTSIZE=XX --> source /etc/profile(限制历史命令数量)
history -c(临时清空历史命令)
vim /etc/profile --> > ~/.bash_history
3.1.相关实操
3.2.永久生效
4.终端自动注销
- 闲置600秒后自动注销
bash
vim /etc/profile --> export TMOUT=XX --> source /etc/profile(自动注销)
- 开机永久清空历史命令
- 设置每60秒清空一次历史命令
二.系统引导和登录控制
1.使用su命令切换用户
1.1.用途及用法
用途:Substitiute User,切换用户
格式:
bash
su -目标用户
1.2.密码验证
root→任意用户,不验证密码
普通用户→其他用户,验证目标用户的密码
相关实操
1.3.限制使用su命令的用户
-
将允许使用su命令的用户加入wheel组
bashgpasswd wheel -a 用户名
-
启用pam_wheel认证模块
bashvim /etc/pam.d/su -> 开启 auth required pam_wheel.so use_uid 的配置
相关实操
加入wheel组前
加入wheel组
加入wheel组后
1.4.ssh远程登录输入三次密码错误则锁定用户
vim /etc/pam.d/sshd
auth required pam_tally2.so deny=3 unlock_time=600 even_deny_root root_unlock_time=600
相关实操
2.Linux中的PAM安全认证
2.1.su命令的安全隐患
- 默认情况下,任何用户都允许使用su命令,有机会反复尝试其他用户(比如root)的登录密码,带来安全风险
- 为了加强su命令的使用控制,可借助于PAM认证模块,只允许极个别用户使用su命令进行切换
2.2.PAM(Pluggable Authentication Modules)可拔插式认证模块
- 是一种高效而且灵活便利的用户级别的认证方式
- 也是当前Linux服务器普遍使用的认证方式
2.3.PAM认证原理
- 一般遵循的顺序
service(服务)->PAM(配置文件)->pam_*.so
- 首先要确定哪一项服务,然后加载相应的PAM的配置文件(位于/etc/pam.d下),最后调用认证文件(位于/lib64/security下)进行安全认证
- 用户访问服务器时,服务器的某一个服务程序把用户的请求发送到PAM模块进行认证
- 不同的应用程序所对应的PAM模块是不同的
2.4.PAM配置文件
PAM的配置文件中的每一行都是一个独立的认证过程,它们按从上到下的顺序依次由PAM模块调
用cat /etc/pam.d/system-auth
第一列代表PAM认证模块类型
**auth:**认证模块接口,如验证用户身份、检查密码是否可以通过,并设置用户凭据
**account:**账户模块接口,检查指定账户是否满足当前验证条件,如用户是否有权访问所请求的服
务,检查账户是否到期
**password:**密码模块接口,用于更改用户密码,以及强制使用强密码配置
**session:**会话模块接口,用于管理和配置用户会话。会话在用户成功认证之后启动生效
第二列代表PAM控制标记
**required:**模块结果必须成功才能继续认证,如果在此处测试失败,则继续测试引用在该模块接口
的下一个模块,直到所有的模块测试完成,才将结果通知给用户。
**requisite:**模块结果必须成功才能继续认证,如果在此处测试失败,则会立即将失败结果通知给用
户。
**sufficient:**模块结果如果测试失败,将被忽略。如果sufficient模块测试成功,并且之前的required
模块没有发生故障,PAM会向应用程序返回通过的结果,不会再调用堆栈中其他模块。
**optional:**该模块返回的通过/失败结果被忽略。一般不用于验证,只是显示信息(通常用于
session 类型)。
**include:**与其他控制标志不同,include与模块结果的处理方式无关。该标志用于直接引用其他
第三列代表PAM模块
默认是在/lib64/security/目录下,如果不在此默认路径下,要填写绝对路径。同一个模块,可以出
现在不同的模块类型中,它在不同的类型中所执行的操作都不相同,这是由于每个模块针对不同的
模块类型编制了不同的执行函数。
第四列代表PAM模块的参数
这个需要根据所使用的模块来添加。传递给模块的参数。参数可以有多个,之间用空格分隔开
查看某个程序是否支持PAM认证,可以用ls命令
示例:
查看su是否支持PAM模版认证
bash
ls /etc/pam.d | grep su
相关实操
查看su的PAM配置文件
bash
cat /etc/pam.d/su
相关实操
3.使用sudo机制提升权限
3.1.使用sudo
- 用途:以其他用户身份(比如root)执行授权的命令
- 用法:sudo授权命令
相关实操
新用户不在wheel组
在wheel组的用户
3.2.配置sudo
vi /etc/sudoers(此文件的默认权限为 440,保存退出时必须执行":wq!"命令来强制操作)
用户 主机名=命令程序列表 //可以使用通配符*全部,!取反符号
别名创建
- User_Alias 大写别名=用户1,用户2,......
- Host_Alias 大写别名=主机名1,主机名2,......
- Cmnd_Alias 大写别名=程序1,程序2,......
相关实操
使用别名进行授权
#用户/组授权
用户名/用户别名 主机名/别名 =(用户)程序列表/别名
%组名 主机名 程序列表
用户名 主机名 = [(用户)NOPASSWD:] 程序列表
普通用户使用授权命令
mkdir ~/guazhai(通过wangwu用户在家目录下创建一个 guazhai的空文件)
sudo mount /dev/sr0 ~/guazhai //sudo(加配置的命令表中的命令,以root的身份去运行该授权命令)
提示:第一次执行需要验证密码,默认超时时长为5分钟,在此期间不再重复验证密码
启用sudo操作日志
visudo
Defaults logfile = "/var/log/sudo"
su切换
将信任的普通用户加入到wheel组中 gpasswd -a 用户 wheel
修改su的PAM认证文件配置
/etc/pam.d/su 将2,6行注释取消
4.安全控制
4.1.开关机安全控制
调整BIOS引导设置
- 将第一引导设备设为当前系统所在硬盘
- 禁止从其他设备(光盘、u盘、网络)引导系统
- 将安全级别设为setup,并设置管理员密码
GRUB限制(了解即可)
- 使用grub-mkpasswd-pbkdf2生成密钥
- 修改/etc/grub.d/00 header文件中,添加密码记录
- 生成新的grub.cfg配置文件
通常情况下在系统开机进入GRUB菜单时,按e可以查看并修改GRUB引导参数,这对服务器是一
个极大的威胁。可以为GRUB设置一个密码,只有提供正确的密码才能被允许修改参数
4.2.终端登录安全控制
- 限制root只在安全终端登录
安全终端配置:/etc/securetty
- 禁止普通用户登录
-
建议/etc/nologin文件
-
删除nologin文件或重启后即恢复正常
touch /etc/nologin(禁止普通用户登录)
rm -rf /etc/nologin(取消上述登录限制)