使用sesearch审核SELinux策略

时间:2020-03-21 11:42:39  来源:igfitidea点击:

我们将审核SELinux策略,以解释mysqld进程的上下文。

安装

sesearch命令是setools-console软件包的一部分:

# yum install -y setools-console

该软件包提供以下内容:

  • seinfo允许用户查询SELinux策略的组件。
  • sesearch允许用户搜索SELinux策略中的规则。

SELinux和MySQL守护程序

当systemd启动服务时,使用SELinux策略工具来预测mysqld守护程序的SELinux域类型。

# yum install -y mariadb-server
# systemctl start mariadb

我们首先检索systemd守护程序的SELinux域类型:

# ps -Z -C systemd
LABEL

PID TTY

TIME CMD
system_u:system_r:init_t:s0

1 ?

00:00:06 systemd

systemd守护程序通过执行“ mysqld_safe”二进制文件来启动服务。

检索“ mysqld_safe”可执行文件的SELinux上下文类型:

# which mysqld_safe| xargs ls -Z
-rwxr-xr-x. root root system_u:object_r:mysqld_safe_exec_t:s0 /usr/bin/mysqld_safe

现在,当类型为'init_t'的守护程序执行类型为'mysqld_safe_exec_t'的程序时,我们现在可以使用sesearch命令检索SELinux域转换规则:

# sesearch -T -s init_t -t mysqld_safe_exec_t
Found 1 semantic te rules:
   type_transition init_t mysqld_safe_exec_t : process mysqld_safe_t;

生成的进程的SELinux域类型为'mysqld_safe_t'。

SELinux和MySQL配置文件my.cnf

让我们找到允许mysqld守护程序读取配置文件'/etc/my.cnf'的规则。

检索mysqld守护程序的SELinux域类型:

# ps -Z -C mysqld
LABEL

PID TTY

TIME CMD
system_u:system_r:mysqld_t:s0    9114 ?

00:00:00 mysqld

检索“ /etc/my.cnf”文件的SELinux域类型:

# ls -Z /etc/my.cnf
-rw-r--r--. root root system_u:object_r:mysqld_etc_t:s0 /etc/my.cnf

检索允许“ mysqld_t”域类型读取具有“ mysqld_etc_t”类型的文件的规则:

# sesearch -A -s mysqld_t -t mysqld_etc_t -c file
Found 1 semantic av rules:
   allow mysqld_t mysqld_etc_t : file { ioctl read getattr lock open } ;

SELinux和MySQL端口3306

让我们找到允许mysqld守护程序绑定到TCP端口3306的规则。

检索与TCP端口3306关联的SELinux类型:

# semanage port -l|grep 3306
mysqld_port_t

tcp

1186, 3306, 63132-63164

找到允许规则并显示条件规则的条件表达式:

# sesearch -A -s mysqld_t -t mysqld_port_t -c tcp_socket -C
Found 5 semantic av rules:
   allow mysqld_t mysqld_port_t : tcp_socket { name_bind name_connect } ;

allow mysqld_t port_type : tcp_socket { recv_msg send_msg } ; 
DT allow mysqld_t port_type : tcp_socket { recv_msg send_msg } ; [ nis_enabled ]
DT allow mysqld_t port_type : tcp_socket name_connect ; [ mysql_connect_any ]
DT allow nsswitch_domain port_type : tcp_socket { recv_msg send_msg } ; [ nis_enabled ]