基于内核2.6Linux操作系统环境,阐述SELinux的工作原理,分析安全的上下文格式及作用、安全策略的设置、SELinux灵活配置服务、从而提高Linux网络操作系统的安全性。 关键词:操作系统;
4006-054-001 立即咨询发布时间:2022-10-05 10:02 热度:
基于内核2.6Linux操作系统环境,阐述SELinux的工作原理,分析安全的上下文格式及作用、安全策略的设置、SELinux灵活配置服务、从而提高Linux网络操作系统的安全性。
关键词:操作系统;主体对象;安全上下文;信息安全
随着互联网的迅猛发展,Linux操作系统作为云计算、大数据操作系统平台,占据了核心优势,据Linux基金会的统计,86%的企业使用Linux作为操作系统平台,如何保证企业平台连续、可靠、安全地运行,面临着严重的威胁与挑战[1]。本文从SELinux的角度阐明其工作原理、配置、管理、应用,以此保证Linux中各种应用服务的安全运行。
1SELinux工作原理
SELinux的全称SecurityEnhanceLinux,是一个集成在linux内核中的一个安全模块,可以根据需要启用或关闭它。它有别于传统的DAC思想:进程理论上所拥有的权限与执行它的用户的权限相同。而SELinux是基于MAC强制访问机制的安全模型,也就是一个进程对具体文件访问权限是由SELinux安全策略库文件中完成定义,当一个用户运行一个程序访问文件系统资源时,通过系统资源的上下文进行区分,只有进程主体的上下文与访问对象的上下文匹配时,才能访问此资源,它适用于应用服务要求较高的Linux环境,能够防止黑客通过应用程序的漏洞来破坏操作系统环境。SELinux将进程(进程是程序运行的实体)称为主体,每一个进程都有一个类型标识,称之为域。将所有可以访问的对象,包括目录、文件、进程、设备等称为对象,每一个对象都有一个类型标识。主体和对象通过类型标识符关联,要访问某个对象,主体类型必须为对象类型授权。另外,SELinux规则指定每一个用户可以赋予不同的角色,在任何环境中,用户可以从一种角色转换为另外的一种角色,通过角色的授权,而进程的运行需要有用户账号,这样,可以通过操作的域来控制对程序的访问。其访问控制流程如图1所示。当一个主体,比如一个进程,要访问一个对象。如文件,首先进程需要和SELinux中定义好的策略进行匹配,如果符合,则允许访问。此时,进程的安全上下文和文件资源的安全上下文进行比较,如匹配,则请允访问,否则通过访问向量缓存AVC(AccessVectorCache),生成拒绝访问信息。这些信息会被记录到日志文件中,这样有利于故障的分析与排查。当然,用户能否访问资源,还与Linux的默认权限有关,已即要求这个用户的进程符合SELinux的规定,也要求这个用户的权限符合rwx权限。为了达到灵活运用SELinux管理应用程序的安全,可以通过修改对象(文件等资源)的安全上下文,使得与其访问它的主体(进程)的安全上下文匹配。
2SELinux安全上下文
SELinux中,安全上下文被定义为安全控制访问属性,SELinux的所有对象和主体都与其上下文关联,上下文提供了被用户、角色、类型和可选的级别等信息。当启用SELinux服务时,这些信息将决定访问控制。SELinuxuser用于标识用户身份,通常以_u作为后缀,表明资源对象的拥有者。可以通过seinfo-u命令查看身份类型,其中,System_u表示系统账号身份,user_u表示普通用户无特权的身份,root表示root身份,unconfined_u表示未配置的用户身份等。通常搭配角色使用,每个普通用户运行程序时都会被映射到SELinuxuser。role角色表明此对象是进程还是文件或者目录等,可用seinfo–r查看资源的类型,通常以_r作为后缀。object_r一般为文件目录的角色、system_r一般为进程的角色。Type类型用于标识对象的类型,通常以_t作为后缀,对于主体的类型,被称为域domain,对文件或目录的类型被称这为type,default_t表示默认类型,boot_t表示引导文件类型,http_t表示服务类型等。它是一个进程能否访问一个资源的关键。当进程的类型和资源的类型规则相匹配的时候就能访问。否则,就会被拒绝。Level级别是MLS/MCSR的一个属性。格式为“低级-高级”,每一个级别是一个“敏感度-类别”,其中类别可选。一般是用s0、s1、s2来命名的,数字代表灵敏度的分级。数值越大,代表灵敏度越高。
3SELinux安全策略
安全策略是用来定义主体访问对象的规则数据库,其功能类似于互联设备中的ACL规则集合。目前有targeted和MLS两类安全策略。(1)targeted策略。targeted策略是最常用的SELinux策略。该策略只能保护指定的守护进程或常用的服务程序。在使用此策略时,列入目标进程运行在受限域内,未列入目标的进程运行在未配置域内。这个类似于行政区域管理,某一个行政区域只能管理自己管辖的范围,信访部门只能接待信访工作并处理,不能跨越自己的工作范围,除非得到了授权,也即修改了对象的安全上下文。(2)MLS策略。MLS策略实施Bell_LaPadula强制访问模型,用于标记安全保护配置文件环境。它具有向上读取和向下写入的两个属性。如图2所示,说明运行在机密安全级下的主体和不同安全对象之间可允许的数据流,进程可以读取同级和更低级别的对象,只能写入同级或更高级别的对象。可以通过配置文件/etc/selinux/config中SELINUXTYPE选项来指定策略的类型。有三种选择,默认值为targeted,表示使用target策略;minimum,表示使用targeted策略的修改版,仅保护选定的进程;mls,表示使用MLS策略。
4SELinux管理操作
(1)启用SELinux。要使用SELinux安全机制,必须先启用SELinux,它支持三种运行模式,即强制、允许、禁用。①强制执行安全策略,只要违反SELinux安全策略,就被禁止访问。②允许执行,则系统发出警告,但并不强制执行安全策略,可以用于故障排除,因为系统记录更多的拒绝信息。③禁用模式,则完全禁止SELinux,将SELinux模块从内核中剥离。可以通过修改/etc/selinux/config中的SELinux选项来设置运行模式。(2)使用布尔值管理SELinux策略。在SELinux安全策略库中,预定义了一些默认的规则,可以通过修改SELinux布尔值来启用或禁用定义的规则,使其立刻生效。(3)标记文件。当启用了SELinux模块后,所有进程和文件都需要进行标记以提供安全的相关信息,即安全上下文,对文件来讲,主要标记其文件的类型。在创建指定的文件夹中创建新文件将继承其父目录的标记类型。(4)管理受限的用户。所有linux用户都要映射到SELinux用户上,默认情况下,它被映射到unconfined_u,由unconfined_u运行的所有进程在unconfined_t域中,意味着用户访问系统受标准DAC策略限制。但在实际应用中,有很多用户访问能力需要限制在特定范围内。如usrer_u运行进程在user_t域中,只允许它连接网络,不能执行切换用户命令,以引保护系统遭受一些用户的侵害。(5)管理受限的服务。在SELinux模块中,控制某一个服务在指定的域中运行,这些服务就是受限的服务。意味着进程只能访问指定域中的资源。在tarteted策略中,可以通过修改类型来调整安全策略,如http服务可以读取文件类型是httpd_sys_content_t,默认情况下只有/var/www/html目录符合要求。
5结语
SELinux增强安全性控制,有别于Linux传统DAC安全访问控制,他不再基于用户和及权限来控制对资源的访问,而是进程。SELinux的规则策略来确定进程能够访问哪个文件资源,确定了文件资源可以被哪些进程访问。可以通过修改安全上下文,使得访问进程的主体的安全上下文与被访问的对象的安全上下匹配,从而控制进程对资源的访问,防止黑客利用应用程序的漏洞修改操控Linux操作系统环境,提高了操作系统的安全性。
参考文献
[1]石淑华.计算网络安全技术[M].北京:人民邮电出版社,2018
作者:黄辉德