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 /etc
altere automaticamente os unlabeled_t
ró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_t
seria 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_t
e os scripts de inicialização do Zabbix, tanto servidor quanto agente, receberão rótulos apropriados de zabbix_initrc_exec_t
e 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