112 lines
4.4 KiB
Plaintext
112 lines
4.4 KiB
Plaintext
# INSTRUÇÕES DE INSTALAÇÃO - AGENTE ZABBIX P/ OPENVPN (CACHE MODE)
|
|
==================================================================
|
|
|
|
Para que o monitoramento do OpenVPN funcione no Template Hybrid Gold (v2+), você deve realizar os passos abaixo em CADA firewall pfSense.
|
|
|
|
⚠️ NOTA IMPORTANTE: Esta versão utiliza um sistema de CACHE para evitar timeouts no Zabbix.
|
|
- openvpn-collector.sh: Roda via CRON a cada minuto e coleta dados dos sockets.
|
|
- openvpn-discovery.sh: Apenas lê o cache instantaneamente.
|
|
|
|
REQUISITOS
|
|
----------
|
|
1. Acesso SSH ao pfSense (Opção 8 no console).
|
|
2. Pacote "Zabbix Agent" instalado no pfSense (System > Package Manager).
|
|
3. OpenVPN rodando e com usuários conectados.
|
|
|
|
PASSO 1: INSTALAR OS SCRIPTS
|
|
----------------------------
|
|
1. Crie a pasta se não existir:
|
|
mkdir -p /opt/zabbix/
|
|
|
|
2. Copie os arquivos da pasta 'files/' para o firewall em '/opt/zabbix/':
|
|
- openvpn-collector.sh
|
|
- openvpn-discovery.sh
|
|
|
|
3. Dê permissão de execução:
|
|
chmod +x /opt/zabbix/openvpn-collector.sh
|
|
chmod +x /opt/zabbix/openvpn-discovery.sh
|
|
|
|
PASSO 2: CONFIGURAR O CRON JOB
|
|
------------------------------
|
|
Como a coleta via socket é pesada para o timeout do agente, usamos o cron para atualizar o cache.
|
|
|
|
1. Instale o pacote "Cron" no pfSense (opcional, mas facilita) OU edite via terminal:
|
|
|
|
vi /etc/crontab
|
|
|
|
2. Adicione a seguinte linha no final do arquivo:
|
|
|
|
* * * * * root /opt/zabbix/openvpn-collector.sh
|
|
|
|
3. Salve e saia. O cron irá atualizar o arquivo /tmp/openvpn_discovery.json a cada minuto.
|
|
|
|
PASSO 3: HABILITAR PERMISSÕES E INCLUDE NO AGENTE
|
|
-------------------------------------------------
|
|
O usuário 'zabbix' precisa de permissão para ler os sockets e o arquivo de configuração de UserParameter precisa ser carregado.
|
|
|
|
1. Edite o arquivo de configuração do agente:
|
|
vi /usr/local/etc/zabbix7/zabbix_agentd.conf
|
|
(O caminho pode variar: zabbix6, zabbix5, etc)
|
|
|
|
2. Adicione/Verifique as seguintes configurações:
|
|
|
|
# Carregar UserParameters
|
|
Include=/usr/local/etc/zabbix7/zabbix_agentd.conf.d/*.conf
|
|
|
|
# Aumentar Timeout (recomendado)
|
|
Timeout=30
|
|
|
|
# Permitir execução de comandos remotos (se necessário para debug)
|
|
UnsafeUserParameters=1
|
|
|
|
3. Adicione o usuário zabbix ao grupo 'wheel' para ter acesso aos sockets do OpenVPN:
|
|
pw groupmod wheel -m zabbix
|
|
|
|
PASSO 4: INSTALAR USERPARAMETERS
|
|
--------------------------------
|
|
1. Copie o arquivo 'files/userparameter_openvpn.conf' para '/usr/local/etc/zabbix7/zabbix_agentd.conf.d/userparameter_openvpn.conf'
|
|
|
|
PASSO 5: REINICIAR E TESTAR
|
|
---------------------------
|
|
1. Reinicie o agente:
|
|
service zabbix_agentd restart
|
|
|
|
2. Gere o cache manualmente pela primeira vez:
|
|
/opt/zabbix/openvpn-collector.sh
|
|
|
|
3. Teste a leitura do discovery pelo agente:
|
|
zabbix_agentd -t openvpn.discovery
|
|
|
|
Deve retornar algo como: [t|{"data":[{"{#VPN.USER}":"joao",...}]}]
|
|
|
|
TROUBLESHOOTING
|
|
---------------
|
|
- Se zabbix_agentd -t retornar "Permission denied": Verifique se o usuário zabbix está no grupo wheel.
|
|
- Se retornar TIMEOUT: Verifique se você está usando o script DE LEITURA (openvpn-discovery.sh) no UserParameter e não o coletor.
|
|
- Se retornar VAZIO { "data": [] }: Execute o coletor manualmente e veja se gera erros. Verifique se existem arquivos em /var/etc/openvpn/server*/sock
|
|
|
|
PASSO 6: INSTALAR O ACCESS TRACKER (REPLAY DE ACESSOS) [OPCIONAL]
|
|
------------------------------------------------------------------
|
|
O Access Tracker é um script adicional que correlaciona usuários VPN com a tabela de estados do firewall,
|
|
permitindo visualizar quais destinos cada usuário acessou (replay de sessão).
|
|
|
|
1. Copie o arquivo 'files/openvpn-access-tracker.sh' para '/opt/zabbix/':
|
|
chmod +x /opt/zabbix/openvpn-access-tracker.sh
|
|
|
|
2. Adicione ao cron (executa a cada minuto):
|
|
echo '* * * * * root /opt/zabbix/openvpn-access-tracker.sh' >> /etc/crontab
|
|
|
|
3. O script gerará logs em /var/log/openvpn_user_activity.log
|
|
Formato: TIMESTAMP|USER|VIRTUAL_IP|DESTINO:PORTA|PROTOCOLO|ESTADO
|
|
|
|
Nota: Este script requer que o openvpn-collector.sh esteja rodando (usa o cache de métricas).
|
|
|
|
NOVAS MÉTRICAS DISPONÍVEIS (v7)
|
|
-------------------------------
|
|
- openvpn.user.time_online[USER]: Tempo online em segundos
|
|
- openvpn.user.bytes_recv.cached[USER]: Bytes recebidos (cache)
|
|
- openvpn.user.bytes_sent.cached[USER]: Bytes enviados (cache)
|
|
- openvpn.access.destinations[USER]: Lista de destinos acessados
|
|
- openvpn.access.log.tail[N]: Últimas N linhas do log de replay
|
|
|