首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CentOS7 SELinux似乎不遵守MCS分类

CentOS7 SELinux似乎不遵守MCS分类
EN

Server Fault用户
提问于 2018-03-14 11:31:57
回答 1查看 378关注 0票数 4

问题

分配给某个SELinux MCS (多类别安全)类别的文件可以由未分配给该类别的用户读取,这表明MCS在我的系统上不工作(运行CentOS7,安装最少,SELinux在目标策略中强制执行)。

背景

最近,我为自己购买了一个小vServer,这促使我第一次深入研究安全系统设置和处理SELinux。我打算通过在docker容器中运行应用程序(主机本身在CentOS7上运行)来分离在服务器上运行的应用程序。我很高兴地了解到,每个码头容器(默认情况下)在启动时随机分配SELinux MCS类别,以便为分离提供额外的安全层。为了让我自己熟悉SELinux和MCS的具体工作原理,我在我的一台家用机器上设置了一个VM,并进行了一些操作。这样做,我注意到MCS不像我预期的那样工作,所以要么我遗漏了一些重要的东西,要么在某个地方出现了配置问题。

我做了什么,

为了测试MCS,我遵循了0和1中的说明。首先,我确保SELinux确实在强制模式下运行,并且使用了sestatus的目标策略。遵循0,我创建了mcsuser_u SELinux用户和CentOS用户john、jane、johnjane,然后使用semanage login映射到了mcsuser_u。我还将这些类别分配给了0中列出的用户,最后得到了:

代码语言:javascript
复制
Login Name | SELinux User | MLS/MCS Range

john | mcsuser_u | s0-s0:c122
jane | mcsuser_u | s0-s0:c123
johnjane | mcsuser_u | s0-s0:c122,123

来自semanage login -l

代码语言:javascript
复制
mcsuser_u | MLS/MCS Level: s0 | MLS/MCS Range: s0-s0:c0.c1023 | SELinux Roles: user_r

来自semanage user -l

我使用户johntext的主目录可读(chmod 707),并以john的身份登录并创建了一个文本文件johntext。然后,我将类别c122分配给该文件(仍然以john的身份登录)。我还能够将类别c120分配给文件,尽管john本身没有被归类为c120,根据0,这是不可能的。ls -lZ johntext显示输出

代码语言:javascript
复制
-rw-rw-r-- john john mcsuser_u:object_r:user_home_t:s0:c122 johntext

按照以上所述,我以用户jane的身份登录,并尝试使用cat命令读取文件johntext,这是我能够做到的。

对我来说,这清楚地表明MCS没有像我预期的那样工作(只有当请求访问的用户拥有相同的类别时,才允许访问某个类别的对象)。

解决方案?

我现在有点困惑,不知道错误在哪里,所以我向你们寻求建议。对我来说,这可能只是一个错误的假设或误解,但我现在无法理解,这对我来说也没有任何意义。在我看来,有以下几种可能性:

1.我必须手动激活MCS检查或使用不同的策略

我没有找到任何关于我是否需要手动激活MCS支持的信息,因此假设如果我分配标签(基于1),它就能工作。其他来源的2建议,MCS是在(至少) Fedora和RHEL的目标策略中启用的,我认为这与CentOS没有什么不同。

2.在我这边有一个错误配置,

在使用semanage login设置用户类别或将类别分配给文件时,我可能犯了一些错误。

3.它刚刚坏了,

。。这将是不好的

参考链接

0:https://selinux-mac.blogspot.de/2009/06/multi-category-security.html

1:https://www.centos.org/docs/5/html/Deployment_指南-en-US/sec-mcs-getstarted.html

2:http://selinuxsymposium.org/2006/slides/08-mcs.pdf

sestatus输出

代码语言:javascript
复制
SELinux status:                 enabled
SELinuxfs mount:                /sys/fs/selinux
SELinux root directory:         /etc/selinux
Loaded policy name:             targeted
Current mode:                   enforcing
Mode from config file:          enforcing
Policy MLS status:              enabled
Policy deny_unknown status:     allowed
Max kernel policy version:      28

编辑:

我刚刚在运行CentOS 6.9的VM上测试了相同的步骤,在这里,一切都按预期运行。现在,我假设SELinux on CentOS中的MCS存在一些bug,或者需要对策略/配置进行一些无文档化的修改。我仍然怀疑下一步会采取什么明智的措施来使它像预期的那样发挥作用。

EN

回答 1

Server Fault用户

回答已采纳

发布于 2018-03-26 17:13:05

显然,SELinux策略从CentOS6到CentOS7发生了变化,使得MCS约束不再适用于所有类型。对于要坚持MCS的给定类型,必须通过自定义策略将mcs_constrained_type属性添加到该类型。有关如何这样做的更多详细信息(以及默认情况下哪些类型受MCS约束(以及原因),可以在丹·沃尔什的博客文章中找到。

票数 3
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/901575

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档