Ir para o conteúdo

Capítulo 52 – Monitoramento com Monit

Introdução

O Monit pode ser descrito como um “mini Zabbix” embutido dentro do próprio OPNsense.
Ele é uma ferramenta simples, leve e eficiente, voltada para monitorar serviços locais, executar ações automáticas e enviar alertas quando algum problema é detectado.

Embora o Zabbix seja a plataforma mais robusta e recomendada para monitorar infraestruturas completas (incluindo o próprio firewall), o Monit tem seu valor quando o objetivo é garantir o funcionamento básico de serviços essenciais dentro do OPNsense — como VPNs, gateways e o próprio sistema de detecção de intrusão.

Neste capítulo, veremos como habilitar e configurar o Monit para enviar alertas e tomar ações automáticas diante de falhas, incluindo:

  • Notificação por e-mail de eventos importantes;
  • Reinício automático de túneis VPN (OpenVPN, IPsec e WireGuard);
  • Alertas sobre falhas de gateway;
  • Monitoramento de logs do CrowdSec.

1. Configuração Inicial do Monit

Habilitando o serviço

  1. Acesse o menu Services → Monit → Settings.
  2. Marque a opção Enable Monit.
  3. Configure o servidor de e-mail (SMTP), incluindo:
    • Mail server, Port, Username, Password e SSL connection conforme seu provedor.
  4. Clique em Save para salvar as configurações.

Essa etapa garante que o Monit possa enviar alertas automaticamente para administradores via e-mail.


Definindo destinatários de alertas

  1. Vá até a guia Alert Settings.
  2. Clone o alerta padrão que vem desabilitado.
  3. Marque Enable Alert.
  4. No campo Recipient, informe o e-mail do destinatário que receberá os alertas.
  5. No campo Mail Format, insira o modelo abaixo (substituindo FROM pelo e-mail de envio):
   from: notifica@gmail.com
   subject: $SERVICE $EVENT at $DATE
   message: Descrição: $DESCRIPTION.
   Host: $HOST
   Serviço: $SERVICE
   Ação Realizada: $ACTION

   Este é um informe automático.
  1. Clique em Save e, em seguida, em Apply.

2. Monitorando a Disponibilidade de Gateways

É comum que links de Internet (WAN) apresentem instabilidades. O Monit pode ser configurado para emitir alertas quando um gateway cair, permitindo ação imediata do administrador.

Criando o teste “Gateway_Down”

  1. Vá até Services → Monit → Service Tests Settings.
  2. Adicione um novo teste com:
    • Name: Gateway_Down
    • Condition: content = "loss -> down"
    • Action: Alert
  3. Clique em Save.

Criando o serviço “Gateway_Down_Detectado”

  1. Vá até Services → Monit → Service Settings.
  2. Adicione um novo serviço:
    • Enable service checks: marcado
    • Name: Gateway_Down_Detectado
    • Type: File
    • Path: /var/log/gateways/latest.log
    • Tests: Gateway_Down
    • Description: Notifica gateway indisponível
  3. Clique em Save.

3. Reiniciando OpenVPN automaticamente em caso de falha

O Monit pode monitorar a conectividade de uma VPN e reiniciá-la automaticamente se detectar falha de comunicação.

Atenção

Ao executar o comando de reinício, todas as instâncias OpenVPN serão reiniciadas. Caso existam múltiplos túneis, todos oscilarão momentaneamente.

Criando o teste “Reinicia_VPN_SE_Falhar_Ping”

  1. Vá até Service Tests Settings.
  2. Adicione um novo teste:
    • Name: Reinicia_VPN_SE_Falhar_Ping
    • Condition: failed ping
    • Action: Restart
  3. Clique em Save.

Criando o serviço “Conectividade_VPN_Matriz”

  1. Vá até Service Settings.
  2. Adicione um novo serviço:
    • Enable service checks: marcado
    • Name: Conectividade_VPN_Matriz
    • Type: Remote Host
    • Address: IP da outra ponta da VPN (ex.: 10.0.0.1)
    • Start: /bin/sh -c '/usr/local/sbin/pluginctl -s openvpn start'
    • Stop: /bin/sh -c '/usr/local/sbin/pluginctl -s openvpn stop'
    • Tests: Reinicia_VPN_SE_Falhar_Ping
    • Description: Reinicia VPN matriz se cair
  3. Clique em Save.

4. Reiniciando IPsec automaticamente em caso de falha

Importante

Aqui no IPSec, ao usar o ID do túnel, apenas o túnel em questão será afetado pelo restart.

Criando o teste “Reinicia_IPSec_Se_Falhar_Ping”

  1. Vá até Service Tests Settings.
  2. Crie um novo teste:

    • Name: Reinicia_IPSec_Se_Falhar_Ping
    • Condition: failed ping address 192.168.2.1 (substitua pelo IP interno (LAN) do próprio firewall, acessível pela VPN)
    • Action: Start
    • Clique em Save.

Criando o serviço “Conectividade_IPSec_Matriz”

  1. Vá até Service Settings.
  2. Adicione um novo serviço:

    • Enable service checks: marcado
    • Name: Conectividade_IPSec_Matriz
    • Type: Remote Host
    • Address: IP da LAN do outro firewall (ex.: 192.168.1.1)
    • Start: /bin/sh -c 'swanctl -i -c <ID_DO_TUNEL> -t 5'
    • Tests: Reinicia_IPSec_Se_Falhar_Ping
    • Description: Reinicia Túnel IPsec Matriz se cair
    • Clique em Save.

Importante

O ID do túnel pode ser obtido na tela de instâncias da VPN IPsec (coluna ID).


5. Reiniciando WireGuard automaticamente em caso de falha

Atenção

Reiniciar o serviço WireGuard faz com que todas as conexões sejam momentaneamente reiniciadas.

Criando o teste “Reinicia_Wireguard_Se_Falhar_Ping”

  1. Vá até Service Tests Settings.
  2. Crie um novo teste:

    • Name: Reinicia_Wireguard_Se_Falhar_Ping
    • Condition: failed ping
    • Action: Restart
    • Clique em Save.

Criando o serviço “Conectividade_Wireguard_Matriz”

  1. Vá até Service Settings.
  2. Adicione um novo serviço:

    • Enable service checks: marcado
    • Name: Conectividade_Wireguard_Matriz
    • Type: Remote Host
    • Address: IP remoto da VPN (ex.: 10.90.0.2)
    • Start: /bin/sh -c 'pluginctl -s wireguard start'
    • Stop: /bin/sh -c 'pluginctl -s wireguard stop'
    • Tests: Reinicia_Wireguard_Se_Falhar_Ping
    • Description: Reinicia WireGuard Matriz se cair
    • Clique em Save.

6. Monitorando bloqueios do CrowdSec

Outra integração útil é usar o Monit para emitir alertas quando o CrowdSec bloquear endereços IP internos — o que pode indicar configurações incorretas ou falsos positivos.

Criando o teste “Crowdsec_Baniu_IP_Local”

  1. Vá até Service Tests Settings.
  2. Adicione um novo teste:

  3. Name: Crowdsec_Baniu_IP_Local

  4. Condition: content = 'ban.*(192\.168|10\.|172\.)'
  5. Action: Alert
  6. Clique em Save.

Criando o serviço correspondente

  1. Vá até Service Settings.
  2. Adicione um novo serviço:

    • Enable service checks: marcado
    • Name: Crowdsec_Baniu_IP_Local
    • Type: File
    • Path: /var/log/crowdsec/crowdsec.log
    • Tests: Crowdsec_Baniu_IP_Local
    • Description: Verifica se o CrowdSec bloqueou IP local
    • Clique em Save → Apply.

Testando o alerta

Execute o teste pelo shell:

# Simular o bloqueio de um IP interno
cscli decisions add --ip 192.168.100.101

# Remover o bloqueio
cscli decisions delete --ip 192.168.100.101

Ao adicionar o IP, o Monit deverá emitir um alerta informando que um endereço interno foi banido pelo CrowdSec.


Conclusão

O Monit é um recurso simples, porém extremamente útil dentro do OPNsense. Ele permite que o administrador monitore serviços críticos, envie alertas imediatos por e-mail e até execute ações corretivas automáticas — como reiniciar túneis VPN ou identificar falhas de conectividade.

Embora o Zabbix ofereça recursos de monitoramento mais amplos e escaláveis, o Monit é uma excelente solução local, integrada ao firewall e de rápida configuração. Quando bem ajustado, pode ser a diferença entre detectar uma falha tarde demais e corrigir automaticamente em tempo hábil, garantindo maior resiliência e continuidade operacional.