Linux CentOS 8(SELinux的配置与管理)



一、SELinux简介

SELinux全称为“Security-Enhanced Linux”,是安全增强型Linux系统,一个Linux内核模块,也是Linux的一个安全子系统。开启后会关闭系统中不安全的功能。主要作用是最大限度地减小系统中服务进程可访问的资源。

二、SELinux工作模式

SELinux有Enforcing、Permissive、Disabled三种模式:

  • Enforcing(强制模式):违反SELinux规则的行为将被阻止并记录到日志中。
  • Permissive(宽容模式):违反SELinux规则的行为只会记录到日志中。一般为调试用。
  • Disabled(关闭模式):SELinux并没有实际运行。

三、SELinux配置文件

在 CentOS 8 系统中,有三套政策:

  • targeted:对大部分网络服务进程进行管制。这是系统默认使用的政策。
  • minimum:以 targeted 为基础,仅对选定的网络服务进程进行管制。一般不用。
  • mls:多级安全保护。对所有的进程进行管制。这是最严格的政策,配置难度非常大。一般不用,除非对安全性有极高的要求。
[root@localhost ~]# cat /etc/selinux/config
SELINUX=enforcing    
SELINUXTYPE=targeted
//如果想要修改模式和策略,更改这个文件里面的内容即可。

四、SELinux模式切换

4.1 查看状态

[root@localhost ~]# getenforce
或
[root@localhost ~]# sestatus -v
//如果第一行的SELinux status参数为enabled即为开启状态

4.2 关闭SELinux

临时关闭(不用重启)

[root@localhost ~]# setenforce 0 
//设置SELinux 为permissive模式
//setenforce 1|0 设置SELinux 为Enforcing|Premission模式
//临时关闭的适用范围只能在够在Enforcing和Permissive两种模式之间进行切换

永久关闭

[root@localhost ~]# vim /etc/selinux/config
SELINUX=disabled
[root@localhost ~]# reboot

4.3 显示信息

[root@localhost ~]# sestatus  -v

五、SELinux安全上下文

传统Linux,一切接文件,由用户,组,权限控制访问; 在SELinux中,一切皆对象,由存放在inode的扩展属性域的安全元素所控制其访问。所有文件、端口资源和进程都具备安全标签:安全上下文。安全上下文是SELinux的核心。

5.1 查看文件或目录的安全上下文

[root@localhost ~]# ls –Z  /var/log/messages
-rw-------. root root system_u:object_r:var_log_t:s8  /var/log/messages 

5.2 查看进程的安全上下文

[root@localhost ~]# ps auxZ | grep -v grep | grep <进程名>

5.3 修改文件或目录的安全上下文为default_t

[root@localhost ~]# chcon -t default_t  /var/log/messages
// -R 递归处理所有的文件及子目录
-v 为处理的所有文件显示诊断信息
-r 修改安全上下文角色的配置
-t 修改安全上下文类型的配置
[root@localhost ~]# ls –Z  /var/log/messages
-rw-------. root root system_u:object_r: default_t:s8  /var/log/messages

5.4 把文件或目录的安全上下文恢复到默认值

[root@localhost ~]# restorecon -Rv  /var/log/messages

5.5 添加目录的默认安全上下文

[root@localhost ~]# semanage fcontext -a -t default_t/var/log/messages(./*)?’
//目录或文件的默认安全上下文可以通过 semanage fcontext -l 命令配合 grep过滤查看

5.6 添加某类进程允许访问的端口

[root@localhost ~]# semanage port -a -t http_port_t -p tcp 82
//各种服务类型所允许的端口号可以通过 semanage port -l 命令配合 grep 过滤查看

六、SEbool

系统中通常有大量的文件和进程,为了节省时间和开销,通常我们只是选择性地对某些进程进行管制。而进程需要管制的类型由政策决定的。一套政策里面有多个布尔型规则。部分布尔型规则可以按照需求启用或禁用。布尔型规则是 SELinux 对服务功能能添加的开关。

6.1 查看功能开关

[root@localhost ~]# getsebool -a | grep httpd
httpd_anon_write --> off
httpd_builtin_scripting --> on
httpd_can_check_spam --> off
httpd_can_connect_ftp --> off
//由于该命令要么查询所有规则,要么只查询一个规则,所以一般都是先查询所有规则然后用 grep 筛选。

6.2 开关一个布尔型规则

[root@localhost ~]# setsebool -P httpd_anon_write on
[root@localhost ~]# setsebool -P httpd_anon_write off 
或
[root@localhost ~]# setsebool -P httpd_anon_write=1
[root@localhost ~]# setsebool -P httpd_anon_write=0
//-P 重启仍然生效

制作成员: 何嘉愉
排版: 裕新
初审: 杨佳佳
复审: 二月二

10-31 18:54