Preciso criar um tipo de contexto de arquivo personalizado para /etc/zabbix/ se não quiser usar unlabeled_t?

Preciso criar um tipo de contexto de arquivo personalizado para /etc/zabbix/ se não quiser usar unlabeled_t?

Instalei o zabbix (um aplicativo de monitoramento) em uma máquina CentOS 7. Por motivos de segurança, quero deixar o selinux em modo forçado. Portanto, tenho que conceder algumas permissões ao meu zabbix para funcionar. Se eu executar o seguinte:

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

Eu recebo a seguinte saída:

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

Depois de um pouco de pesquisa descobri que o arquivo /etc/zabbix/zabbix_server.conf tem o tipo de contexto de arquivo unlabeled_t, que é a razão pela qual audit2allow me sugere permitir o unlabeled_t para o zabbix_server. Mas como é uma má ideia permitir um tipo base, estou procurando uma maneira de resolver isso. Eu já procurei na página de manual do zabbix_selinux (https://www.systutorials.com/docs/linux/man/8-zabbix_selinux/), mas realmente não existe um tipo de arquivo de contexto apropriado. Eu sei que posso criar meu próprio tipo de contexto de arquivo, mas não sou realmente um especialista, então não sei se esta é a melhor solução. Portanto, minha pergunta é se existe uma maneira melhor ou se eu realmente preciso criar meu próprio tipo de contexto de arquivo se não quiser usar o tipo base unlabeled_t?

Responder1

Você provavelmente instalou o Zabbix de uma fonte desconhecida do SELinux, ou talvez com o SELinux desabilitado na instalação.

Se o Zabbix não foi instalado a partir de um pacote compatível com SELinux, é provável que a execução restorecon -R -v /etcaltere automaticamente os unlabeled_trótulos para outra coisa, provavelmente etc_t, já que esse parece ser o rótulo padrão para arquivos e diretórios em /etc. Você provavelmente deveria fazer isso antes de usar o audit2allow.

etc_tseria um bom tipo de contexto para a maioria dos arquivos de configuração.

O conjunto de regras SELinux do RHEL/CentOS 7.x na verdade possui algumas provisões integradas para o Zabbix: o diretório /etc/zabbix/web/e quaisquer arquivos nele serão rotulados httpd_sys_rw_content_te os scripts de inicialização do Zabbix, tanto servidor quanto agente, receberão rótulos apropriados de zabbix_initrc_exec_te zabbix_agent_initrc_exec_t, respectivamente.

O seguinte é de uma VM de teste RHEL 7.7 "vanilla" sem nenhum pacote 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 

informação relacionada