系统账号清理
● 将非登录用户的Shell设为/sbin/nologin
● 锁定长期不使用的账号
● 删除无用的账号
● 锁定账号文件passwd、shadow
[root@localhost ~]# chattr +i /etc/passwd /etc/shadow (锁定文件并查看状态)
[root@localhost ~]# Isattr letc/passwd letc/shadow
-------- /etc/passwd
--------- /etc/shadow
chattr命令的用法
+ :在原有参数设定基础上,追加参数。
- :在原有参数设定基础上,移除参数。
= :更新为指定参数设定。
a: 即append, 设定该参数后,只能向文件中添加数据,而不能删除,多用于服务器日志文件安全,只有root才能设定这个属性。
i: 设定文件不能被删除、改名、设定链接关系,同时不能写入或新增内容。i参数对于文件系统的安全设置有很大帮助。
示例:chattr +i /etc/passwd /etc/shadow 设定文件/etc/ passwd、 /etc/ shadow文件不能被修改、删除、创建链接
- lsattr /etc/ passwd /etc/ shadow 查看效果
- 验证权限
- useradd lisi 报无权限
- cat /etc/ passwd
- passwd lisi 报无效账户
- cat /etc/ shadow
- chattr -i /etc/ passwd /etc/ shadow 解锁
- lsattr /etc/ passwd /etc/ shadow 查看文件保护效果
密码安全控制
● 设置密码有效期
● 要求用户下次登录时修改密码
[root@localhost ~]# vi /etc/login.defs 适用于新建用户
PASS MAX DAYS 30
[root@localhost ~]# chage -M 30 XXX 适用于已有用户
[root@localhost ~]# chage -d 0 XXX 强制在下次登陆时更改密码
■ 命令历史限制
● 减少记录的命令条数
● 注销时自动清空命令历史
$ history -C
该命令可以清空本次登入的所有输出命令,但不清空. bash_ history文件, 所以下次登陆后,旧命令还将出现,历史命令是存在于当前用户根目录下的. /bash_history文件。
echo > $home. /bash_history
每个用户根目录下都有一个. bash_ history文件用于保存历史命令,当每次注销时,本次登陆所执行的命令将被写入该文件。所以可以清空该文件,下次登陆后上次保存的命令将消失,清空效果将在下次登陆生效。
clear作用是清屏
使用su命令切换用户
■ 用途及用法
● 用途: Substitute User,切换用户
● 格式: su-目标用户
■ 密码验证
● root→任意用户,不验证密码
● 普通用户→其他用户,验证目标用户的密码
[jerry@localhost ~]$ su - root 带-选项表示将使用目标用户的登录Shell环境
口令:
[root@localhost ~]# whoami
root
■ 限制使用su命令的用户
● 将允许使用su命令的用户加入wheel组
● 启用pam_ wheel认证模块
[root@localhost ~]# gpasswd -a tsengyia wheel
tsengyia
正在将用户“tsengyia’”加入到"wheel"组中
PAM安全认证流程
■ 控制类型也称做Control Flags,用于PAM验证类型的返回结果
1.required验证失败时仍然继续,但返回Fail
2.requisite验证失败则立即结束整个验证过程,返回Fail
3. sufficient验证成功则立即返回,不再继续,否则忽略结果并继续 4.optiona|不用于验证,只显示信息 (通常用于session类型)
■ PAM认证类型包括四种:
1 认证管理(authentication management) :接受用户名和密码,进而对该用户的密码进行认证;
2 帐户管理( account management) :检查帐户是否被允许登录系统,帐号是否已经过期,帐号的登录是否有时间段的限制等;
3 密码管理( password management) :主要是用来修改用户的密码;
4 会话管理(sessionmanagement):主要是提供对会话的管理和记账。
■ su命令的安全隐患
● 默认情况下,任何用户都允许使用su命令,有机会反复尝试其他用户(如root) 的登录密码,带来安全风险
● 为了加强su命令的使用控制,可借助于PAM认证模块,只允许极个别用户使用su命令进行切换
■ PAM(Pluggable Authentication Modules)可插拔式认证模块
● 是一种高效而且灵活便利的用户级别的认证方式
● 也是当前Linux服务器普遍使用的认证方式
PAM认证原理
■ 一般遵循的顺序
● Service (服务) →PAM (配置文件) →pam_ *.so
■ 首先要确定哪一项服务,然后加载相应的PAM的配置文件(位于/etc/pam.d下),最后调用认证文件(位于/lib/security下)进行安全认证
■ 用户访问服务器时,服务器的某一个服务程序把用户的请求发送到PAM模块进行认证
■ 不同的应用程序所对应的PAM模块是不同的
PAM认证的构成
■ 查看某个程序是否支持PAM认证,可以用Is命令
● 示例:查看su是否支持PAM模块认证
Is /etc/pam.d | grep su
■ 查看su的PAM配置文件: cat /etc/pam.d/su
● 每一行都是一个独立的认证过程
● 每一行可以区分为三个字段
◆ 认证类型
◆ 控制类型
◆ PAM模块及其参数
使用sudo机制提升权限
■ su命令的缺点
● 身份改变
■ sudo命令的用途及用法
● 用途: 以其他用户身份(如root) 执行授权的命令
● 用法:sudo授权命令
■ 配置sudo授权
● visudo或者vi /etc/sudoers
● 记录格式: 用户 主机名列表=命令程序列表
■ 查看sudo操作记录
● 需启用Defaults logfile配置
● 默认日志文件: /var/log/sudo
■ 查询授权的sudo操作
● sudo -l
开关机安全控制
■ 调整BIOS引导设置
● 将第一引导设备设为当前系统所在硬盘
● 禁止从其他设备(光盘、U盘、网络)引导系统
● 将安全级别设为setup,并设置管理员密码
■ GRUB限制
● 使用grub2-mkpasswd-pbkdf2生成密钥
● 修改/etc/grub.d/00_ header文件中,添加密码记录
● 生成新的grub.cfg配置文件