如果我不想使用 unlabeled_t,是否需要为 /etc/zabbix/ 创建自定义文件上下文类型?

如果我不想使用 unlabeled_t,是否需要为 /etc/zabbix/ 创建自定义文件上下文类型?

我在 CentOS 7 机器上安装了 zabbix(一个监控应用程序)。出于安全目的,我想将 selinux 保留为强制模式。因此我必须授予我的 zabbix 一些权限才能工作。如果我执行以下命令:

ausearch -c zabbix_server -m AVC -i -ts today | audit2allow -m ztest

我得到以下输出:

...
require {
     type unlabeled_t;
     type zabbix_var_run_t;
     type zabbix_t;
     class sock_file { create unlink };
     class unix_stream_socket connectto;
     class file { getattr open read };
}

#========== zabbix_t ==============

#!!!!! This avc can be allowed using the boolean 'daemons_enable_cluster_mode'
allow zabbix_t self:unix_stream_socket connectto;

#!!!!! WARNING 'unlabeled_t' is a base type.
allow zabbix_t unlabeled_t:file { getattr open read };
allow zabbix_t zabbix_var_run_t:sock_file { create unlink };

经过一番研究后,我发现 /etc/zabbix/zabbix_server.conf 文件的文件上下文类型为 unlabeled_t,这就是audit2allow 建议我允许 zabbix_server 使用 unlabeled_t 的原因。但由于允许基本类型是一个坏主意,因此我正在寻找一种方法来解决这个问题。我已经查看了 zabbix_selinux 联机帮助页(https://www.systutorials.com/docs/linux/man/8-zabbix_selinux/),但确实没有合适的上下文文件类型。我知道,我可以创建自己的文件上下文类型,但我并不是真正的专家,所以我不知道这是否是最好的解决方案。所以我的问题是,是否有更好的方法,或者如果我不想使用基本类型 unlabeled_t,我是否真的需要创建自己的文件上下文类型?

答案1

您可能从不支持 SELinux 的源安装了 Zabbix,或者可能在安装时禁用了 SELinux。

如果 Zabbix 不是从支持 SELinux 的软件包安装的,那么运行时很可能restorecon -R -v /etc会自动将unlabeled_t标签更改为其他内容,可能是etc_t,因为这似乎是 下文件和目录的默认标签/etc。您可能应该在使用之前这样做audit2allow

etc_t对于大多数配置文件来说,这将是一个很好的上下文类型。

RHEL/CentOS 7.x 的 SELinux 规则集实际上对 Zabbix 有一些内置规定:目录/etc/zabbix/web/及其中的任何文件都将被标记httpd_sys_rw_content_t,Zabbix 的启动脚本(服务器和代理)将分别获得适当的标签zabbix_initrc_exec_tzabbix_agent_initrc_exec_t

以下内容来自根本没有安装 Zabbix 软件包的“普通”RHEL 7.7 测试虚拟机:

[root@localhost etc]# cat /etc/redhat-release 
Red Hat Enterprise Linux Server release 7.7 (Maipo)

[root@localhost etc]# semanage fcontext -l |grep zabbix
/var/log/zabbix.*                                  all files          system_u:object_r:zabbix_log_t:s0 
/etc/zabbix/web(/.*)?                              all files          system_u:object_r:httpd_sys_rw_content_t:s0 
/var/lib/zabbix(/.*)?                              all files          system_u:object_r:zabbix_var_lib_t:s0 
/var/run/zabbix(/.*)?                              all files          system_u:object_r:zabbix_var_run_t:s0 
/etc/rc\.d/init\.d/(zabbix|zabbix-server)          regular file       system_u:object_r:zabbix_initrc_exec_t:s0 
/var/lib/zabbixsrv(/.*)?                           all files          system_u:object_r:zabbix_var_lib_t:s0 
/usr/lib/zabbix/externalscripts(/.*)?              all files          system_u:object_r:zabbix_script_exec_t:s0 
/var/lib/zabbix/externalscripts(/.*)?              all files          system_u:object_r:zabbix_script_exec_t:s0 
/usr/bin/zabbix_server                             regular file       system_u:object_r:zabbix_exec_t:s0 
/usr/bin/zabbix_agentd                             regular file       system_u:object_r:zabbix_agent_exec_t:s0 
/usr/sbin/zabbix_proxy                             regular file       system_u:object_r:zabbix_exec_t:s0 
/usr/sbin/zabbix_agentd                            regular file       system_u:object_r:zabbix_agent_exec_t:s0 
/usr/sbin/zabbix_server                            regular file       system_u:object_r:zabbix_exec_t:s0 
/usr/sbin/zabbix_proxy_mysql                       regular file       system_u:object_r:zabbix_exec_t:s0 
/usr/sbin/zabbix_proxy_pgsql                       regular file       system_u:object_r:zabbix_exec_t:s0 
/usr/sbin/zabbix_server_mysql                      regular file       system_u:object_r:zabbix_exec_t:s0 
/usr/sbin/zabbix_server_pgsql                      regular file       system_u:object_r:zabbix_exec_t:s0 
/etc/rc\.d/init\.d/zabbix-agentd                   regular file       system_u:object_r:zabbix_agent_initrc_exec_t:s0 
/usr/sbin/zabbix_proxy_sqlite3                     regular file       system_u:object_r:zabbix_exec_t:s0 
/usr/sbin/zabbix_server_sqlite3                    regular file       system_u:object_r:zabbix_exec_t:s0 

相关内容