ImageVerifierCode 换一换
格式:DOC , 页数:89 ,大小:263.50KB ,
资源ID:3316748      下载积分:16 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/3316748.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(SELinux概述.doc)为本站上传会员【a199****6536】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

SELinux概述.doc

1、 SELinux使用了分级的强制访问控制,是Linux内核的重要安全措施。SELinux的安全策略工具可从 3.1  SELinux概述 SELinux是安全增强了的Linux,是Security-enhanced Linux的简写,SELinux改进了对内核对象和服务的访问控制,改进了对进程初始化、继承和程序执行的访问控制,改进了对文件系统、目录、文件和打开文件描述的访问控制,还改进了对端口、信息和网络接口的访问控制。 早期的Linux内核只提供了经典的UNIX自主访问控制(root用户,用户ID,模式位安全机制),以及部分地支持了POSIX.1e标准草案中的capabi

2、lities安全机制,这对于Linux系统的安全性是不够的,NSA(the National Security Agency)和SCC(Secure Computing Corporation)共同开发了强大的基于类型加强(Type Enforcement)的强制访问控制(mandatory access control,简称MAC)机制,提供了动态的安全策略机制。 Linux内核增加了一个通用的安全访问控制框架,它通过hook函数来控制程序的执行,这个框架就是Linux安全模块(LSM),在LSM上可使用各种安全控制机制(如:Flask机制)来实现对程序的控制。 SELinux应用了类型

3、加强(Type Enforcement,TE)和基于角色访问控制(role-based access control,RBAC)技术。 TE给每个主体(进程)和系统中的客体定义了一个类型,这些类型定义在SELinux的安全策略文件中,以安全标签形式存放在文件本身的扩展属性(extended attributes,简称xattrs)里。 当一个类型与一个进程相关时,这个类型称为域(domain),例如:后台进程httpd的域为httpd_t。 主体(subject)对客体(object)的操作在SELinux中默认下是不允许的,而由策略定义允许的操作。TE使用主体的域和客体类型从策略文件中

4、查找操作许可。例如:策略中的一条规则如下: allow httpd_t net_conf_t:file { read getattr lock ioctl }; 这条规则表示httpd_t域对net_conf_t类型客体的文件有“{}”中所表示的操作权限。 SELinux的访问控制规则存放在安全策略文件中,策略文件分为二进制和源代码文件,源代码以策略配置语言的形式描述,由编程者创建和维护。源代码经策略配置工具编译后生成二进制文件。二进制策略被装载到内核空间,形成在内存中的策略库及缓存,内核就可以使用访问控制规则了。 SELinux可以实现非常小颗粒的访问控制,这些细小颗粒的访问控制也造

5、成了安全策略的复杂性。 Linux内核的SELinux安全体系由Flask和LSM框架共同组成,LSM是由hook函数组成的安全控制框架,Flask框架将SElinux的策略规则转换成访问控制许可。 在安全策略配置语言中经常用到的名称术语说明如下。 subject 主体,常指一个进程 object 客体,常指一个文件 object class客体的类 permission 许可 context上下文 user  用户 role  角色 type 类型 Type Attributes 类型属性 Type Enforcement 类型增强 dormain 域,它是一个进程

6、的类型 source type  源类型 target type  目标类型 labeling  标识 access vector cache (AVC) 访问向量缓存 access decision 访问决策 3.1.1  Linux与SELinux在安全管理上的区别 在传统的Linux自由访问控制(Discretionary Access Controls,DAC)之后,SELinux在内核中使用强制访问控制机制(MAC)检查允许的操作。 在DAC下,文件客体的所有者提供了客体上的潜在风险控制。用户可以通过错误配置的chmod命令和一个非期望的访问权限传递,暴露一个文件或

7、目录给一个恶意信任者。这个用户启动的进程,如:CGI脚本,可在这个用户拥有的文件做任何的操作。 DAC实际上仅有两个主要的用户分类:管理者和非管理者。为了解决权限分级,它使用了访问控制列表(access control lists,简称ACL),给非管理者用户提供不同的权限。而root用户对文件系统有完全自由的控制权。 MAC访问控制框架可以定义所有的进程(称为主体)对系统的其他部分(如:文件、设备、socket、端口和其他进程,它们被称为客体或目标对象)进行操作的权限或许可。这些许可由进程和客体的安全策略来定义,通过内核实现控制。这种方式可给一个进程仅授予操作所需要的权限,这遵循了最小权

8、限原则。在MAC下,即使用户用chmod暴露了他们的数据,但进程还是无法修改在策略中没有许可的文件。 DAC和MAC分别使用自己的访问控制属性,两者独立,但都必须通过权限检查。它们的区别有以下二个: 1.在主体的访问控制上: DAC:真实有效的用户和组ID MAC:安全上下文(user:role:type) DAC和MAC的UID是独立的。 2.在客体的访问控制上: DAC:(文件)访问模式(rwx r-x r-x)和用户及组ID MAC:安全上下文(user:role:type) 3.1.2  Flask安全框架概述 1.Flask框架对操作许可的判定过程 图3-1描述

9、了Flask框架,图中,一个主体进程对系统中的客体(如:设备文件)进行操作,如:读写文件。这个操作通过DAC权限检查之后,再进行SELinux的权限检查。在DAC检查中,主体通过基于ACL常规文件权限获得了对客体的操作许可。SELinux权限检查的过程如下: 策略强制服务器(policy enforcement server)从主体和客体收集安全上下文,并发送安全上下文标签对给安全服务器(security server),安全服务器负责产生策略的决策。 策略强制服务器首先检查AVC,如果AVC有高速缓存的策略决策,它返回决策给策略强制服务器。如果没有,它转向到安全服务器,安全服务器使用系统

10、初始化期间装载到内核的二进制策略作出决策,将决策放到AVC的cache中进行缓存,并将决策返回给策略强制服务器。 如果决策为允许操作,则主体对客体进行操作,否则,操作被禁止,禁止操作信息被记录到log文件,log文件一般为/var/log/messages。   图3-1  Flask框架 安全服务器产生策略决策的同时,强制服务器处理任务的其他部分。从这个角度来看,强制服务器部分可以看作客体管理器,客体管理包括用安全上下文件标识客体、管理内存中的标签、管理客户端和服务器的标识行为。 2.Flask框架组成说明 Flask安全体系结构由客体管理器和安全服务器组成。客体管理器实施安全策

11、略的判定结果,安全服务器作出安全策略的判定。 Flask安全体系结构提供从安全服务器检索访问、标记和多例化判定的接口。访问判定指主体对客体操作的一个权限是否得到批准。标记指分配给一个客体的安全属性标签。多例化判定指一个特定的请求应该从多例化资源中选取哪一个。 Flask安全体系结构还提供一个访问向量缓存(AVC)模块,该模块允许从客体管理器缓存中直接取出缓存的判定结果,以提高执行速度。 Flask框架的安全服务器的安全策略由四个子策略组成:多级安全(MLS)策略、类型加强(TE)策略、基于标识的访问控制(IBAC)策略和基于角色的访问控制(RBAC)策略。安全服务器提供的访问判定必须满足

12、每个子策略的要求。 安全服务器定义了一个由类型加强(TE)策略、基于角色的访问控制(RBAC)策略和多级安全(MLS)策略组合成的策略决策系统。其中,TE和RBAC策略是安全策略的必要部分,MLS策略是可选的,当内核配置选项CONFIG_FLASK_MLS打开时,系统提供MLS策略支持。 Flask体系结构为安全标记定义了两个独立于策略的数据类型:安全上下文(context)和安全标识符(SID)。安全上下文是由可变长字符串表示的安全标记,存在于文件的扩展属性中。 SID是被安全服务器映射到对应安全上下文的整数。Flask 客体管理器负责将安全标签绑定到客体上、绑定SID到内核对象上。

13、 一个安全上下文(或称为标签)由用户ID、角色、类型和可选的MLS分级属性或分类属性组成。角色仅与进程相关,因而文件安全上下文有一个通用的object_r的角色。安全服务器仅为安全上下文提供SID。 SELinux系统提供一个与安全服务器相配套的安全策略配置语言,该语言用于对安全服务器中安全策略的配置进行描述。策略配置语言描述的规则策略存于策略文件中,策略文件源代码由工具编译成二进制策略文件,安全服务器在引导时读取二进制形式策略文件,形成策略库。 3.MLS分级机制 MLS(Multi-Level Security)机制给用户提供了可以用不同等级的安全水平来访问系统。例如:MLS安全分级

14、从低到高为Confidential、Secret、Top Secret和Individuals,不同级别可查看不同的分类信息。低级别不可查看高级别的文档。 SELinux支持分级保护数据,它使用BLP(Bell-LaPadula Model:BLP)模型,这个模型定义了系统内的信息是如何基于粘附在每个主体和客体的标签来进行流动的。如:在Secret级别的用户可与其他同级别用户共享数据,并能提取来自Confidential级(比Secret级低)的信息。但在Secret级别的进程不能查看Top Secret级别(比Secret级高)的数据。它还阻止高级别进程随便给低级别的数据写入信息。即“不能

15、读较高级别的数据,不能写较低级别的数据”模型。 在多级别系统中,高级别用户不自动获得管理者权限,但它们对计算机上的所有信息可以有访问权。 安全上下文中,主体和客体用安全级别(Security Levels,SL)标识,SL由敏感属性和分类属性组成。Sensitivity(敏感属性)是安全体系的属性,它将数据等分成不同安全级别,如:“Secret”或“Top Secret”。Categories(分类属性)是一套非体系的属性,如:“US Only”或“UFO”,表示仅US使用。分类属性将数据分隔成几个独立的小组,每个小组可归属于不同的用户等。 一个SL必须有一个敏感属性和0个或多个分类属性

16、例如:SL是{ Secret / UFO, Crypto }、{ Top Secret / UFO, Crypto, Stargate } 或{ Unclassified }。体系的敏感属性跟踪着0个或多个分类属性,因为敏感属性还可以分隔成彼此独立的分类属性。 客体上的安全级别称为分级(Classifications),主体上的安全级别称为Clearances。 3.1.3  安全模块(LSM)框架 为了加入安全机制,Linux内核从以下五个方面进行了修改: 1.在内核的构件描述数据结构中加入了安全域。 2.在内核不同的构件中加入了对安全钩子函数的调用。 3.提供了通用安全模

17、块。 4.将capabilities逻辑的大部分移植为一个可选的安全模块。 5.加入了安全系统调用。 安全域是一个void*类型的指针,它指向安全模块操作函数,从而将安全信息和内核对象联系起来。下面列出加入了安全域的内核数据结构: task_struct  进程结构 linux_binprm  二进制程序运行结构 super_block  文件系统超级块结构 inode    文件系统节点结构,表示文件、目录、管道、设备文件或socket套接字 file  打开的文件结构 sk_buff  网络包缓冲区结构 net_device  网络设备结构 ke

18、rn_ipc_perm    IPC(进程间通信)权限结构 msg_msg:消息结构 Linux安全模块(LSM)提供了各种安全钩子(hook)函数,都在全局类型security_operations结构中,这些函数管理内核对象的安全域,仲裁对这些内核对象的访问。Linux安全模块提供了一个通用的安全系统调用,允许安全模块为安全相关的应用编写新的系统调用。 在内核引导的过程中,Linux初始化了一系列的虚拟钩子函数,当加载一个安全模块时,使用register_security()函数注册安全模块:这个函数将设置全局表security_ops,使其指向安全模块的钩子函数指针,从而内核可向

19、这个安全模块询问访问控制决策。 Linux安全模块将capabilities能力机制移植到安全模块中,保留了对原有使用capabilities的应用程序的支持。 Linux安全模块的钩子函数包括任务钩子、程序装载钩子、进程间通信IPC钩子、文件系统钩子、网络钩子及模块钩子和顶层的系统钩子。 3.1.4  内核SELinux的组织结构 SELinux模块由安全服务器、AVC(Access Vector Cache)、网络接口表、netlink事件通知代码、selinuxfs伪文件系统和hook函数应用六个部分组成。安全服务器为获得安全策略决定提供通用接口,使模块的其余部分保持独立的安全

20、策略。这些接口定义在include/security.h中,安全服务器的特定应用能在不改变模块其他部分的情况下被改变。 安全服务器的应用有RBAC(基于角色的访问控制Role-Based Access Control)、TE(类型加强Type Enforcement)的生成和可选的MLS(多级安全Multi-Level Security)。其中,RBAC和TE策略是高度可配置的,能用于许多不同的安全对象。安全服务器的源代码在security/selinux/ss目录下载。 AVC提供了从安全服务器获得的访问策略的缓冲区(cache),提高了安全机制的运行性能。它提供了hook函数高效检查授

21、权的接口,提供了安全服务器管理cache的接口。与hook函数的接口定义在include/avc.h中,与服务器的接口定义在include/avc_ss.h中,AVC代码在avc.c中。 网络接口表将网络设备映射到安全上下文中。维护一个独立的表是必要的,因为LSM网络设备没有安全成员。当网络设备被hook函数第一次查找到时该网络设备就被加入到这个表中,当设备被设置取消或策略重载时移出这个表。网络接口表提供了查找hook函数以及获得网络设备条目引用或释放引用的接口函数。该接口定义在include/netif.h中,回调函数在设备配置变化或策略重载时注册。网络接口表的代码在netif.c中。

22、netlink事件通知让SELinux模块在策略重载以及强制状态改变时通知进程。这些通知被用户空间的AVC(libselinux的一部分)用来保持与内核一致的状态。用户空间AVC被用户空间策略强制器(enforces)使用,代码在netlink.c中。 Selinux伪文件系统给进程提供安全服务器的策略API。selinux提供基于策略API的调用,它包括进程属性、文件属性和策略API三个部分,并被高层的libselinux API封装起来,代码在selinuxfs.c中。 hook函数应用管理与内核对象相关的安全信息以及执行内核每个操作的访问控制。hook函数调用安全服务器和AVC得到安

23、全策略并运用这些策略来标识和控制内核对象。hook函数还调用文件系统扩展属性代码获得和设备文件上面的安全上下文。hook函数在hooks.c中,与内核对象相关的安全信息的数据结构定义在include/objsec.h中。SELinux安全模块及接口如图3-2所示。   图3-2  SELinux安全模块及接口 linux内核对于程序的运行、文件系统的超级块和节点以及文件操作、任务操作、网络连接、socket、System V进程间通信等提供了对应安全操作函数,这些函数指针都放在安全操作函数结构中,由于结构很大,这里只列出了程序运行的操作函数指针,这些操作函数指针的前缀bprm是bin

24、program的缩写,其他的操作函数具有类似结构。 security_operations安全操作函数结构在include/linux/security.h中,分析如下: struct security_operations {      int (*ptrace) (struct task_struct * parent, struct task_struct * child);      int (*capget) (struct task_struct * target,                     kernel_cap_t * effective,       

25、               kernel_cap_t * inheritable, kernel_cap_t * permitted);      int (*capset_check) (struct task_struct * target,                         kernel_cap_t * effective,                         kernel_cap_t * inheritable,                         kernel_cap_t * permitted);      void (*capse

26、t_set) (struct task_struct * target,                        kernel_cap_t * effective,                        kernel_cap_t * inheritable,                        kernel_cap_t * permitted);      int (*acct) (struct file * file);      int (*sysctl) (ctl_table * table, int op);      int (*capable)

27、struct task_struct * tsk, int cap);      int (*quotactl) (int cmds, int type, int id, struct super_block * sb);      int (*quota_on) (struct file * f);      int (*syslog) (int type);      int (*vm_enough_memory) (long pages);      int (*bprm_alloc_security) (struct linux_binprm * bprm);     

28、void (*bprm_free_security) (struct linux_binprm * bprm);      void (*bprm_apply_creds) (struct linux_binprm * bprm, int unsafe);      int (*bprm_set_security) (struct linux_binprm * bprm);      int (*bprm_check_security) (struct linux_binprm * bprm);      int (*bprm_secureexec) (struct linux_bin

29、prm * bprm);             …… } security_operations的结构很大,这里只列出了很少的一部分,下面就一些成员函数说明如下: bprm_alloc_security:分配或附加上一个security结构到bprm->security成员上,操作成功时返回0。 bprm_free_security:释放或删除bprm->security field成员上的security结构。 bprm_apply_creds:计算或设置进程的安全属性,这个进程是由execve操作生成的,这个操作是基于旧属性(当前进程的安全属性current->securi

30、ty)和被set_security 函数设置存在bprm->security 里的信息。由于set_security 函数是void类型,这个函数不能返回错误,如果属性设置失败,则安全属性值不会被改变。 bprm_apply_creds:函数在任务锁住的情况下被调用,参数unsafe表示可能不安全地转换安全状态的各种原因。 bprm_set_security:将安全信息存放到bprm->security 成员中。 bprm_check_security:检查set_security 调用时设置的值是否设置到bprm->security中,返回0表示已授予设置的权限。 bprm_secu

31、reexec:返回值是1或0,表示是否是安全运行,这个标识传进ELF解释器的初始堆栈上的补充表里,用来表示libc是否能使用安全模式。 3.2  SELinux策略配置语言 策略是一套指导SELinux安全引擎计算安全决策的规则,它定义了文件客体的类型、进程的域、使用限制进入域的角色及访问许可的规则表达式等。策略的源代码用SELinux配置语言进行描述。 3.2.1  基本概念 1.主体和客体 主体(subject)和客体(object)是指系统中的元素,主体是访问客体的进程,客体是系统中的一类实体,在系统中定义好了30种不同的客体类别(class),每个class有定义好的许可。

32、 在/etc/security/selinux/src/policy/flask/security_classes中有class的定义,SELinux定义了30个class,列出如下:   security process system capability filesystem     file dir fd lnk_file chr_file blk_file sock_file     fifo_file socket tcp_socke tudp_socket msgq semmsg     shm ipcnode netif netlink_socket packet_

33、socket     key_socket rawip_socket unix_stream_socket     unix_dgram_socket passwd 每个class都定义了操作许可,如:客体file有19个操作许可,列出如下:   ioctl read write create getattr setattr lock relabelfrom     relabelto  append unlink link  rename execute swapon      quotaon mounton execute_no_trans entrypoint 2.安

34、全上下文与安全标识符 SELinux给每个主体和客体定义了一个安全上下文(security context)。安全上下文是对主体或客体安全的描述,其格式为:user:role:type,如:root:sysadm_r:sysadm_t,其中root为用户ID(user),sysadm_r为角色ID(role),sysadm_t为类型(type)ID。安全上下文代表了SELinux的访问控制属性。安全标识符(security identifier,简称SID)是内核中激活的安全上下文的序号。 一般情况下,多个属性的组合形成类型,多个类型的组合形成角色,多个角色的组合形成用户。有的属性也可能覆

35、盖多个类型的范围,在安全上下文中最重要的是类型。 在文件系统中的每个文件或目录、网络的端口等都指定了一个安全上下文,安全策略则给出了各个安全上下文之间作用的规则。 例如:在policy/file_contexts/program/chroot.fc中,文件chroot的安全上下文被定义如下: /usr/sbin/chroot       system_u:object_r:chroot_exec_t 3.类型和类型属性 一个进程的类型(type)又称为域dormain,客体的角色常称为object_r。类型在策略管理中是用得最多的部分,特别是在类型增强(TE)中。用户、角色、域类型和

36、客体类型的关系图如图3-3所示,每个用户有相配的角色,角色有与用户组相关的域类型,而域类型又指定了对客体类型的访问控制权限。   图3-3  用户、角色、域类型和客体类型的关系图 类型的属性(Type Attributes)是与一组类型相关的概念。它在TE规则里可代替类型,类型、别名、类型的属性共享同一个名字空间。类型属性定义的语法如下: type type_name[aliasalias_name(s)] [,attrib1, …, attribn]; 例如:type  passwd_exec_t, file_type, sysadmfile, exec_type; 其含义是:将

37、属性file_type、sysadmfile和exec_type定义给类型passwd_exec_t。 4.TE模型和RBAC模型 TE模型给进程和客体提供了良好的颗粒控制。RBAC提供了高层次的简化用户管理。SELinux安全模型是TE模型和RBAC模型的联合体。 TE模型是支持程序运行和域转移的强大类型控制,主体为运行的进程,进程为域类型。TE访问矩阵定义了域可以访问什么类型的客体,还定义了域类型转移。SELinux类型转移或访问控制基于一对安全上下文和类型的class。 RBAC是基于角色的访问控制(Role-based Access Control)模型,传统的RBAC模型是

38、对角色进行授权,然后将一个或多个角色分配给一个授权用户。SELinux的RBAC模型是:给一个域类型指定授权,然后将域类型指定给角色,将一个或多个角色指定给一个授权用户。 例如:root:sysadm_r:sysadm_t中的sysadm_r就是角色。在每个安全上下文中有一个角色ID,对主体来说,它代表了主体当前的角色,对客体来说,角色典型值为object_r,角色对客体来说没意义。 3.2.2  TE规则的描述 主体对客体的访问在规则中需要有四个要素,分别说明如下: 源类型(source type):它是主体或者域(一个进程)的类型。 目标类型(target type):它是客体的

39、类型。 对象类别(class):它是访问申请的某一类别资源,如:file。 许可(permission):表示主体对客体访问时允许的操作类型。如:read。 TE规则是策略中的主要部分,它包括 1.属性的定义 属性(Attribute)是具有相似特征的安全类型的组,它是一项工作(如:privmodule)的域类型或者系统中一类客体的所有类型(如:proc_fs),属性是从使用者角度考虑的一项特性。 属性名可在策略配置中一直使用,属性名与类型在同一个名字空间中存在。但一个属性名不能放在安全上下文的类型的位置上。属性对可选的MLS策略来说很重要,它的定义样例如下: attribute

40、 domain;               #这个属性代表了能指定给进程的每种类型 attribute privuser;         #代表能改变它的selinux用户ID attribute privrole;       #代表能改变它的selinux角色ID attribute privmodule;   #代表能运行modprobe attribute privmem;         #代表能访问内核内存设备 attribute proc_fs;      #能指定给/proc下文件的所有类型 下面说明一些非常有用的属性: 1)httpdcontent 属性

41、httpdcontent将与Apache HTTP的策略相关的各种类型组合在一起。它帮助Apache HTTP的PHP脚本等使用httpd的带有content字符的类型。httpdcontent定义如下: # This is an aliasing relationship httpd_sys_content_t: httpd_sysadm_content_t, \   httpd_user_content_t # These types handle different permissions sets for scripts httpd_sys_script_ro_t http

42、d_sys_script_rw_t httpd_sys_script_ra_t httpd_sys_content_t是httpd_sysadm_content_t和httpd_user_content_t类型的别名。 2)file_type 属性file_type用于指定给文件的所有类型,当域访问所有的文件类型时,使用它是方便的。属性file_type包括超过170种类型,其部分类型列出如下: ... device_t xconsole_device_t file_t default_t root_t mnt_t home_root_t ... 3)属性net

43、if_type, port_type和node_type 这些属性与域的网络活动有关。netif_type表示与网络接口相关的类型,允许策略控制在一个接口的发送、接收和其他操作。它包括下面这些类型: netif_t netif_eth0_t netif_eth1_t netif_eth2_t netif_lo_t netif_ippp0_t netif_ipsec0_t netif_ipsec1_t netif_ipsec2_t port_type与指定给端口号的所有类型相关,它允许SELinux控制端口绑定,它包括下面类型: dns_port_t dhcpd_p

44、ort_t http_cache_port_t port_t reserved_port_t http_port_t pxe_port_t smtp_port_t mysqld_port_t rndc_port_t ntp_port_t portmap_port_t postgresql_port_t snmp_port_t syslogd_port_t node_type是指定给网络节点或主机的类型,允许SELinux控制来往于这个节点的交通。它包括下面的类型: node_t node_lo_t node_internal_t node_inaddr_a

45、ny_t node_unspec_t node_link_local_t node_site_local_t node_multicast_t node_mapped_ipv4_t node_compat_ipv4_t 4)fs_type 属性fs_type标识指定给文件系统的所有类型,它允许大多数域获得全部文件系统的统计信息,一些特殊的域可以挂接任何文件系统。下面是它的部分文件类型: devpts_t: sysadm_devpts_t, staff_devpts_t, user_devpts_t fs_t eventpollfs_t futexfs_t bdev_

46、t usbfs_t nfsd_fs_t rpc_pipefs_t binfmt_misc_fs_t tmpfs_t autofs_t usbdevfs_t sysfs_t iso9660_t romfs_t ramfs_t dosfs_t cifs_t: sambafs_t nfs_t proc_t security_t 5)exec_type 属性exec_type是指定给可执行条目的所有类型的集合。这个属性中的域列出如下: ls_exec_t shell_exec_t httpd_exec_t httpd_suexec_exec_t http

47、d_php_exec_t httpd_helper_exec_t dhcpd_exec_t hotplug_exec_t initrc_exec_t run_init_exec_t init_exec_t ldconfig_exec_t mailman_queue_exec_t mailman_mail_exec_t mailman_cgi_exec_t depmod_exec_t insmod_exec_t update_modules_exec_t sendmail_exec_t mysqld_exec_t named_exec_t ndc_exec_t

48、 nscd_exec_t ntpd_exec_t ntpdate_exec_t portmap_exec_t postgresql_exec_t rpm_exec_t snmpd_exec_t squid_exec_t syslogd_exec_t udev_exec_t udev_helper_exec_t winbind_exec_t ypbind_exec_t 6)domain 属性domain用于进程的所有类型,用来识别SELinux的域,在其他类型的强制系统中,域可能与类型分开使用,在SELinux中,域是具有domain属性的基本类型。这个属性允许规则

49、应用到所有的域。如:init发送信号到所有的进程。 domain属性覆盖下面的属性: unconfined_t: kernel_t, init_t, initrc_t, sysadm_t, rpm_t, \                   rpm_script_t, logrotate_t mount_t httpd_t httpd_sys_script_t httpd_suexec_t httpd_php_t httpd_helper_t dhcpd_t ldconfig_t mailman_queue_t mailman_mail_t mailman_cgi_t system_mail_t mysqld_t named_t ndc_t nscd_t ntpd_t portmap_t postgresql_t snmpd_t squid_t syslogd_t winbind_t ypbind_t 7)reserved_port_type 属性reserved_port_type 标识任何一个保留网络商品的所有

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服