Esta seção contém boas práticas que devem ser observadas de modo a configurar o Zabbix de uma forma segura.
As práticas contidas aqui não são necessárias para o funcionamento do Zabbix. Elas são recomendadas para uma melhor segurança do sistema.
O princípio do menor privilégio deve ser usado todo o tempo no Zabbix. Este princípio implica que contas de usuário (no Zabbix Frontend) ou usuários de processo (para Zabbix Server/Proxy ou Agent) tenham apenas aqueles privilégios essenciais para executar as funções pretendidas. Em outras palavras, contas de usuário devem fornecer o mínimo de privilégios possível, durante todo o tempo.
Fornecer permissões extras ao usuário 'zabbix' permitirá que este acesse os arquivos de configuração e execute operações que podem comprometer a segurança geral da infraestrutura.
Quando implementando o princípio de mínimo privilégio para contas de usuário, os tipos de usuário do frontend do Zabbix devem ser levados em conta. É importante entender que enquanto um usuário do tipo "Admin" tem menos privilégios do um usuário do tipo "Super Admin", ele tem permissões administrativas que o permitem gerenciar configurações e executar scripts customizados.
Algumas informações estão disponíveis até mesmo para usuários sem privilégio. Por exemplo, conquanto Administração → Scripts esteja disponível apenas para usuários Super Admins, os próprios scripts estão disponíveis para recuperação através do uso da API do Zabbix. Limitação nas permissões dos scripts e a não adição de informações sensíveis (como credenciais de acesso, etc) devem ser consideradas para evitar a exposição de informações sensíveis existentes nos scripts globais.
Na configuração padrão, os processos do Zabbix Server e Zabbix Agent compartilham um usuário 'zabbix'. Se você desejar certificar-se de que o Agent não tenha acesso a detalhes sensíveis na configuração do Server (p.e. informações de login do banco de dados), o Agent deve ser executado com um usuário diferente:
O UTF-8 é o único formato de codificação suportado pelo Zabbix. É conhecido por operar sem quaisquer falhas de segurança. Usuários devem estar cientes de que há problemas de segurança conhecidos quando usando algum dos outros formatos.
Ao utilizar instaladores para Windows, é recomendável utilizar os caminhos padrão fornecidos pelo instalador. Usar caminhos personalizados sem as permissões adequadas pode comprometer a segurança da instalação.
Consulte Zabbix Security Advisories and CVE database.
No RHEL/Centos, instale o pacote mod_ssl:
Crie diretório para as chaves SSL:
Crie o certificado SSL:
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/httpd/ssl/private/apache-selfsigned.key -out /etc/httpd/ssl/apache-selfsigned.crt
Preencha cada informação com os dados apropriados. A linha mais importante é a que solicita o Nome Comum (Common Name). Aqui você precisa informar o nome de domínio que deseja que seja associado ao seu servidor. Você pode informar o endereço de IP público caso não tenha um nome de domínio. Neste artigo nós faremos uso do nome example.com.
Country Name (2 letter code) [XX]:
State or Province Name (full name) []:
Locality Name (eg, city) [Default City]:
Organization Name (eg, company) [Default Company Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:example.com
Email Address []:
Edite as configurações de SSL do Apache:
/etc/httpd/conf.d/ssl.conf
DocumentRoot "/usr/share/zabbix"
ServerName example.com:443
SSLCertificateFile /etc/httpd/ssl/apache-selfsigned.crt
SSLCertificateKeyFile /etc/httpd/ssl/private/apache-selfsigned.key
Reinicie o serviço do Apache para aplicar as alterações:
Adicione um virtual host na configuração do Apache e configure um redirecionamento permanente do diretório raíz (DocumentRoot) para a URL com SSL do Zabbix. Não esqueça de substituir example.com pelo nome real do servidor.
/etc/httpd/conf/httpd.conf
#Linhas adicionais
<VirtualHost *:*>
ServerName example.com
Redirect permanent / https://example.com
</VirtualHost>
Reinicie o serviço do Apache para aplicar as alterações:
Para proteger o Zabbix Frontend contra ataques de rebaixamento de protocolo, nós recomendamos habilitar a política de HSTS no servidor web.
Por exemplo, para habilitar a política HSTS para seu Zabbix Frontend na configuração do Apache:
adicione a seguinte diretiva à configuração do seu virtual host:
Reinicie o serviço do Apache para aplicar as alterações:
Para proteger o frontend Zabbix contra Cross Site Scripting (XSS), injeção de dados, e ataques similares, recomendamos habilitar a Política de Segurança do Conteúdo no servidor web. Para isso, configure o servidor web para retornar HTTP header.
A seguinte configuração do cabeçalho CSP é apenas para instalação do frontend Zabbix padrão e para casos em que todos os conteúdos são produzidos a partir do domínio do site (excluindo subdomínios). Uma configuração diferente do cabeçalho CSP pode ser necessária se você estiver, por exemplo, configurando o widget URL para exibir o conteúdo dos subdomínios do site ou a partir de domínios externos, alternando de OpenStreetMap para um outro mecanismo de mapa, ou adicionando CSS externo ou widgets.
Para habilitar o CSP para seu frontend Zabbix na configuração Apache, siga esses passos:
1. Localize seu arquivo de configuração do host virtual:
/etc/httpd/conf/httpd.conf
em RHEL-based systems/etc/apache2/sites-available/000-default.conf
em Debian/Ubuntu2. Adicione o seguinte diretivo para o seu arquivo de configuração do host virtual:
<VirtualHost *:*>
Header set Content-Security-Policy: "default-src 'self' *.openstreetmap.org; script-src 'self' 'unsafe-inline' 'unsafe-eval'; connect-src 'self'; img-src 'self' data: *.openstreetmap.org; style-src 'self' 'unsafe-inline'; base-uri 'self'; form-action 'self';"
</VirtualHost>
3. Reinicie o serviço Apache para aplicar todas as alterações:
# On RHEL-based systems:
systemctl restart httpd.service
# On Debian/Ubuntu
systemctl restart apache2.service
É recomendado desabilitar todas as assinaturas do web server como parte do processo de garantia da segurança. O Web Server expõe sua assinatura de software por padrão:
A assinatura pode ser desabilitada através da adição de duas linhas no arquivo de configuração do Apache, por exemplo::
A assinatura do PHP (X-Powered-By HTTP header) pode ser desabilitada pela alteração do arquivo de configuração php.ini (neste caso a assinatura é desabilitada por padrão):
Um reinício do Web Server é necessário para que as alterações no arquivo de configuração sejam aplicadas.
Um nível adicional de segurança pode ser alcançado usando mod_security (pacote libapache2-mod-security2) com Apache. O mod_security permite remover toda a assinatura do server em vez de apenas remover a versão. A assinatura pode ser alterada para qualquer valor pela alteração de "SecServerSignature" para um valor desejado após a instalação do mod_security.
Por favor, consulte a documentação do seu Web Server para encontrar auxílio em como remover/alterar as assinaturas de software.
É recomendado desabilitar as páginas de erro padrão para evitar exposição de informação. O Web Server usa as páginas de erro embutidas por padrão:
Páginas de erro padrão devem ser substituídas/removidas como parte do processo de aprimoramento da segurança. A diretiva "ErrorDocument" pode ser usada para definir uma página/texto de erro customizado para o Apache Web Server (usado como exemplo).
Por favor, consulte a documentação do seu Web Server para encontrar auxílio em como substituir/remover as páginas de erro padrão.
É recomendado remover a página de teste do Web Server para evitar a exposição de informações. Por padrão, o diretório raíz do Web Server contém uma página de teste chamada index.html (usando Apache2 no Ubuntu como exemplo):
A página de teste deve ser removida ou tornada indisponível como parte do processo de aprimoramento da segurança do Web Server.
Por padrão, o Zabbix possui a opção X-Frame-Options HTTP response header configurada como SAMEORIGIN
, significando que o conteúdo só pode ser carregado em um frame que tenha a mesma origem da página em si.
Os elementos do Zabbix Frontend que buscam conteúdo de URLs externas (especificamente, o widget de URL para dashboard) apresentam o conteúdo encontrado em uma área isolada (sandbox) com todas as restrições habilitadas.
Estas configurações aprimoram a segurança do Zabbix Frontend e proveem proteção contra ataques do tipo XSS e clickjacking. Super Admins podem modificar os parâmetros iframe sandboxing e X-Frame-Options HTTP response header conforme necessário. Por favor, pese cuidadosamente os riscos e benefícios antes de alterar as configurações padrão. Desativar completamente a função de sandboxing ou X-Frame-Options não é recomendado.
O Zabbix Windows Agent compilado com OpenSSL tentará encontrar o arquivo de configuração SSL em C:\openssl-64bit. O diretório "openssl-64bit" na partição C: pode ser criado por usuários sem privilégio elevado.
Assim, para aprimoramento da segurança, é necessária a criação deste diretório manualmente e então a retirada do acesso de escrita para os usuários que não sejam administradores.
Por favor, note que os nomes do diretório serão diferentes nas versões 32-bit e 64-bit do Windows.
Para aumentar a complexidade dos ataques de força bruta a senhas, sugere-se limitar o acesso ao arquivo ui/data/top_passwords.txt
, modificando a configuração do servidor web. Este arquivo contém uma lista de senhas mais comuns e senhas específicas ao contexto, sendo utilizado para evitar que usuários definam tais senhas caso o parâmetro Avoid easy-to-guess passwords esteja habilitado na password policy.
Por exemplo, o acesso ao arquivo NGINX pode ser limitado usando a diretiva location
:
No Apache - usando o arquivo .htaccess
: