¿Necesito crear un tipo de contexto de archivo personalizado para /etc/zabbix/ si no quiero usar unlabeled_t?

¿Necesito crear un tipo de contexto de archivo personalizado para /etc/zabbix/ si no quiero usar unlabeled_t?

Instalé zabbix (una aplicación de monitoreo) en una máquina CentOS 7. Por motivos de seguridad, quiero dejar selinux en modo forzado. Por lo tanto, tengo que otorgarle a mi zabbix algunos permisos para poder funcionar. Si ejecuto lo siguiente:

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

Obtengo el siguiente resultado:

...
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 };

Después de investigar un poco, descubrí que el archivo /etc/zabbix/zabbix_server.conf tiene el tipo de contexto de archivo unlabeled_t, que es la razón por la que audit2allow me sugiere permitir unlabeled_t para zabbix_server. Pero como es mala idea permitir un tipo base, estoy buscando una manera de resolver esto. Ya busqué en la página de manual de zabbix_selinux (https://www.systutorials.com/docs/linux/man/8-zabbix_selinux/), pero realmente no existe un tipo de archivo de contexto apropiado. Sé que puedo crear mi propio tipo de contexto de archivo, pero no soy realmente un experto, así que no sé si esta es la mejor solución. Entonces, mi pregunta es si hay una mejor manera o realmente necesito crear mi propio tipo de contexto de archivo si no quiero usar el tipo base unlabeled_t.

Respuesta1

Probablemente instaló Zabbix desde una fuente que no reconoce SELinux, o quizás con SELinux deshabilitado durante la instalación.

Si Zabbix no se instaló desde un paquete compatible con SELinux, es probable que la ejecución restorecon -R -v /etccambie automáticamente las unlabeled_tetiquetas a otra cosa, probablemente etc_t, ya que parece ser la etiqueta predeterminada para archivos y directorios en /etc. Probablemente deberías hacer eso antes de usarlo audit2allow.

etc_tsería un buen tipo de contexto para la mayoría de los archivos de configuración.

El conjunto de reglas SELinux de RHEL/CentOS 7.x en realidad tiene algunas disposiciones integradas para Zabbix: el directorio /etc/zabbix/web/y cualquier archivo que contenga se etiquetarán httpd_sys_rw_content_ty los scripts de inicio de Zabbix, tanto el servidor como el agente, obtendrán las etiquetas apropiadas de zabbix_initrc_exec_ty zabbix_agent_initrc_exec_t, respectivamente.

Lo siguiente es de una máquina virtual de prueba "vainilla" RHEL 7.7 sin ningún paquete Zabbix instalado:

[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 

información relacionada