Publicado em

Configuração inicial e ajustes de pós instalação

Autores
  • avatar
    Nome
    Felipe Padilha

Índice

Introdução

Após a instalação do Zabbix, é fundamental realizar uma configuração inicial adequada para garantir um funcionamento seguro e eficiente do servidor. Neste artigo, abordaremos os ajustes essenciais para personalizar o ambiente de monitoramento, garantindo que os hosts, itens e templates sejam configurados corretamente desde o início. Além disso, vamos verificar as boas práticas para otimizar a administração do Zabbix, facilitando a escalabilidade e a manutenção a longo prazo.

Objetivos principais:

  • Ajustar parâmetros para aumentar a segurança do servidor.
  • Aplicar boas práticas para organização de hosts e templates via grupos.
  • Habilitar o inventário automático de hosts
  • Configurar e personalizar o ambiente do Zabbix logo após a instalação.

Ajustar parâmetros de segurança

Habilitar HTTPS

Para habilitar o https, vou utilizar o domínio zabbix.felipepadilha.com.br, que irá resolver para o endereço IP da minha instalação do Zabbix. E com o Certbot será gerado os certificados HTTPS para acesso criptografado.

Este é um passo muito importante se o seu servidor Zabbix fizer parte de uma rede não segura (ou seja, que você não administra completamente), pois o protocolo HTTP transmite as informações em texto claro. Veja um exemplo abaixo da captura de pacotes enquanto realizada login no servidor Zabbix sem suporte a SSL: Blog0002Imagem0001

Perceba na caixa destacada que os valores dos campos de login estão completamente visíveis na captura de pacotes, qualquer pessoa com capacidade de escutar pacotes nesta rede conseguiria ver as credenciais de acesso do meu servidor Zabbix.

Para resolver o problema, após configurar seu servidor DNS para apontar corretamenteo domínio que irá utilizar no seu servidor Zabbix, instale o certbot (utilitário para gerenciar certificados SSL) por meio dos comandos abaixo:

sudo apt update -y
sudo apt install -y python3 python3-venv libaugeas0
sudo python3 -m venv /opt/certbot
sudo /opt/certbot/bin/pip install --upgrade pip
sudo /opt/certbot/bin/pip install certbot certbot-nginx
sudo ln -s /opt/certbot/bin/certbot /usr/bin/certbot

Com os comandos acima, teremos o Certbot instalado. Antes de emitirmos o certificado, garanta que o parâmetro server_name no arquivo de configuração do nginx do Zabbix (/etc/zabbix/nginx.conf) está preenchido corretamente com o endereço DNS.

Execute:

sudo certbot --nginx
Você pode preencher com seu endereço de email ou pressionar enter para pular, recomendo preencher com o endereço de email para os casos que a LetsEncrypt necessite realizar contato: Blog0002Imagem0002
Ele irá solicitar para aceitar os termos de uso, leia e aceite posteriormente pressionando y. Blog0002Imagem0003

Nota do autor: eu duvido que alguém leu os termos.

Aqui fica a sua escolha digitar yes ou no, se aceitar irá receber e-mails promocionais dos desenvolvedores do certbot. Blog0002Imagem0004
O certbot irá identificar automaticamente o domínio em uso, basta confirmarmos o ID que desejamos emitir o certificado HTTPS. Lembrando que neste ponto, ambas as portas 80 e 443 devem estar publicamente alcançáveis no servidor. Blog0002Imagem0005
Se ocorrer tudo certo, você verá a mensagem que o certificado foi emitido. Agora, seu servidor já deve estar respondendo via HTTPS. Blog0002Imagem0006 Blog0002Imagem0007
Perceba a diferença na captura de pacotes ao realizar um login no Zabbix agora: Blog0002Imagem0008

Não é possível nem mesmo ver a URI ou o método HTTP que foi acessado.

Por fim, vamos adicionar uma tarefa na cron para que o certbot renove os certificados de forma automática:

echo "0 0,12 * * * root /opt/certbot/bin/python -c 'import random; import time; time.sleep(random.random() * 3600)' && sudo certbot renew -q" | sudo tee -a /etc/crontab > /dev/null

Alterar a senha do usuário admin

Também não queremos que o usuário Admin fique com a senha padrão. Para alteramos, navegue até Usuários -> Usuários no menu lateral esquerdo. Blog0002Imagem0009
Você irá cair na tela de administração de usuários, se quisermos criar um novo usuário, editar, excluir ou inativar, fazemos por aqui. Blog0002Imagem0010
Clique no usuário Admin e então clique no botão Alterar senha. Preencha com a nova senha e clique no botão Atualizar no fim do formulário. Blog0002Imagem0011

Pronto, com isso alteramos a senha do usuário Admin.

Entender quais portas o Zabbix utiliza para restringir acesso apenas a endereços IP permitidos.

Este ponto dependerá bastante da sua infraestrutura local e como pretende usar o Zabbix (na nuvem, instalado localmente). Mas irei deixar um exemplo de configuração de firewall utilizando o UFW (Uncomplicated Firewall), que vem instalado por padrão junto do Ubuntu, permitindo acesso apenas a redes locais.

Mas atenção!

Antes de iniciarmos qualquer configuração de firewall, na qual existe uma chance de perder acesso ao servidor, garanta que você ainda consegue acessar o console de alguma forma para eventuais correções. Valide que o ufw está inativo por meio do comando sudo ufw status. Caso ele esteja ativo por algum motivo, desabilite-o antes de criar as regras com o comando sudo ufw disable.

root@ubuntu-s-1vcpu-1gb-nyc1-01:~# sudo ufw status
Status: inactive

No script abaixo existem comentários para o que cada porta representa.

# Variável que representa o seu endereço IP público ou o IP que fecha a conexão com o Zabbix
MEU_IP="200.100.50.25"

# Bloquear tudo por padrão
sudo ufw default deny incoming
sudo ufw default allow outgoing

# Liberar SSH (22/TCP)
sudo ufw allow from 10.0.0.0/8 to any port 22 proto tcp
sudo ufw allow from 172.16.0.0/12 to any port 22 proto tcp
sudo ufw allow from 192.168.0.0/16 to any port 22 proto tcp
sudo ufw allow from ${MEU_IP}/32 to any port 22 proto tcp

# Liberar acesso ao frontend do Zabbix (HTTP/HTTPS)
sudo ufw allow from 10.0.0.0/8 to any port 80 proto tcp
sudo ufw allow from 172.16.0.0/12 to any port 80 proto tcp
sudo ufw allow from 192.168.0.0/16 to any port 80 proto tcp
sudo ufw allow from ${MEU_IP}/32 to any port 80 proto tcp

sudo ufw allow from 10.0.0.0/8 to any port 443 proto tcp
sudo ufw allow from 172.16.0.0/12 to any port 443 proto tcp
sudo ufw allow from 192.168.0.0/16 to any port 443 proto tcp
sudo ufw allow from ${MEU_IP}/32 to any port 443 proto tcp

# Liberar portas de monitoramento Zabbix Agent (10050/TCP e 10051/TCP)
sudo ufw allow from 10.0.0.0/8 to any port 10050 proto tcp
sudo ufw allow from 172.16.0.0/12 to any port 10050 proto tcp
sudo ufw allow from 192.168.0.0/16 to any port 10050 proto tcp
sudo ufw allow from ${MEU_IP}/32 to any port 10050 proto tcp

sudo ufw allow from 10.0.0.0/8 to any port 10051 proto tcp
sudo ufw allow from 172.16.0.0/12 to any port 10051 proto tcp
sudo ufw allow from 192.168.0.0/16 to any port 10051 proto tcp
sudo ufw allow from ${MEU_IP}/32 to any port 10051 proto tcp

# Liberar SNMP (161/UDP e 162/UDP)
sudo ufw allow from 10.0.0.0/8 to any port 161 proto udp
sudo ufw allow from 172.16.0.0/12 to any port 161 proto udp
sudo ufw allow from 192.168.0.0/16 to any port 161 proto udp
sudo ufw allow from ${MEU_IP}/32 to any port 161 proto udp

sudo ufw allow from 10.0.0.0/8 to any port 162 proto udp
sudo ufw allow from 172.16.0.0/12 to any port 162 proto udp
sudo ufw allow from 192.168.0.0/16 to any port 162 proto udp
sudo ufw allow from ${MEU_IP}/32 to any port 162 proto udp

# Ativar o UFW
sudo ufw enable

# Verificar as regras aplicadas
sudo ufw status verbose

Boas práticas para organização via grupos

A separação de hosts e templates por grupos auxilia na ornigação do ambiente, além de facilitar ações massivas de mudança de configuração nos hosts. E se você pretende usar um Grafana depois, você irá me agradecer por já te fazer pensar em algo um pouco mais organizado desde o início.

Este é um ponto que depende, e varia muito, de ambiente para ambiente e quiçá você irá apenas saber qual é o melhor formato para o seu caso de uso durante o dia a dia. Mas, ainda sim, existem coisas que são padrões em praticamente qualquer instalação.

Neste momento inicial, preocupe-se mais com os grupos de hosts, pois não começamos a criar templates do zero ainda. Para criar grupos, navegue até Dados coletados -> Grupos de Hosts. Blog0002Imagem0012
Aqui não tem muito segredo, ao clicar no botão Criar grupo de hosts um modal irá abrir e podemos preencher diretamente o nome do grupo. Blog0002Imagem0013

No Zabbix é possível criar hierarquias entre grupos utilizando o separador /. Ou seja, podemos ter o grupo BRASIL e o subgrupo BRASIL/SAO_PAULO. O que eu recomendo aqui é:

  • Crie grupos para separar por localização geográfica: pontos de presença, data-centers, cidades, estados (LOCAL/SUBLOCAL)
  • Crie grupos para seprar por tipo de equipamento: roteadores, switches, servidores (EQUIPAMENTO/TIPO)
  • Crie grupos para separar por sistema operacional: Linux, Windows, Proxmox (SO/NOME)
  • Crie grupos para separar serviços, quando se tem múltiplos servidores: (SO/LINUX/DNS)

Habilitar o inventário automático de hosts

O inventário automático irá permitir que o Zabbix documente os hosts com base nos itens coletados via monitoramento, isso facilita bastante a vida, principalmente quando desejamos filtrar hosts por versão de software ou hardware.

Para isso, navegue até Administração -> Geral -> Outros e altere a opção Modo padrão de inventário de host para Automático Blog0002Imagem0014

Personalizar o ambiente Zabbix

Créditos: InitMax

Trocando as Logos

Para fazermos a personalização do servidor precisamos de três imagens com os seguintes tamanhos:

  • Logo principal: 114x30px
  • Logo do menu lateral: 91x24px
  • Logo do menu lateral minimizado: 24x24 px

Para trocarmos as imagens, primeiro, crie dois diretórios para salvar nossas modificações:

sudo mkdir -p /usr/share/zabbix/local/conf
sudo mkdir -p /usr/share/zabbix/rebranding

Depois faça upload das imagens no diretório rebranding, você pode fazer via SCP ou usar algum utilitário gráfico, como o WinSCP.

Crie o arquivo responsável por realizar a troca das imagens usando o comando abaixo, lembre-se de alterar nome_da_imagem.png para o valor real do nome do arquivo que foi realizado o upload:

echo "<?php
return [
    'BRAND_LOGO' => './rebranding/nome_da_imagem.png',
    'BRAND_LOGO_SIDEBAR' => './rebranding/nome_da_imagem.png',
    'BRAND_LOGO_SIDEBAR_COMPACT' => './rebranding/nome_da_imagem.png',
    'BRAND_FOOTER' => 'Felipe Padilha',
    'BRAND_HELP_URL' => 'https://felipepadilha.com.br/'
];
" | sudo tee /usr/share/zabbix/local/conf/brand.conf.php > /dev/null

E pronto, nosso rebranding estará concluído.