你的位置:首页 > 软件开发 > 操作系统 > SELinux深入理解

SELinux深入理解

发布时间:2017-08-11 11:00:09
1. 简介 SELinux带给Linux的主要价值是:提供了一个灵活的,可配置的MAC机制。 Security-Enhanced linux (SELinux)由以下两部分组成: 1) Kernel SELinux模块(/kernel ...

SELinux深入理解

1. 简介

    SELinux带给Linux的主要价值是:提供了一个灵活的,可配置的MAC机制。

    Security-Enhanced linux (SELinux)由以下两部分组成:

    1) Kernel SELinux模块(/kernel/security/selinux)

    2) 用户态工具

    SELinux是一个安全体系结构,它通过LSM(Linux Security Modules)框架被集成到Linux Kernel 2.6.x中。它是NSA (United States National Security Agency)和SELinux社区的联合项目。

    SELinux提供了一种灵活的强制访问控制(MAC)系统,且内嵌于Linux Kernel中。SELinux定义了系统中每个【用户】、【进程】、【应用】和【文件】的访问和转变的权限,然后它使用一个安全策略来控制这些实体(用户、进程、应用和文件)之间的交互,安全策略指定如何严格或宽松地进行检查。

    SELinux对系统用户(system users)是透明的,只有系统管理员需要考虑在他的服务器中如何制定严格的策略。策略可以根据需要是严格的或宽松的。

    只有同时满足了【标准Linux访问控制】和【SELinux访问控制】时,主体才能访问客体。

 

1.1 DAC与MAC的关键区别(root用户)

 

      安 全增强型Linux(SELinux)开始是由NSA(国家安全局)启动并加入到Linux系统中的一套核心组件及用户工具,可以让应用程序运行在其所需的最低权限上。未 经修改过的Linux系统是使用自主访问控制的,用户可以自己请求更高的权限,由此恶意软件几乎可以访问任何它想访问的文件,而如果你授予其root权 限,那它就无所不能了。

      在SELinux中没有root这个概念,安全策略是由管理员来定义的,任何软件都无法取代它。这意味着那些潜在的恶意软件所能造成的损害可以被控制在最小。一般情况下只有非常注重数据安全的企业级用户才会使用SELinux。  

      操作系统有两类访问控制:自主访问控制(DAC)和强制访问控制(MAC)。标准Linux安全是一种DAC,SELinux为Linux增加了一个灵活的和可配置的的MAC。

      /etc/sysconfig/selinux中包含如下配置选项:

     1) 打开或关闭SELinux

     2) 设置系统执行哪一个策略(policy)

     3) 设置系统如何执行策略(policy)

4.2 配置文件选项

4.2.1 SELINUX

        SELINUX=enforcing|permissive|disabled —定义SELinux的高级状态         • strict — 对SELinux执行完全的保护。为所有的subjects和objects定义安全环境,且每一个Action由策略执行服务器处理。提供符合Role-based-Access Control(RBAC)之policy,具备完整的保护功能,保护网络服务、一般指令及应用程序。

 

4.2.3 SETLOCALDEFS

         SETLOCALDEFS=0|1 — 控制如何设置本地定义(users and booleans)。

 

         • 1:这些定义由load_policy控制,load_policy来自于文件/etc/selinux/<policyname>

         • 0:由semanage控制

 

4.3 /etc/selinux/目录

      /etc/selinux/是存放所有策略文件和主要配置文件的目录。其例子如下:   

 

 

[cpp] view plain copy 
  1. -rw-r--r--  1 root root  448 Sep 22 17:34 config  
  2. drwxr-xr-x  5 root root 4096 Sep 22 17:27 strict  
  3. drwxr-xr-x  5 root root 4096 Sep 22 17:28 targeted  

 

5. SELinux工具

1) /usr/sbin/setenforce — 修改SELinux运行模式,例子如下:

         • setenforce 1 — SELinux以强制(enforcing)模式运行

6. 类型强制的安全上下文(Type Enforcement Security Context)

    安全上下文是一个简单的、一致的访问控制属性,在SELinux中,类型标识符是安全上下文的主要组成部分,由于历史原因,一个进程的类型通常被称为一个域(domain),"域"和"域类型"意思都一样,我们不必苛刻地去区分或避免使用术语域,通常,我们认为【域】、【域类型】、【主体类型】和【进程类型】都是同义的,即都是安全上下文中的“TYPE”。

    SELinux对系统中的许多命令做了修改,通过添加一个-Z选项显示客体和主体的安全上下文。

    1) 系统根据PAM子系统中的pam_selinux.so模块设定登录者运行程序的安全上下文;

 

11. 小结

      SELinux访问控制是基于与所有系统资源(包括进程)关联的安全上下文的,安全上下文包括三个组件:用户、角色和类型标识符。类型标识符是访问控制的主要基础。

      在SELinux中,访问控制的主要特性是类型强制,在主体(即进程)与客体之间通过指定allow规则(主体的类型【也叫做域类型】是源,客体的类型是目标)进行访问授权,访问被授予特定的客体类别,为每个客体类别设置细粒度的许可。

      类型强制的一个关键优势是它可以控制哪个程序可能运行在给定的域类型上,因此,它允许对单个程序进行访问控制(比起用户级的安全控制要安全得多了),使程序进入另一个域(即以一个给定的进程类型运行)叫做域转变,它是通过SELinux的allow规则紧密控制的,SELinux也允许通过type_transition 文件使域转变自动发生。

      SELinux在访问控制安全上下文中不直接使用角色标识符,相反,所有的访问都是基于类型的,角色用于关联允许的域类型,这样可以设置类型强制允许的功能组合到一起,将用户作为一个角色进行认证。

      SELinux提供了一个可选的MLS访问控制机制,它提供了更多的访问限制,MLS特性依靠TE机制建立起来的,MLS扩展了安全上下文的内容,包括了一个当前的(或低)安全级别和一个可选的高安全级别。












参考:http://www.centos.org/docs/5/html/Deployment_Guide-en-US/selg-overview.html

            http://wenku.baidu.com/view/df89fe235901020207409c49.html

            http://wenku.baidu.com/view/fed9abb569dc5022aaea002d.html

            http://selinux.sourceforge.net Homepage for the SELinux community.

            http://www.nsa.gov/selinux/ Homepage for the NSA SELinux development team. Many resources are available in HTML and PDF formats. Although many of these links are not SELinux specific, some concepts may apply. 

            http://fedora.redhat.com/docs/ Homepage for the Fedora documentation project, which contains Fedora Core specific materials that may be more timely, since the release cycle is much shorter.

         http://wenku.baidu.com/view/4d26594fc850ad02de804189.html

原标题:SELinux深入理解

关键词:linux

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

可能感兴趣文章

我的浏览记录