原文请见:http://netsecurity.51cto.com/art/201110/298841.htm

非限制的进程运行在非限制域中。比如,init进程运行在非限制的initrc_t域中,非限制的kernel进程运行在kernel_t域中,非限制的用户运行在unconfined_t域中。对于非限制的进程,SELinux策略规则仍然适用...


 

一、管理非限制进程

非限制的进程运行在非限制域中。比如,init进程运行在非限制的initrc_t域中,非限制的kernel进程运行在kernel_t域中,非限制的用户运行在unconfined_t域中。对于非限制的进程,SELinux策略规则仍然适用,然而有关允许进程运行在非限制域中的规则允许几乎所有的访问。因此,如果一个非限制进程被***控制的话,那么SELinux将不能阻止***获取对系统资源和数据的访问权限,当然DAC规则仍然适用,因为SELinux机制是在DAC层次上附加一层对Linux的增强,而不是简单地替代DAC。

下面将给出一个具体的例子来说明Apache Http服务器(httpd进程)在非限制的条件下运行,是如何能够访问本应由Samba服务器访问的数据的。值得注意的是:在Fedora 10中,httpd进程默认是限制运行在httpd_t域中的。下面的例子假设用户系统中安装了httpd、wget(一种类似于Windows系统下Flashget软件的多线程下载工具)、settroubleshoot-server、audit等工具包,并且SELinux机制运行在enforcing模式下。

(1)运行sestatus命令来确认Linux中SELinux是运行的,且运行在enforcing模式下,运行结果与图1所示一致:

图1  运行sestatus命令来确认Linux中SELinux是否运行

(2)以root用户身份,创建一个新的测试文件testfile2,该文件路径为httpd进程的工作目录下,如下所示:

  1. #touch /var/www/html/testfile2

(3)使用ls -z命令来查看新创建的文件的SELinux上下文信息,如图2所示:

图2  使用ls-Z命令查看新创建文件的SELinux上下文信息

从上述结果中可以清楚看到:Linux用户默认运行在非限制域中,所以testfile2文件上下文信息标识为unconfined_u。并且,RBAC用于进程,而不是文件。另外,对于文件来说角色也没有特别的含义,因此赋予其object_r为较为通用的角色。而httpd_sys_content类型则允许httpd进程对该文件进行访问。

(4)采用chron命令暂时对文件的标识进行改变。一旦系统重启,该改变将会失效。若要永久改变文件的标识,可以采用semanage命令进行操作。使用root用户身份,运行如下命令来将文件类型改为由Samba服务器可访问的类型:

  1. #chcon -t samba_share_t /var/www/html/testfile2

然后,采用ls -z命令来查看修改后的结果:

  1. # ls -Z /var/www/html/testfile2
  2. -rw-r--r--  root root unconfined_u:object_r:samba_share_t:s0 /var/www/html/testfile2

(5)在将httpd进程从限制修改为非限制之前,需要将该进程停止,使用如下命令:

  1. #/sbin/service httpd stop

(6)以root用户身份运行如下命令,来改变httpd进程的类型,以将其从限制改为非限制:

  1. #chcon -t unconfined_exec_t /usr/sbin/httpd

然后,使用ls -z命令来查看进程,以确保修改生效,如下所示:

  1. # ls -Z /usr/sbin/httpd
  2. -rwxr-xr-x  root root system_u:object_r:unconfined_exec_t:s0 /usr/sbin/httpd

(7)为了使httpd在运行时该修改生效,需要重新启动httpd进程,如图6-22所示:

(8)采用ps -ez | grep httpd命令来查看httpd进程运行在非限制域中的情况,如图3所示:

图3  启动httpd进程并查看

(9)在有权限许可的目录下,运行如下命令来测试httpd进程运行在非限制情况下的效果,如图4所示:

图4  wget命令成功执行

上述的运行结果显示,该命令能够成功运行。虽然httpd进程原来没有访问标记为samba_share_t类型文件的权限,然而由于修改,httpd进程现在运行在非限制环境下(unconfined_t),所以SELinux转为执行DAC机制,而wget命令可以访问该文件,所以成功执行。

(10)测试结束后,需要使用如下命令来恢复该httpd进程本来的运行限制:

  1. #restorecon -v /user/sbin/httpd

然而,采用如下命令来进行查看,发现httpd进程又从非限制状态恢复为限制状态:

  1. # ls -Z /usr/sbin/httpd
  2. -rwxr-xr-x  root root system_u:object_r:httpd_exec_t:s0 /usr/sbin/httpd

(11)使用如下命令重新启动httpd,以时修改在httpd进程运行时生效,并通过ps -ez命令来查看进程的运行状态,如图5所示:

  1. #/sbin/service httpd restart
  2. # ps -eZ | grep httpd
  3. unconfined_u:system_r:httpd_t:s0 2963 ?        00:00:00 httpd
  4. unconfined_u:system_r:httpd_t:s0 2965 ?        00:00:00 httpd
  5. unconfined_u:system_r:httpd_t:s0 2966 ?        00:00:00 httpd
  6. unconfined_u:system_r:httpd_t:s0 2967 ?        00:00:00 httpd
  7. unconfined_u:system_r:httpd_t:s0 2968 ?        00:00:00 httpd
  8. unconfined_u:system_r:httpd_t:s0 2969 ?        00:00:00 httpd
  9. unconfined_u:system_r:httpd_t:s0 2970 ?        00:00:00 httpd
  10. unconfined_u:system_r:httpd_t:s0 2971 ?        00:00:00 httpd
  11. unconfined_u:system_r:httpd_t:s0 2972 ?        00:00:00 httpd
  12. unconfined_u:system_r:httpd_t:s0 2973 ?        00:00:00 httpd

图5  恢复httpd进程的运行限制

到此为止,上述例子详细的演示了SELinux是如何通过限制进程的运行来保证Linux系统安全的,也看到了如果将进程改为unconfined运行状态的安全隐患,因此提醒广大用户在实际应用过程中切忌不要随便将进程默认的限制运行状态改为非限制状态,以免给Linux系统带来不必要的麻烦和安全隐患。

二、管理限制和非限制用户

在前面的介绍中曾经提到过,每个传统的Linux用户在SELinux中都被映射为一个SELinux用户。这使得Linux用户能够继承在SELinux用户上的访问控制。用户可以使用semanage login -l命令来查看两类用户之间的具体映射情况,如图6所示:

图6  使用semanage命令查看用户映射

举个例子,在Fedora 10中,Linux用户默认被映射到SELinux的_default_login中,从而映射为unconfined_u用户类型。

下面通过一个更加具体的在SELinux中添加新用户的例子,来说明SELinux是怎么来映射Linux用户的。该例子的具体操作步骤如下,如图7所示:

图7  在SELinux中添加新用户

(1)以root用户身份,运行useradd命令,添加一个新用户liyang:

  1. #useradd liyang

(2)以root用户身份,运行passwd命令,修改该用户的密码:

  1. #passwd liyang

(3)退出当前的root运行身份,以liyang的身份重新登录Linux。重新登录后,SELinux将为用户liyang生成SELinux上下文,查看该用户的上下文:

  1. # id -Z
  2. unconfined_u:unconfined_r:unconfined_t:s0

可以清楚地看到,当Linux添加一个新用户时,SELinux将默认地映射该用户为unconfined_u类型,角色为unconfined_r,以及unconfined_t级别。

限制和非限制用户都需要接受可执行和可写的内存检查,并且受MCS和MLS机制的约束。如果一个非限制的用户执行了一个从unconfined_t域向一个允许的域转变的应用程序,非限制用户仍要接受那个转表到的域的限制。这个就保证了即使一个用户是非限制的,这个应用也是受限的,因此,软件的漏洞所引起的风险就能得到限制

SELinux进阶篇 应用目标策略管理非限制进程和用户相关推荐

  1. 谈身份管理之进阶篇 - 快速了解从管理到治理的最佳方案

    简介: 云上身份安全是当今企业管理者和云上运维团队所面临的挑战之一,针对云上身份管理不全面所产生的风险究竟又哪些?又应当如何应对?本文将结合案例和最佳实践与您分享. 引言 云上身份安全是当今企业管理者 ...

  2. OpenCV进阶篇视频

    OpenCV进阶篇01 第14章 视频处理 OpenCV不仅能够处理图像,还能够处理视频.视频是由大量的图像构成的,这些图像以固定的时间间隔从视频中获取.这样,就能够使用图像处理的方法对这些图像进行处 ...

  3. 视频教程-C语言程序设计--进阶篇教学视频-C/C++

    C语言程序设计--进阶篇教学视频 烟台大学计算机学院教师,二十年余教师生涯,看出了在错综复杂的教育环境中,坚持教育教学的价值与前景.和学生并肩,与不良学风作斗争,为IT菜鸟建跑道,让大一的孩子会编程, ...

  4. 【翻译】宣布Kubernetes策略管理论文

    作者:吉姆-布格瓦迪亚 1月28日,2022年 社区帖子 作者:Jim Bugwadia CNCF Kubernetes安全特别兴趣小组(SIG)和策略工作组(WG)刚刚发布了一篇关于Kubernet ...

  5. 应用SELinux中的目标策略限制进程运行

    原文请见:http://netsecurity.51cto.com/art/201110/295978.htm 一.安装SELinux相关的安装包 虽然在有的Linux发行套件中已经缺省安装了SELi ...

  6. Linux进阶篇--磁盘分区管理

    Linux进阶篇–磁盘分区管理 11.1 磁盘基础介绍 设备文件 * I/O Ports:I/O设备地址 * 设备类型:   块设备:block,存取单位"块",来自于磁盘   字 ...

  7. 项目目标的管理策略与方法︱项目目标管理专题

    本文内容结构 一.项目目标的管理策略 1.战略目标与项目目标 2.理解目标的功能与意义 (1)导向功能 (2)激励功能 (3)协调功能 (4)凝聚功能 (5)评价功能 3.目标管理的基本思想 4.目标 ...

  8. java计算最小公差数_进阶篇:5.1.1)确认公差分析的目标尺寸和判断标准

    本章目的:找到一个产品所有的公差分析目标,并定下判断基准. 1.前言 有需求才有公差分析,我的需求就是:整个产品的公差分析一个都不能少--作者. 这一章就是给出一个产品所有公差分析的目标值的方法. 2 ...

  9. DEV01-GBase 8a MPP Cluster SQL 编码进阶篇

    GBase 8a MPP Cluster SQL 编码进阶篇 一.概述: 二.常用内置函数 (一)函数体系 (二)内置函数的基本概念: (三)内置函数的使用位置: (四)内置函数概览 (五)数学函数 ...

最新文章

  1. Java 程序员必须掌握的 5 个注解
  2. FreeMarker笔记 前言第1章 入门
  3. 马匹赛跑java_java模拟龟兔赛跑
  4. 解密 Go interface 的类型转换原理
  5. python32什么意思_“python2”和“python3”有什么区别?
  6. power bi dax_M语言和Power BI中的DAX之间的差异
  7. oracle安装过程中内核参数详解
  8. 腾讯x5内核(TBS)简单集成封装
  9. 无法删除文件,无法读源文件或磁盘:U盘文件夹乱码无法删除的原因及解决方案...
  10. pdf复制文字时对于回车的处理
  11. 【Windows】合并分区教程(解决C盘空间不足)
  12. processing图片粒子化_谈谈文字图片粒子化
  13. python—networkx:画随机几何图,找出中心节点并按路径长度染色
  14. es6中symbol详解
  15. python处理adb截屏_《自拍教程38》Python_adb一键截屏
  16. Excel学习笔记:P33-来自2/8法则的神奇图表,让自己+公司的绩效事半功倍!
  17. Python——from collections import namedtuple
  18. HNUST 计算机组成原理课设
  19. ASP.NET Zero 11.1.0
  20. Django删除数据表后,再重新生成新数据表

热门文章

  1. Android studio | From Zero To One ——安装教程及前期学习总结
  2. svm训练完保存权重_assignment1-SVM
  3. 有关信号处理中的 窗函数
  4. Windows消息机制(MFC)
  5. python3.7安装pygal_pip和pygal的安装实例教程
  6. python xlwt写入数据超过范围限制_python的xlwt不能正确写入以及缓冲区问题
  7. MySQL 笔记6 -- 函数与事务
  8. python3精要(50)-二分法解一元方程
  9. tensorflow随笔-tf.ReaderBase
  10. AtCoder Beginner Contest 215 E - Chain Contestant