- 3 Servidor web
- Visão geral
- Forçando o redirecionamento da URL raiz para o Zabbix SSL
- Habilitando HTTP Strict Transport Security (HSTS) no web server
- Aplicando cookies de sessão Secure e SameSite no Zabbix
- Habilitando a Content Security Policy (CSP) no web server
- Desativando a exposição de informações do web server
- Desativando as páginas de erro padrão do servidor web
- Removendo a página de teste do servidor web
- Definir o cabeçalho HTTP X-Frame-Options
- Ocultando o arquivo com a lista de senhas comuns
3 Servidor web
Visão geral
Esta seção contém as melhores práticas para configurar o servidor web de forma segura.
Forçando o redirecionamento da URL raiz para o Zabbix SSL
Em sistemas baseados em RHEL, adicione um virtual host à configuração do Apache (/etc/httpd/conf/httpd.conf) e defina um redirecionamento permanente da raiz do documento para a URL SSL do Zabbix.
Observe que example.com deve ser substituído pelo nome real do server.
# Adicione as linhas:
<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
Habilitando HTTP Strict Transport Security (HSTS) no web server
Para proteger o frontend do Zabbix contra ataques de downgrade de protocolo, recomendamos habilitar a política HSTS no web server.
Para habilitar a política HSTS para o seu frontend do Zabbix na configuração do Apache, siga estas etapas:
1. Localize o arquivo de configuração do seu virtual host:
/etc/httpd/conf/httpd.confem sistemas baseados em RHEL/etc/apache2/sites-available/000-default.confem Debian/Ubuntu
2. Adicione a seguinte diretiva ao arquivo de configuração do seu virtual host:
<VirtualHost *:*>
Header set Strict-Transport-Security "max-age=31536000"
</VirtualHost>
3. Reinicie o serviço Apache para aplicar as alterações:
# Em sistemas baseados em RHEL:
systemctl restart httpd.service
# Em Debian/Ubuntu
systemctl restart apache2.service
Aplicando cookies de sessão Secure e SameSite no Zabbix
Ao configurar o Zabbix, é essencial aplicar os atributos secure e SameSite aos cookies de sessão para aumentar a segurança e evitar ataques de falsificação de solicitação entre sites (CSRF). No entanto, aplicar SameSite=Strict pode causar problemas em alguns cenários, como:
- Widgets de URL do dashboard exibindo "user not logged in" ao incorporar iframes do mesmo domínio.
- Usuários que acessam o dashboard via HTTP em vez de HTTPS podem enfrentar problemas de login.
- Impossibilidade de compartilhar URLs para seções específicas do menu do Zabbix ou hosts.
Para mitigar esses problemas, os usuários devem ter uma forma de ajustar a política SameSite.
1. Cookies Secure
Definir a flag secure garante que os cookies sejam transmitidos apenas por HTTPS, evitando exposição em conexões não criptografadas.
Para habilitar cookies secure no Zabbix, adicione ou modifique a seguinte configuração na configuração do servidor web:
Para Apache:
Header always edit Set-Cookie ^(.*)$ $1;Secure
Para Nginx:
proxy_cookie_path / "/; Secure";
Certifique-se de que seu frontend do Zabbix seja acessado via HTTPS; caso contrário, cookies com a flag Secure não serão enviados.
2. Configurando o atributo SameSite
As configurações do servidor web também podem aplicar o atributo SameSite:
Para Apache:
<IfModule mod_headers.c>
Header onsuccess edit Set-Cookie (.*) "$1; SameSite=Strict"
</IfModule>
Para Nginx (versão 1.19.3+):
proxy_cookie_flags ~ samesite=Strict; # Substitua ~ por 'zbx_session' para maior especificidade
Habilitando a Content Security Policy (CSP) no web server
Para proteger o frontend do Zabbix contra Cross Site Scripting (XSS), injeção de dados e ataques semelhantes, recomendamos habilitar a Content Security Policy no web server. Para isso, configure o web server para retornar o HTTP header.
A configuração de header CSP a seguir é válida apenas para a instalação padrão do frontend do Zabbix e para casos em que todo o conteúdo se origina do domínio do site (excluindo subdomínios). Uma configuração diferente de header CSP pode ser necessária se você estiver, por exemplo, configurando o widget URL para exibir conteúdo de subdomínios do site ou domínios externos, trocando de OpenStreetMap para outro mecanismo de mapa, ou adicionando CSS ou widgets externos. Se você estiver usando o método de autenticação multifator Duo Universal Prompt multi-factor authentication, certifique-se de adicionar "duo.com" à diretiva CSP no arquivo de configuração do seu virtual host.
Para habilitar CSP para o seu frontend do Zabbix na configuração do Apache, siga estas etapas:
1. Localize o arquivo de configuração do seu virtual host:
/etc/httpd/conf/httpd.confem sistemas baseados em RHEL/etc/apache2/sites-available/000-default.confem Debian/Ubuntu
2. Adicione a seguinte diretiva ao arquivo de configuração do seu virtual host:
<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 as alterações:
# Em sistemas baseados em RHEL:
systemctl restart httpd.service
# Em Debian/Ubuntu
systemctl restart apache2.service
Desativando a exposição de informações do web server
Para melhorar a segurança, é recomendável desativar todas as assinaturas do web server.
Por padrão, o web server está expondo a assinatura do software:

A assinatura pode ser desativada adicionando os seguintes parâmetros ao arquivo de configuração do Apache:
ServerSignature Off
ServerTokens Prod
A assinatura do PHP (cabeçalho HTTP X-Powered-By) pode ser desativada alterando o arquivo de configuração php.ini (por padrão, a assinatura está desativada):
expose_php = Off
É necessário reiniciar o web server para que as alterações no arquivo de configuração sejam aplicadas.
Para segurança adicional, você pode usar a ferramenta mod_security com o Apache (pacote libapache2-mod-security2). Essa ferramenta permite remover a assinatura do server em vez de remover apenas a versão da assinatura do server. A assinatura do server pode ser alterada para qualquer valor definindo "SecServerSignature" com o valor desejado após instalar o mod_security.
Consulte a documentação do seu web server para obter ajuda sobre como remover/alterar assinaturas de software.
Desativando as páginas de erro padrão do servidor web
Para evitar a exposição de informações, é recomendável desativar as páginas de erro padrão.
Por padrão, um servidor web usa páginas de erro integradas:

Essas páginas de erro padrão devem ser substituídas/removidas. Por exemplo, a diretiva "ErrorDocument" pode ser usada para definir uma página/texto de erro personalizado para o servidor web Apache.
Consulte a documentação do seu servidor web para obter ajuda sobre como substituir/remover as páginas de erro padrão.
Removendo a página de teste do servidor web
Para evitar a exposição de informações, é recomendável remover a página de teste do servidor web.
Por padrão, a raiz do servidor web Apache contém a página de teste index.html:

Consulte a documentação do seu servidor web para encontrar ajuda sobre como remover as páginas de teste padrão.
Definir o cabeçalho HTTP X-Frame-Options
Por padrão, o Zabbix é configurado com o parâmetro Use X-Frame-Options HTTP header definido como SAMEORIGIN.
Isso significa que o conteúdo só pode ser carregado em um frame que tenha a mesma origem da própria página.
Os elementos do frontend do Zabbix que carregam conteúdo de URLs externas (nomeadamente, o widget de dashboard URL dashboard widget) exibem o conteúdo recuperado em um sandbox com todas as restrições de sandbox habilitadas.
Essas configurações aumentam a segurança do frontend do Zabbix e oferecem proteção contra ataques de XSS e clickjacking. Usuários Super admin podem modificar os parâmetros Use iframe sandboxing e Use X-Frame-Options HTTP header conforme necessário. Avalie cuidadosamente os riscos e benefícios antes de alterar as configurações padrão. Não é რეკomendado desativar completamente o sandboxing de iframe ou o cabeçalho HTTP X-Frame-Options.
Ocultando o arquivo com a lista de senhas comuns
Para aumentar a complexidade de ataques de força bruta de senha, é recomendável limitar o acesso ao arquivo ui/data/top_passwords.txt.
Esse arquivo contém uma lista das senhas mais comuns e específicas ao contexto e impede que os usuários definam essas senhas (se o parâmetro Avoid easy-to-guess passwords estiver habilitado na password policy).
Para limitar o acesso ao arquivo top_passwords.txt, modifique a configuração do seu web server.
No Apache, o acesso ao arquivo pode ser limitado usando o arquivo .htaccess:
<Files "top_passwords.txt">
Order Allow,Deny
Deny from all
</Files>
No NGINX, o acesso ao arquivo pode ser limitado usando a diretiva location:
location = /data/top_passwords.txt {
deny all;
return 404;
}