一、管理非限制流程
非限制过程在非限制域运行。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如下所示:
(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可访问服务器类型:
然后,采用ls -z检查修改后的结果:
(5)在将httpd在将过程从限制修改为非限制之前,需要停止使用以下命令:
(6)以root用户身份操作以下命令来改变httpd从限制到非限制的过程类型:
然后,使用ls -z命令检查过程,确保修改生效,如下所示:
(7)为了使httpd在运行过程中,需要重新启动修改生效httpd进程,如图6-22所示:
(8)采用ps -ez | grep httpd命令来查看httpd进程运行在非限制域中的情况,如图3所示:
图3 启动httpd进程并查看#p#
(9)在有权许可的目录下,运行以下命令进行测试httpd如图4所示:
图4 wget成功执行命令
根据上述操作结果,该命令可以成功运行。httpd过程原来没有访问标记samba_share_t但由于修改,类型文件的权限,httpd工艺现在在非限制环境下运行(unconfined_t),所以SELinux转为执行DAC机制,而wget命令可以访问文件,因此成功执行。
(10)测试结束后,需要使用以下命令恢复httpd过程原有的运行限制:
但是,使用以下命令进行检查,发现httpd过程从非限制状态恢复到限制状态:
(11)重新启动下列命令httpd,以时修改在httpd过程运行时生效ps -ez如图5所示:
图5 恢复httpd限制操作过程
到目前为止,上述示例已详细演示SELinux如何通过限制过程的运行来保证Linux如果系统安全,我们也可以看到,如果过程改为unconfined运行状态的安全隐患提醒用户在实际应用过程中不要将默认限制运行状态改为非限制状态,以免给予Linux系统带来不必要的麻烦和安全隐患。
二、管理限制和非限制用户
正如前面的介绍中提到的,每一个传统都是如此Linux用户在SELinux都被映射成一个SELinux用户。这使得Linux用户能够继承在SELinux用户访问控制。用户可以使用semanage login -l命令查看两类用户之间的具体映射,如图6所示:
图6 使用semanage命令查看用户映射#p#
例如,在Fedora 10中,Linux默认映射用户SELinux的_default_login中,从而映射为unconfined_u用户类型。
下面通过更具体的方式SELinux添加新用户的例子来解释SELinux如何映射?Linux用户的。具体操作步骤如图7所示:
图7 在SELinux添加新用户
(1)以root用户身份,操作useradd添加新用户的命令liyang:
(2)以root用户身份,操作passwd修改用户密码:
(3)退出当前root操作身份,以liyang重新登录身份Linux。重新登录后,SELinux将为用户liyang生成SELinux查看用户的上下文:
当Linux添加新用户时,SELinux默认映射用户为unconfined_u类型,角色为unconfined_r,以及unconfined_t级别。
限制和非限制用户需要接受可执行和可写的内存检查,并接受MCS和MLS机制的约束。如果一个非限制用户执行从unconfined_t域向允许域转换的应用程序,非限制用户仍然需要接受转表到域的限制。这确保了即使用户是非限制的,该应用程序也是有限的,因此软件漏洞造成的风险可以受到限制
【51CTO.com独家特稿未经授权拒绝转载!合作媒体转载请注明原文的来源和来源!】