SELinux - Multi-Level Security (MLS)

来源:互联网 发布:linux深度商店下载 编辑:程序博客网 时间:2024/06/05 04:04

1. 简介

    保护敏感和机密信息在商业领域、军事、情报机构和政府等领域都是至关重要的。在同一台计算机上放置不同安全级别的信息构成了真正的威胁。如果为不同安全级别的信息购买相应的系统,这代价是相当昂贵的。为了解决此问题,需要一个机制,使在不同的安全级别的用户同时访问系统时,系统没有信息污染的恐惧。

2. 为什么需要多级?

     多级来源于防卫社会的安全分类:秘密,机密,绝密(Confidential, Secret, and Top Secret)。

     个人必须被授予适当的许可才可以看到分类信息。那些具有秘密许可的人仅被授权查看秘密文件;他们不能查看机密或绝密信息。适用于数据流操作从低层次向高层次的规则,而不是反。信息安全级别如下图所示:


    

       从下到上,其级别为从低到高。

3. BLP模型

    BLP: Bell-La Padula Model,即“no read up, no write down”,如下图所示:


4. MLS和系统特权

    MLS访问规则总是结构常规的访问权限(文件权限)使用。例如:一个有“机密(Secret)”安全级别的用户使用DAC阻止其它用户访问一个文件,它也阻止了有“绝密(Top Secret)”安全级别的用户访问此文件。一个有更高安全许可的用户未被自动授予任意访问文件系统的权限,有普通Linux的root用户不一样。
    在多级系统中,具有“Top Secret”许可的用户没有自动获取系统管理员权限。但是他们可以访问系统中的所有信息(no read up, no write down),但不同于有系统管理员权限。

5. 安全级别 -- Subject和Object

    从上面的讨论可知,subject和object被打上安全级别(SL)的标记,它由以下两类实体组成:

    1) Sensitivity: — 一个等级属性,如:"Secret" or "Top Secret".
    2) Categories: — 一个非等级属性集合,如:"US Only" or "UFO".
    一个安全级别(SL)有一个Sensitivity,可能有0个或多个Categories。SL例子如下所示:

     { Secret / UFO, Crypto }, { Top Secret / UFO, Crypto, Stargate } and { Unclassified }


   注:等级属性Sensitivity之后有0个或多个Categories。既有Categories又有Sensitivity的原因是Sensitivity可在须知的基础上做更进一步的划分。如一个进程被设置为“Secret”,它可能不需要访问“Warp Drive”项目。

    Objects和Subjects的SL名字分别如下:

    • Classifications: objects的安全级别(SL)叫做分类

    • Clearances: subjects的安全级别(SL)叫做许可

      从而,objects被打上分类标记;而subjects用指定的许可进行操作。

6. MLS策略

    SELinux使用BLP(Bell-La Padula)模型,辅以类型强制(TE: Type Enforcement)以确保其完整性。简言之,MLS策略确保有适当许可(clearance)的Subject访问特定分类(classification)的Object

    例如,在MLS策略下,系统需要知道如何处理以下请求:

    有 {Top Secret / UFO, Rail gun }许可的进程可以写具有{Top Secret / UFO } 分类的文件吗?

    被执行的MLS模型和策略将决定此答案。(需要考虑如:把Rail gun类的信息泄漏到此文件的问题)

    在SELinux下的Type Enforcement(TE)是一个更加灵活和更具表现力的安全策略,在许多情况下,TE比MLS更适合。

    但是,在一些场景中,MLS是仍然是必须的。如:一个文件服务器上存有混合分类的数据,且客户以不同的许可连接此服务器。这将导致在一个简单的系统中,需要大量的安全级别和一个强隔离所有数据。这种场景就是SELinux包含MLS作为一个安全模型且作为TE的附属物的原因。





原创粉丝点击