目录
一、SELinux(Security-Enhanced Linux)
3.1 DAC(Discretionary Access Control,自主访问控制)
3.2 MAC(Mandatory Access Control,强制访问控制)
6.3 restorecon命令(恢复文件或目录的安全上下文)
8.1 getsebool命令(获取SELinux布尔值的当前状态)
8.2 setsebool命令(设置SELinux布尔值的状态)
一、SELinux(Security-Enhanced Linux)
1、SELinux概述和作用
SELinux(Security-Enhanced Linux)是一个Linux内核模块,它实现了强制访问控制(MAC)机制,可以对系统中的各种资源(文件、进程、网络端口等)进行细粒度的访问控制,从而提高了系统的安全性
主要作用是强化系统的安全性,通过访问控制来防止恶意程序对系统进行攻击。它可以限制程序的权限,防止它们对系统资源进行未经授权的访问和操作,从而有效地保护系统免受攻击
2、 SELinux的优缺点
- 优点
可以提高系统的安全性,通过访问控制来限制程序的权限,从而有效地防止恶意程序对系统进行攻击
- 缺点
使用SELinux需要一定的学习成本,因为它的配置比较复杂,需要了解一些SELinux的基本概念和命令
3、SELinux的权限管理机制
SELinux是一种强制访问控制(MAC)安全机制,用于Linux操作系统中。它的作用是通过强制规则限制进程的权限,从而保护系统免受未经授权的访问和攻击。
相比于传统的自由访问控制(DAC)机制,SELinux的优点在于可以更加细粒度地控制进程的访问权限,从而提高系统的安全性。但是,由于SELinux的规则非常复杂,配置和管理也比较困难,因此在使用时需要投入更多的精力和时间
3.1 DAC(Discretionary Access Control,自主访问控制)
一种基于用户身份和权限的安全机制。在没有使用 SELinux 的操作系统中,决定一个资源是否能被访问的因素是:某个资源是否拥有对应用户的权限(读、写、执行)。只要访问这个资源的进程符合以上的条件就可以被访问。而最致命问题是,root 用户不受任何管制,系统上任何资源都可以无限制地访问。这种权限管理机制的主体是用户,也称为自主访问控制(DAC)
DAC的优点在于使用简单,容易理解和配置。但是,DAC的缺点也比较明显,主要包括以下几个方面:
- 安全性较低:由于DAC是基于用户身份和权限的,因此用户可以自由地控制自己的资源访问权限。这就意味着如果用户的帐户被攻击或者被恶意程序利用,攻击者可以通过该用户的权限访问该用户的所有资源
- 权限管理困难:由于DAC是基于用户身份和权限的,因此在管理大量用户和资源时,权限管理变得非常困难。管理员需要花费大量时间和精力来管理和维护用户和资源之间的权限关系
- 缺乏细粒度控制:由于DAC是基于用户身份和权限的,因此无法对不同用户对同一资源的访问进行细粒度控制。例如,无法对同一文件的不同部分进行不同的访问控制
3.2 MAC(Mandatory Access Control,强制访问控制)
在使用了 SELinux 的操作系统中,决定一个资源是否能被访问的因素除了上述因素之外,还需要判断每一类进程是否拥有对某一类资源的访问权限。
这样一来,即使进程是以 root 身份运行的,也需要判断这个进程的类型以及允许访问的资源类型才能决定是否允许访问某个资源。进程的活动空间也可以被压缩到最小。
即使是以 root 身份运行的服务进程,一般也只能访问到它所需要的资源。即使程序出了漏洞,影响范围也只有在其允许访问的资源范围内。安全性大大增加。
这种权限管理机制的主体是进程,也称为强制访问控制(MAC),它是由系统管理员预先定义的一组规则来控制系统中的访问权限,而不是由用户自己控制。MAC机制在系统内部强制执行这些规则,从而保证系统的安全性。
MAC机制的核心思想是将系统资源和进程分配到不同的安全级别,并定义了一些规则来控制不同级别之间的访问。在MAC机制中,每个资源都有一个安全级别,每个进程也有一个安全级别。当进程访问某个资源时,系统会检查该进程的安全级别是否高于该资源的安全级别,如果不高于,则拒绝访问。
而 MAC 又细分为了两种方式,一种叫类别安全(MCS)模式,另一种叫多级安全(MLS)模式
3.3 DAC和MAC的区别
在 DAC 模式下,只要相应目录有相应用户的权限,就可以被访问。而在 MAC 模式下,还要受进程允许访问目录范围的限制
4、SELinux中几个名词概念
4.1 主体(Subject)
主体是指进程或用户,它们需要访问系统资源。在SELinux中,每个主体都有自己的安全上下文,其中包含了主体的身份信息、角色和安全级别等。
4.2 对象(Object)
对象是指系统中的资源,包括文件、目录、网络、设备等。在SELinux中,每个对象都有自己的安全上下文,其中包含了对象的类型信息、安全级别等。
4.3 政策和规则(Policy & Rule)
系统中通常有大量的文件和进程,为了节省时间和开销,通常我们只是选择性地对某些进程进行管制。而哪些进程需要管制、要怎么管制是由政策决定的。一套政策里面有多个规则。部分规则可以按照需求启用或禁用(以下把该类型的规则称为布尔型规则)。
规则是模块化、可扩展的。在安装新的应用程序时,应用程序可通过添加新的模块来添加规则。用户也可以手动地增减规则。
在 CentOS 7 系统中,有三套政策,分别是:
- targeted:对大部分网络服务进程进行管制。这是系统默认使用的政策(下文均使用此政策)
- minimum:以 targeted 为基础,仅对选定的网络服务进程进行管制。一般不用
- mls:多级安全保护。对所有的进程进行管制。这是最严格的政策,配置难度非常大。一般不用,除非对安全性有极高的要求
#政策可在这个配置文件中设置
/etc/selinux/config
5、SELinux的三种工作模式
- enforcing模式
enforcing模式是SELinux的默认工作模式,也是最常用的工作模式。在enforcing模式下,SELinux会强制执行安全策略,阻止未经授权的访问。如果进程试图访问未授权的资源,SELinux会禁止该进程的访问,并且在系统日志中记录相关信息
- permissive模式
permissive模式是SEL