1 Controle de acesso
Visão geral
Esta seção contém as melhores práticas para configurar o controle de acesso de forma segura.
Princípio do menor privilégio
Contas de usuário, em todos os momentos, devem operar com o menor número possível de privilégios. Isso significa que as contas de usuário no frontend do Zabbix, os usuários do banco de dados ou o usuário dos processos do Zabbix server/proxy/agent devem ter apenas os privilégios essenciais para executar as funções pretendidas.
Conceder privilégios extras ao usuário 'zabbix' permitirá que ele acesse arquivos de configuração e execute operações que podem comprometer a segurança da infraestrutura.
Ao configurar os privilégios de contas de usuário, os tipos de usuário do frontend do Zabbix devem ser considerados. Observe que, embora o tipo de usuário Admin tenha menos privilégios do que o tipo de usuário Super Admin, ele ainda pode gerenciar a configuração e executar scripts personalizados.
Algumas informações estão disponíveis até mesmo para usuários sem privilégios. Por exemplo, embora Alerts → Scripts esteja disponível apenas para usuários Super Admin, os scripts também podem ser recuperados por meio da API do Zabbix. Nesse caso, limitar as permissões de scripts e excluir informações sensíveis dos scripts (por exemplo, credenciais de acesso) pode ajudar a evitar a exposição de informações sensíveis disponíveis em scripts globais.
Usuário seguro para o Zabbix agent
Por padrão, os processos do Zabbix server, proxy e agent (ou agent 2) compartilham um único usuário zabbix.
Para impedir que o Zabbix agent/agent 2 (executando na mesma máquina que o server/proxy) acesse detalhes sensíveis na configuração do server/proxy (por exemplo, credenciais do banco de dados), o agent deve ser executado sob um usuário diferente:
Para o Zabbix agent:
- Crie um grupo e usuário seguros (por exemplo,
zabbix-agent). - Defina esse usuário no parâmetro User do arquivo de configuração do agent.
- Reinicie o agent para reduzir os privilégios para o novo usuário.
Para o Zabbix agent 2, a configuração deve ser aplicada no nível do service, porque o arquivo de configuração do agent 2 não oferece suporte ao parâmetro User.
Para um exemplo, veja ZBX-26442.
Revogar o acesso de gravação à configuração SSL (Windows)
Se você compilou o agent do Zabbix no Windows, com o OpenSSL localizado em um diretório desprotegido (por exemplo, C:\zabbix, c:\openssl-64bit, C:\OpenSSL-Win64-111-static ou C:\dev\openssl), certifique-se de revogar o acesso de gravação de usuários não ადმინისტradores a esse diretório.
Caso contrário, o agent carrega as configurações SSL de um caminho que pode ser modificado por usuários sem privilégios, resultando em uma possível vulnerabilidade de segurança.
Reforçando a segurança dos componentes do Zabbix
Algumas funcionalidades podem ser desativadas para reforçar a segurança dos componentes do Zabbix:
- A execução de scripts globais no Zabbix server pode ser desativada definindo
EnableGlobalScripts=0na configuração do server. - A execução de scripts globais no Zabbix proxy é desativada por padrão (pode ser ativada definindo
EnableRemoteCommands=1na configuração do proxy). - A execução de scripts globais nos Zabbix agents é desativada por padrão (pode ser ativada adicionando um parâmetro
AllowKey=system.run[<command>,*]para cada comando permitido na configuração do agent). - A autenticação HTTP do usuário pode ser desativada definindo
$ALLOW_HTTP_AUTH=falseno arquivo de configuração do frontend (zabbix.conf.php). Observe que reinstalar o frontend (executandosetup.php) removerá esse parâmetro.
Acesso a caminho UNC no Windows pelo Zabbix agent
Os agents do Zabbix no Windows seguem caminhos UNC (compartilhamentos SMB como \\server\share\file.txt) em items como vfs.file.*, vfs.dir.*, modbus.get e perf_counter*. Isso pode representar um risco de segurança em alguns contextos.
Quando o Windows é solicitado a acessar um caminho UNC, ele tenta se autenticar nesse server. Isso significa que uma solicitação maliciosa ao Zabbix agent pode expor o hash NTLM ao server do solicitante. Os usuários podem mitigar isso com os parâmetros de configuração AllowKey e DenyKey, se necessário.