Centos8_SELINUX_重点

1.SELINUX安全的基本概念

SELinux是一个额外的系统安全层。SELinux的主要目标是防止已遭泄露的系统服务访问用户数据。这种基于用户和组的模型称为自由决定的访问控制。SELinux提供另一层安全,它基于对象并由更加复杂的规则控制,称为强制访问控制。
SELinux是用于确定哪个进程可以访问那些文件、目录和端口的一组安全规则。每个文件、进程、目录和端口都具有专门的安全标签,称为SELinux上下文。上下文是一个名称,SELinux策略使用它来确定某个进程能否访问文件、目录或端口。在默认情况下,策略不允许仁和交互,如果没有允许规则,则不允许访问。
SElinux标签具有多种上下文:用户、角色、类型和敏感度。
在这里插入图片描述

2.更改SELinux模式

SELinux子系统提供了显示和更改模式的工具,要确定当前的SELinux模式,可以运行getenforce命令,要将SELinux设置为其他模式,可使用setenforce命令:

Centos8_SELINUX_重点_第1张图片

3.设置默认SELinux模式

可修改/etc/selinux/config文件来持久配置SElinux。
Centos8_SELINUX_重点_第2张图片

4. 控制SELINUX上下文

4.1 初始化SELinux上下文

在运行SELinux的系统上,所有进程和文件都会有相应的标签,标签代表了与安全有关的信息,称为SELinux上下文。
新文件通常从父目录继承SELinux上下文,从而确保它们具有适当的上下文。但是,有两种不同的方式会破坏该继承过程;第一种,如果在与最终目标位置不同的位置创建文件,然后移动文件,则该文件将具有创建它时所在目录的SELinux上下文,而不是目标目录的SELinux上下文;第二种,如果复制一个保留SELinux上下文的文件(cp -a),则SELinux上下文将反映原始文件的位置。
例:
ls -Zd命令显示目录的SELinux上下文:
在这里插入图片描述
ls -Z命令显示文件的SELinux上下文:
在这里插入图片描述
在/var/www/html目录之外创建文件并注意它们的文件上下文:
将其中一个文件移动到/var/www/html目录,另一个复制,同时注意每个文件的标签:可以发现,移动的文件保留了自己的原始标签,而复制的文件则继承了/var/www/html目录的标签。其中unconfined_u:代表用户,object_r:代表角色,httpd_sys_content_t:代表标签,s0代表级别,敏感度级别0为最低级别。
在这里插入图片描述

4.2 更改文件的SELinux上下文

用于更改文件SELinux上下文的命令包括:semanage fcontext、restorecon和chcon。
为文件设置SELinux上下文的首选方法是使用semanage fcontext命令来声明文件的默认标签,然后使用restorecon命令将上下文应用于文件;这样可确保标签符合预期,即便在对文件系统完全重新标记之后也是如此。
chcon命令更改SELinux上下文,chcon设置存储在文件系统中的文件安全上下文,它对于测试和实验很有用,但是,它不会将上下文更改保存到SELinux上下文数据库中,当restorecon命令运行时,chcon命令所做的更改无法保留。

4.3 定义SELinux默认文件上下文规则

semanage fcontext命令可显示和修改,restorecon用来设置默认文件上下文的规则。使用扩展正则表达式来指定路径和文件名。fcontext规则中最常用的扩展正则表达式是(/.*)? 表示“可选择匹配后跟任何数量字符的/”。它将会匹配在表达式前面列出的目录并递归地匹配该目录中的所有内容。
semanage fcontext命令

选择 描述
-a,–add 添加指定对象类型的记录
-d,–delete 删除指定对象类型的记录
-l,–list 列出指定对象类型的记录

为了确保目录中所有文件都具有正确的文件上下文,执行修改上下文命令前,先执行semanage fcontext -l,确定服务所属上下,在执行restorecon命令。示例如下:

[root@grf1 ~]# mkdir /test
[root@grf1 ~]# touch /test/index.html
[root@grf1 ~]# semanage fcontext -l |grep "/var/www(/.*)?"
/var/www(/.*)?                                     all files          system_u:object_r:httpd_sys_content_t:s0 
[root@grf1 ~]# ls -Zd /test/
unconfined_u:object_r:default_t:s0 /test/
[root@grf1 ~]# ls -Z /test/
unconfined_u:object_r:default_t:s0 index.html
[root@grf1 ~]# semanage fcontext -a -t httpd_sys_content_t '/test(/.*)?'
[root@grf1 ~]# ls -Z /test/
unconfined_u:object_r:default_t:s0 index.html
[root@grf1 ~]# restorecon -RFvv /test/ 
[root@grf1 ~]# ls -Z /test/            
system_u:object_r:httpd_sys_content_t:s0 index.html

你可能感兴趣的:(Linux学习,linux)