账号安全控制

账号安全基本措施

系统账号清理

  • 将非登录用户的Shell设为/sbin/nologin
  • 锁定长期不使用的账号
  • 删除无用的账号
  • 锁定账号文件passwd、shadow

chattr +i /etc/passwd /etc/shadow 锁定文件
chattr -i /etc/passwd /etc/shadow 解锁
Isattr /etc/passwd /etc/shadow 查看状态
userdel -r +无用账号名
image.png

密码安全控制

  • 设置密码有效期
  • 要求用户下次登录时修改密码

vi /etc/login.defs 适用于新建用户
修改PASS_MAX_DAYS 数值
image.png
PASS_MIN_LEN 5 密码复杂性 字母大小写 数字 字符 最小长度不低于18位

chage -M 30 lisi 适用于已有用户
chage -d 0 zhangsan 强制在下次登录时更改密码
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

选项
-d, – lastday 最近日期 将最近一次密码设置时间设为“最近日期”
-E, – expiredate 过期日期 将帐户过期时间设为“过期日期”
-h, – help 显示此帮助信息并推出
-I, (大写的i)-- inactive INACITVE 过期 INACTIVE 天数后,设定密码为失效状态
-l, (小写L)-- list 显示帐户年龄信息
-m, – mindays 最小天数 将两次改变密码之间相距的最小天数设为“最小天数”
-M, I-maxdays 最大天数 将两次改变密码之间相距的最大天数设为“最大天数”
-R, – root CHROOT_DIR chroot 到的目录
-W, – warndays 警告天数 将过期警告天数设为“警告天数”

命令历史限制

  • 减少记录的命令条数
  • 注销时自动清空命令历史

[root@localhost ~]# vim /etc/profile
HISTSIZE=200

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
默认存1000条

[root@localhost ~]# vim ~/.bash_logout
history -c
clear

终端自动注销

  • 闲置600秒后自动注销

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
image.png

使用su命令切换用户

用途及用法

用途
Substitute User 切换用户
格式
su - +目标用户

密码验证

root切换任意用户,不验证密码
普通用户切换其他用户,验证目标用户的密码

[app@localhost ~]$ su - root 带-选项表示将使用目标用户的登录Shell环境
口令:
[root@localhost ~]# whoami
root

限制使用su命令的用户

  • 将允许使用su命令的用户加入wheel组
  • 启用pam_wheel认证模块
  • 限制使用su命令的用户

root@localhost ~]# gpasswd -a test wheel
正在将用户“test”加入到“wheel”组中

image.png

[root@localhost ~]# vim /etc/pam.d/su
#%PAM-1.0
auth sufficient pam_rootok.so

auth required pam_wheel.so use_uid

image.png

下图状态,仅root用户可以使用sudo命令
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

下图状态下,root和wheel组用户使用sudo命令
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

下状态仅wheel组用户可以使用sudo命令
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Linux中的PAM安全认证

su命令的安全隐患

  • 默认情况下,任何用户都允许使用su命令,有机会反复尝试其他用户(如root)的登录密码,带来安全风险
  • 为了加强su命令的使用控制,可借助于PAM认证模块,只允许极个别用户使用su命令进行切换

PAM(Pluggable Authentication Modules)可插拔式认证模块

可配置的模块

  • 是一种高效而且灵活便利的用户级别的认证方式
  • 也是当前Linux服务器普遍使用的认证方式

PAM认证原理

  • 一般遵循的顺序
    • Service(服务)→PAM(配置文件)→pam _*. so
  • 首先要确定哪一项服务,然后加载相应的PAM的配置文件(位于/etc/pam.d下),最后调用认证文件(位于/lib/security下)进行安全认证
  • 用户访问服务器时,服务器的某一个服务程序把用户的请求发送到PAM模块进行认证
  • 不同的应用程序所对应的PAM模块是不同的

模块位置

认证过程
image.png

认证的构成

查看某个程序是否支持PAM认证,用Is命令
例:Is /etc/pam.d | grep su 查看su是否支持PAM
查看su的PAM配置文件
cat /etc/pam.d/su:

  • 每一行都是一个独立的认证过程
  • 每一行可以区分为三个字段
    • 认证类型

auth: 对用户身份进行识别,提示输入密码,就判断是否为root
account: 对账号各项属性进行检查,检查是否允许登录系统,帐号有没有已经过期,是否达到了最大用户数等等
password: 使用用户信息来更新数据,如修改用户密码
session:定义登录前以及退出后所要进行的会话操作管理,如登录连接信息,用户数据的打开和关闭,挂载文件系统

  • 控制类型

required:表示需要返回一个成功值,如果返回失败,不会立刻将失败结果返回,而是继续进行同类型的下一验证,所有此类型的模块都执行完成后,再返回失败。
requisite:与required类似,但如果此模块返回失败,则立刻返回失败并表示此类型失败
sufficient:如果此模块返回成功,则直接向程序返回成功,表示此类成功,如果失败,不影响这类型的返回值
optional: 不进行成功与否的返回,不用于验证,只是显示结果(通常用于session类型),
include:表示在验证过程中调用其他的PAM配置文件。比如很多应用通过完整调用/etc/pam.d/system-auth(主要负责用户登录系统的认证工作)来实现认证而不需要重新逐一去写配置项

  • PAM模块及其参数

    默认是在/lib64/security/目录下,要填写绝对路径。
    同一个模块,可以出现在不同的模块类型中,它在不同的类型中所执行的操作都不相同,这是由于每个模块针对不同的模块类型编制了不同的执行函数。

pam认证流程
image.png

|
| 认证方式 | 模块 | 用户1 | 用户2 | 用户3 | 用户4 |
| — | — | — | — | — | — | — |
| auth | required | 模块1 | pass | fail | pass | pass |
| auth | sufficient | 模块2 | pass | pass | fail | pass |
| auth | required | 模块3 | pass | pass | pass | fail |
| | | 结果 | pass | fail | pass | pass |

提升权限

  • Su命令的缺点
  • sudo命令的用途及用法

用途
以其他用户身份(如root)执行授权的命令
用法
sudo +授权命令

配置sudo授权

visudo或者vi /etc/sudoers(文件的默认权限为440,保存时必须执行“:w!”命令来强制操作,否则 系统将提示为只读文件而拒绝保存)
格式
用户 +主机名列表=命令程序列表

sudo的选项
-l 列出用户在主机上可用的和被禁止的命令;一般配置好/etc/sudoers后,要用这个命令来查看和测试是不是配置正确的
-v 验证用户的时间戳;如果用户运行sudo 后,输入用户的密码后,在短时间内可以不用输入口令来直接进行sudo 操作;用-v 可以跟踪最新的时间戳
-u 指定以以某个用户执行特定操作
-k 删除时间戳,下一个sudo 命令要求用求提供密码


[root@localhost ~]# visudo

%wheel ALL=NOPASSWD: ALL 表示wheel组成员无需验证密码即可使用sudo执行任何命令
jerry localhost=/sbin/ifconfig
syrianer localhost=/sbin/,!/sbin/ifconfig,!/sbin/route可以使用通配符、取反符号!(优先级最高的是取反)
Cmnd_Alias PKGTOOLS=/bin/rpm,/usr/bin/yum类似别名有 User_Alias Host_Alias
mike localhost=PKGTOOLS

  • 查看su操作记录
  • 要启动Defaults logfile配置
  • 安全日志文件:/var/log/secure

[root@localhost ~]# visudo
Defaults logfile = “/var/log/sudo”

image.png

系统引导和登录控制

开关机安全控制

  • 调整BIOS引导设置
    • 将第一引导设备设为当前系统所在硬盘
    • 禁止从其他设备(光盘、U盘、网络)引导系统
    • 将安全级别设为setup,并设置管理员密码
  • GRUB限制
    • 使用grub2-mkpasswd-pbkdf2生成密钥
    • 修改/etc/grub.d/00_header文件中,添加密码记录
    • 生成新的grub.cfg配置文件

限制更改GRUB 引导参数

  • 系统开机进入GRUB菜单时,按e键可查看并修改GRUB引导参数,对服务器是一个威胁
  • 为GRUB菜单设置密码,只有正确的密码才被允许修改引导参数

格式
grub2-mkpasswd-pbkdf2 根据提示设置GRUB菜单的密码
PBKDF2 hash of your password is grub . pbkd … 省略部分内容为经过加密生成的密码字符串
或者
grub2-setpassword

开关机安全控制

  • 调整BIOS引导设置
    • 将第一引导设备设为当前系统所在硬盘
    • 禁止从其他设备(光盘、U盘、网络)引导系统
    • 将安全级别设为setup,并设置管理员密码
  • GRUB限制
    • 使用grub2-mkpasswd-pbkdf2生成密钥
    • 修改/etc/grub.d/00_header文件中,添加密码记录
    • 生成新的grub.cfg配置文件

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

防止意外需要备份文件
cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg.bak
cp /etc/grub.d/00_header /etc/grub.d/00_header.bak

设置用户密码文件
vim /etc/grub.d/00_header 使用vim编辑器编辑
cat << EOF 按G再按o再输入这个
set superusers=“root” 设置用户名为root
password_pbkdf2 root grub.pbkd2 …设置密码,复制上门设置的密码字符串贴过来
EOF

image.png
image.png

生成行grub.cfg
grub2-mkconfig -o /boot/grub2/grub.cfg 生成新的grub.cfg 文件
重启系统进入GRUB菜单时,按e键将需要输入账号密码才能修改引导参数

image.png

重启设备验证
重启设备
image.png
开机过程中按e,提示输入用户名密码
image.png
image.png
image.png

grub2-setpassword
输入密码就行
image.png

终端登录安全控制

  • 限制root只在安全终端登录
    • 安全终端配置:letc/securetty

[root@localhost ~]# vi /etc/securetty

#tty5 禁止root用户从终端tty5、tty6登录
#tty6

使用last查看登录情况
image.png

使用vi编辑器如下图所做就可以禁用tty5和tty6
image.png
image.png
image.png

终端登录安全控制

  • 限制root只在安全终端登录
    • 安全终端配置位置:/etc/securetty
  • 禁止普通用户登录
    • 建立/etc/nologin文件
    • 删除nologin文件或重启后即恢复正常

[root@localhost ~]# touch /etc/nologin 禁止普通用户登录

[root@localhost ~]# rm -rf /etc/nologin 取消上述登录限制

弱口令检测

John the Ripper,简称为 JR

  • 一款密码分析工具,支持字典式的暴力破解
  • 通过对shadow文件的口令分析,可以检测密码强度
  • 官方网站:http://www.openwall.com/john/

image.png

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部