文章目录
账号安全基本措施
- 系统账号清理
- 将非登录用户的Shell设为/sbin/nologin
- 锁定长期不使用的账号
- 删除无用的账号
- 锁定账号文件passwd、shadow
锁定文件并查看其状态
:
解锁文件并查看其状态
:
- 密码安全控制
- 设置密码有效期
- 要求用户下次登录时修改密码
适用于新建用户
vim /etc/login.defs
PASS_MAX_DAYS 99999
“PASS_MAX_DAYS”为设置密码有效期
可以去设置时间“99999”
“99999”为默认天数
PASS_MIN_DAYS 0
“PASS_MIN_DAYS”为自上次修改密码以来最少间隔多久才能修改密码
默认为“0”,“0”为不用修改
PASS_MIN_LEN 5
“PASS_MIN_LEN ”密码最小长度
PASS_WARN_AGE 7
“PASS_WARN_AGE”密码到期前时间(默认为7天)
适用于已有用户
强制在下次登录时更改密码
- 命令历史限制
- 减少记录的命令条数
- 注销时自动清空命令历史
- 终端自动注销
- 闲置600秒后自动注销
减少记录的命令条数
HISTSIZE默认保留1000条命令,过1000条后就会重新覆盖之前的命令
注销时自动清空命令历史
登出系统的配置文件
清除当前所有的命令(每次登出系统都会清除所有的命令)
history -c
clear
开启顺序
用户登录 -> 加载 ~/.bash_profile -->bash_profile 中的配置首先是使 ~/.bashrc 生效用户登出 --> .bash_logout 运行 logout 配置文件
闲置600秒后自动注销
使用命令切换用户 su
- 用途及用法
- 用途:Substitute User,切换用户
- 格式
su - 目标用户
- 密码验证
- root→任意用户,不验证密码
- 普通用户→其他用户,验证目标用户的密码
带“-”选项表示将使用目标用户的登录Shell环境
whoami(查看)
限制命令用户 su
- 将允许使用 su 命令的用户加入 sheel 组
- 启用 pam_wheel 认证模块
添加授权用户
查看确认wheel组成员
在/etc/pam.d/su 文件里设置禁止用户使用 su 命令
vim /etc/pam.d/su
#auth sufficient pam_ rootok.so
#auth required pam_ wheel.so use_ _uid #去掉此行开头的 # 号即可
1)以上两行是默认状态(即开启第一行,注释第二行),这种状态下是允许所有用户间使用su命令进行切换的。
2)两行都注释也是运行所有用户都能使用 su 命令,但 root 下使用 su 切换到其他普通用户需要输入密码;如果第一行不注释,则 root 使用 su 切换普通用户就不需要输入密码(pam rootok,so模块的主要作用是使 UID 为0的用户,即 root 用户能够直接通过认证而不用输入密码。)
3)如果开启第二行,表示只有 root 用户和 wheel 组内的用户才可以使用 su 命令
4)如果注释第一行,开启第二行,表示只有 wheel 组内的用户才能使用 su 命令,root 用户也被禁用 su 命令。
启用 pam wheel 认证以后,未加入到 wheel 组内的其他用户将无法使用 su 命令,尝试进行切换时将提示“拒绝权限”,从而将切换用户的权限控制在最小范围内。
- 查看 su 操作记录
- 安全日志文件:
普通用户切换登录测试验证使用 su 命令切换用户的操作将会记录到安全日志 /var/log/secure 文件中,可以根据需要进行查看。
- 安全日志文件:
Linux中的PAM安全认证
- su 命令的安全隐患
- 默认情况下,任何用户都允许使用 su 命令,从而有机会反复尝试其他用户(如root)的登录密码,这样带来了安全风险。
- 为了加强 su 命令的使用控制,可以借助于 pam wheel 认证模块,只允许极个别用户使用 su 命令进行切换。实现过程如下:将授权使用 su 命令的用户添加到 wheel 组,修改 /etc/pam.d/su 认证配置以启用 pam wheel 认证。
- PAM(Pluggable Authentication Modules)可插拔式认证模块
- 是一种高效而且灵活便利的用户级别的认证方式
- 也是当前Linux服务器普遍使用的认证方式
Linux-PAM,是Linux可插拔认证模块,是一套可定制、可动态加载的共享库,使本地系统管理员可以随意选择程序的认证方式。
PAM使用 /etc/pam.d/ 下的配置文件,来管理对程序的认证方式。应用程序调用相应的PAM配置文件,从而调用本地的认证模块,模块放置在 /lib64/security 下,以加载动态库的形式进行认证。比如使用 su 命令时,系统会提示输入 root 用户的密码,这就是 su 命令通过调用 PAM 模块实现的。
PAM认证原理
- PAM认证一般遵循的顺序:
- Service(服务)→ PAM(配置文件)→ pam_*.so
- PAM认证首先要确定哪一项应用服务,然后加载相应的PAM的配置文件(位于 /etc/pam.d 下),最后调用认证模块(位于 /lib/security/ 下)进行安全认证。
- 用户访问服务器的时候,服务器的某一个服务程序把用户的请求发送到PAM模块进行认证。
- 不同的应用程序所对应的PAM模块也是不同的。
PAM认证的构成
- 查看某个程序是否支持PAM认证,可以ls命令
- 示例:查看su是否支持PAM模块认证
ls /etc/pam.d | grep su
- 示例:查看su是否支持PAM模块认证
- 查看 su 的PAM配置文件:cat /etc/pam.d/su
- 每一行都是一个独立的认证过程
- 每一行可以区分为三个字段
- 认证类型
- 控制类型
- PAM模块及其参数
PAM安全认证流程
- 控制类型也称做Control Flags,用于PAM验证类型的返回结果
1、required验证失败时仍然继续,但返回Fail
2、requsite验证失败则立即结束整个验证过程,返回Fail
3、suffcient验证成功则立马返回,不再继续,否则忽略结果并继续
4、optional不用于验证,只显示信息(通常用于session类型)
使用 sudo 机制提升权限
- su 命令对策缺点
- sudo 命令的用途及用法
- 用途:以其他用户身份(如root)执行授权的命令
- sudo 授权命令
配置sudo授权
- visudo 或者 vi /etc/sudoers
- 记录格式
用户 主机名列表=命令程序列表
用户:直接授权指定的用户名,或采用“%组名”的形式(授权一个组的所有用户)
主机名:使用此规则的主机名。没有配置过主机名时可用localhost,有配置