6.4. 在 MLS 中建立用户明确
将 SELinux 策略切换到 MLS 后,必须通过将 SELinux 策略映射到受限的 SELinux 用户来为用户分配安全清晰级别。默认情况下,具有给定安全许可的用户:
- 不能读取具有更高敏感度级别的对象。
- 无法写入具有不同敏感度级别的对象。
前提条件
-
SELinux 策略被设置为
mls
。 -
SELinux 模式设置为
enforcing
。 -
已安装
policycoreutils-python-utils
软件包。 分配给 SELinux 受限用户的用户:
-
对于非授权用户,分配给
user_u
(以下流程中的example_user )。 -
对于特权用户,分配给
staff_u
(以下流程中的 staff )。
-
对于非授权用户,分配给
确保 MLS 策略处于活动状态时已创建该用户。MLS 中无法使用在其他 SELinux 策略中创建的用户。
流程
可选:要防止将错误添加到 SELinux 策略中,请切换到
permissive
SELinux 模式,这有助于进行故障排除:setenforce 0
# setenforce 0
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 请注意,在 permissive 模式下,SELinux 不强制执行活跃的策略,而是只记录 Access Vector Cache (AVC)消息,然后这些消息可用于故障排除和调试。
为
staff_u
SELinux 用户定义清晰的范围。例如,这个命令会将安全权限范围设置为s1
到s15
,s1
是默认的安全权限级别:semanage user -m -L s1 -r s1-s15 staff_u
# semanage user -m -L s1 -r s1-s15 staff_u
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为用户主目录生成 SELinux 文件上下文配置条目:
genhomedircon
# genhomedircon
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将文件安全上下文恢复到默认值:
restorecon -R -F -v /home/
# restorecon -R -F -v /home/ Relabeled /home/staff from staff_u:object_r:user_home_dir_t:s0 to staff_u:object_r:user_home_dir_t:s1 Relabeled /home/staff/.bash_logout from staff_u:object_r:user_home_t:s0 to staff_u:object_r:user_home_t:s1 Relabeled /home/staff/.bash_profile from staff_u:object_r:user_home_t:s0 to staff_u:object_r:user_home_t:s1 Relabeled /home/staff/.bashrc from staff_u:object_r:user_home_t:s0 to staff_u:object_r:user_home_t:s1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为用户分配安全权限级别:
semanage login -m -r s1 example_user
# semanage login -m -r s1 example_user
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中
s1
是分配给用户的安全权限级别。将用户的主目录重新标记到用户的明确级别:
chcon -R -l s1 /home/example_user
# chcon -R -l s1 /home/example_user
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选:如果您之前切换到了
permissive
SELinux 模式,并验证了一切都按预期正常工作后,请切换回enforcing
SELinux 模式:setenforce 1
# setenforce 1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
验证用户是否已映射到正确的 SELinux 用户,并分配了正确的级别:
semanage login -l
# semanage login -l Login Name SELinux User MLS/MCS Range Service __default__ user_u s0-s0 * example_user user_u s1 * …
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 以 MLS 内的用户身份登录。
验证用户的安全级别是否正常工作:
警告如果配置不正确,您用于验证的文件不应包含任何敏感信息,并且用户实际上可以访问未经授权的文件。
- 验证用户无法读取具有更高级别敏感性的文件。
- 验证用户可以写入具有相同敏感级别的文件。
- 验证用户可以读取具有较低级别的敏感性的文件。