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 /etc
cambie automáticamente las unlabeled_t
etiquetas 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_t
serí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_t
y los scripts de inicio de Zabbix, tanto el servidor como el agente, obtendrán las etiquetas apropiadas de zabbix_initrc_exec_t
y 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