3.8. 通过映射到 sysadm_u来限制管理员
您可以通过将用户直接映射到 sysadm_u
SELinux 用户来限制具有管理权限的用户。当用户登录时,会话会在 sysadm_u:sysadm_r:sysadm_t
SELinux 上下文中运行。
默认情况下,Red Hat Enterprise Linux 中的所有 Linux 用户(包括管理权限的用户)都会映射到无限制的 SELinux 用户 unconfined_u
。您可以通过将用户分配给受 SELinux 限制的用户来提高系统安全性。这对遵守 V-71971 安全技术实施指南非常有用。
先决条件
-
root
用户运行没有限制。这是 Red Hat Enterprise Linux 的默认设置。
流程
可选:要允许
sysadm_u
用户使用 SSH 连接到系统:setsebool -P ssh_sysadm_login on
# setsebool -P ssh_sysadm_login on
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将新用户映射到
sysadm_u
SELinux 用户:要映射新用户,请在
wheel
用户组中添加一个新用户,并将用户映射到sysadm_u
SELinux 用户:adduser -G wheel -Z sysadm_u <example_user>
# adduser -G wheel -Z sysadm_u <example_user>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要映射现有用户,将用户添加到
wheel
用户组,并将用户映射到sysadm_u
SELinux 用户:usermod -G wheel -Z sysadm_u <example_user>
# usermod -G wheel -Z sysadm_u <example_user>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
恢复用户主目录的上下文:
restorecon -R -F -v /home/<example_user>
# restorecon -R -F -v /home/<example_user>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
检查
<example_user>
是否映射到sysadm_u
SELinux 用户:semanage login -l | grep <example_user>
# semanage login -l | grep <example_user> <example_user> sysadm_u s0-s0:c0.c1023 *
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以
<example_user>
身份登录,例如使用 SSH,并显示用户的安全上下文:[<example_user>@localhost ~]$ id -Z sysadm_u:sysadm_r:sysadm_t:s0-s0:c0.c1023
[<example_user>@localhost ~]$ id -Z sysadm_u:sysadm_r:sysadm_t:s0-s0:c0.c1023
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 切换到
root
用户:sudo -i
$ sudo -i [sudo] password for <example_user>:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证安全性上下文是否保持不变:
id -Z
# id -Z sysadm_u:sysadm_r:sysadm_t:s0-s0:c0.c1023
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 尝试管理任务,例如重启
sshd
服务:systemctl restart sshd
# systemctl restart sshd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果没有输出结果,则代表命令可以成功完成。
如果该命令没有成功完成,它会输出以下信息:
Failed to restart sshd.service: Access denied See system logs and 'systemctl status sshd.service' for details.
Failed to restart sshd.service: Access denied See system logs and 'systemctl status sshd.service' for details.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow