SELinux简介以及一些常用命令
1. 简介
SELinux(Security-Enhanced Linux) 是美国国家安全局「NSA=The National Security Agency」 和SCC(Secure Computing Corporation)开发的 Linux的一个扩张强制访问控制(MAC)安全模块,是 Linux® 上最杰出的新安全子系统。NSA是在Linux社区的帮助下开发了一种访问控制体系,在这种访问控制体系的限制下,进程只能访问那些在他的任务中所需要文件。
SELinux是一种基于 域-类型 模型(domain-type)的强制访问控制(MAC)安全系统,它由NSA编写并设计成内核模块包含到内核中,相应的某些安全相关的应用也被打了SELinux的补丁,最后还有一个相应的安全策略。
众所周知,标准的UNIX安全模型是"任意的访问控制"DAC。就是说,任何程序对其资源享有完全的控制权。假设某个程序打算把含有潜在重要信息的文件扔到/tmp目录下,那么在DAC情况下没人能阻止他!
而MAC情况下的安全策略完全控制着对所有资源的访问。这是MAC和DAC本质的区别。
SELinux提供了比传统的UNIX权限更好的访问控制。
2. 基本概念
2.1主体
通常指用户,或代表用户意图运行进程或设备。主体是访问操作的主动发起者,它是系统中信息流的启动者,可以使信息流在实体之间流动。
2.2客体
通常是指信息的载体或从其他主体或客体接收信息的实体。
主体有时也会成为访问或受控的对象,如一个主体可以向另一个主体授权,一个进程可能控制几个子进程等情况,这时受控的主体或子进程也是一种客体。
2.3访问控制分类
客体不受它们所依存的系统的限制,可以包括记录、数据块、存储页、存储段、文件、目录、目录树、库表、邮箱、消息、程序等,还可以包括比特位、字节、字、字段、变量、处理器、通信信道、时钟、网络结点等。
2.3.1自主访问控制DAC
管理的方式不同就形成不同的访问控制方式。一种方式是由客体的属主对自己的客体进行管理,由属主自己决定是否将自己客体的访问权或部分访问权授予其他主体,这种控制方式是自主的,我们把它称为自主访问控制(Discretionary Access Control——DAC)。在自主访问控制下,一个用户可以自主选择哪些用户可以共享他的文件。Linux系统中有两种自主访问控制策略,一种是9位权限码(User-Group-Other),另一种是访问控制列表ACL(Access Control List)。
2.3.2 强制访问控制MAC
强制访问控制(Mandatory Access Control——MAC),用于将系统中的信息分密级和类进行管理,以保证每个用户只能访问到那些被标明可以由他访问的信息的一种访问约束机制。通俗的来说,在强制访问控制下,用户(或其他主体)与文件(或其他客体)都被标记了固定的安全属性(如安全级、访问权限等),在每次访问发生时,系统检测安全属性以便确定一个用户是否有权访问该文件。其中多级安全(MultiLevel Secure, MLS)就是一种强制访问控制策略。
3. 控制切换
Fedora core 5 里的/etc/sysconfig/selinux标准设置如下: