Esta é uma tradução da página de documentação original em inglês. Ajude-nos a torná-la melhor.

Best practices for secure Zabbix setup

Visão geral

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.

Access control

Princípio do menor privilégio

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çãoScripts 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.

Usuário seguro para Zabbix Agent

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:

  1. Crie um usuário seguro
  2. Especifique este usuário no arquivo de configuração (parâmetro 'User') do Agent
  3. Reinicie o Agent com privilégios de administrador. Estes privilégios serão substituídos pelos privilégios do usuário especificado.

Codificação UTF-8

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.

Windows installer paths

When using Windows installers, it is recommended to use default paths provided by the installer as using custom paths without proper permissions could compromise the security of the installation.

Configurando SSL para Zabbix Frontend

No RHEL/Centos, instale o pacote mod_ssl:

yum install mod_ssl

Crie diretório para as chaves SSL:

mkdir -p /etc/httpd/ssl/private
       chmod 700 /etc/httpd/ssl/private

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:

systemctl restart httpd.service

Web server hardening

Habilitando o Zabbix no diretório raíz da URL

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:

systemctl restart httpd.service && systemctl status httpd.service

Habilitando HTTP Strict Transport Security (HSTS) no servidor web

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:

/etc/httpd/conf/httpd.conf

adicione a seguinte diretiva à configuração do seu virtual host:

<VirtualHost *:443>
          Header set Strict-Transport-Security "max-age=31536000"
       </VirtualHost>

Reinicie o serviço do Apache para aplicar as alterações:

systemctl restart httpd.service

Enabling Content Security Policy (CSP) on the web server

To protect Zabbix frontend against Cross Site Scripting (XSS), data injection, and similar attacks, we recommend enabling Content Security Policy on the web server. To do so, configure the web server to return the HTTP header.

The following CSP header configuration is only for the default Zabbix frontend installation and for cases when all content originates from the site's domain (excluding subdomains). A different CSP header configuration may be required if you are, for example, configuring the URL widget to display content from the site's subdomains or external domains, switching from OpenStreetMap to another map engine, or adding external CSS or widgets.

To enable CSP for your Zabbix frontend in Apache configuration, follow these steps:

1. Locate your virtual host's configuration file:

  • /etc/httpd/conf/httpd.conf on RHEL-based systems
  • /etc/apache2/sites-available/000-default.conf on Debian/Ubuntu

2. Add the following directive to your virtual host's configuration file:

<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. Restart the Apache service to apply the changes:

# On RHEL-based systems:
       systemctl restart httpd.service
       
       # On Debian/Ubuntu
       systemctl restart apache2.service

Desabilitando exposição de informação do servidor web

É 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::

ServerSignature Off
       ServerTokens Prod

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):

expose_php = Off

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.

Desabilitando as páginas de erro padrão do Web Server

É 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.

Removendo a página de teste do Web Server

É 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.

Configurações do Zabbix

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.

Zabbix Windows Agent com OpenSSL

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.

Cryptography

Escondendo o arquivo com lista de senhas mais comuns

Para aumentar a complexidade de ataques de força bruta sobre senha, é sugerido limitar o acesso ao arquivo ui/data/top_passwords.txt modificando a configuração do Web Server. Este arquivo contém uma lista das senhas mais comuns e com contexto específico, e é usado para prevenir os usuários de criar senhas semelhantes se o parâmetro Avoid easy-to-guess passwords estiver habilitado na política de senha.

Por exemplo, no NGINX o acesso ao arquivo pode ser limitado usando a diretiva location:

location = /data/top_passwords.txt {​​​​​​​
           deny all;
           return 404;
       }​​​​​​​

No Apache, usando o arquivo .htacess:

<Files "top_passwords.txt">  
         Order Allow,Deny
         Deny from all
       </Files>

Zabbix Security Advisories and CVE database

See Zabbix Security Advisories and CVE database.