Guia Completo: Monitorando OpenVPN no Firewall pfSense com Prometheus e Grafana
Conceito
OpenVPN é uma solução de VPN (Virtual Private Network) open-source que possibilita a criação de conexões seguras (criptografadas) ponto a ponto. Pode ser de diferentes modelos, como client-to-server ou server-to-server.
Cenário
Nesse post veremos como monitorar o serviço de OpenVPN no Firewall pfSense utilizando as ferramentas de monitoramento Prometheus e Grafana. O tipo de conexão utilizado é o client-to-server. Através destes passos será possível monitorar informações de status do serviço e estatísticas das conexões dos usuários.
Pré-requisitos
- Servidor Prometheus em execução;
- Servidor Grafana em execução;
- Servidor Pfsense com OpenVPN em execução;
Configurar exportador prometheus no PfSense
Para o servidor Prometheus coletar as métricas do pfSense, é necessário configurar um exportador que realizará um Listen (Escuta) da porta 9176 no pfSense. As liberações necessárias devem ser realizadas na sua rede para que a conexão entre o servidor Prometheus e o servidor pfSense (OpenVPN) na porta 9176 seja possível.
Instalação do Golang no PfSense
Acesse por ssh o servidor pfSense e através de seu menu, selecione a opção 8 (Shell). O pacote Go instalado fornece suporte à esta linguagem no servidor PfSense.
pkg install go Proceed with this action? [y/N]: y
Confirme se a instalação está correta, verificando a versão do GO.
sh go version # go version go version go1.16.5 freebsd/amd64 # exit
Efetue o download do exportador através de um projeto no github, extraia o arquivo e configure o local de status-log do OpenVPN.
curl -L https://github.com/kumina/openvpn_exporter/archive/v0.3.0.tar.gz --output v0.3.0.tar.gz --silent
tar xzvf v0.3.0.tar.gz
cd openvpn_exporter-0.3.0/
vi main.go +30
openvpnStatusPaths = flag.String("openvpn.status_paths", "/var/log/statusopenvpn.log", "Paths at which OpenVPN p
laces its status files.")
Realize o build do exportador, copie o seu binário para o diretório correto e teste a funcionalidade do mesmo.
go build -o openvpn_exporter main.go cp openvpn_eporter /usr/local/bin/ /usr/local/bin/openvpn_exporter 2021/08/02 12:48:46 Starting OpenVPN Exporter 2021/08/02 12:48:46 Listen address: :9176 2021/08/02 12:48:46 Metrics path: /metrics
Através do navegador, no endereço de exemplo http://192.168.61.250:9176/metrics, podemos confirmar a visualização das métricas coletadas e também validar o funcionamento do exportador. Observa na imagem abaixo:
AutoStart do exportador
Para configurar o AutoStart (start on boot) no PfSense, iremos criar o script openvpn_exporter.sh.
vi /usr/local/etc/rc.d/openvpn_exporter.sh #!/bin/sh /usr/local/bin/openvpn_exporter > /dev/null 2>&1 &
Dê permissão de execução para o script chmod +x /usr/local/etc/rc.d/openvpn_exporter.sh
Ajuste de configuração do OpenVPN no PfSense
No menu PfSense em > VPN > OpenVPN > Servers, edite as configurações de seu OpenVPN Server, seguindo o texto abaixo, mais especificamente em Custom Options. Esse ajuste criará o arquivo de log e também definirá o seu formato de estrutura.
status-version 3;status /var/log/statusopenvpn.log 30
Após clicar em Salvar, o serviço será reiniciado automaticamente.
Configuração do target no prometheus
No arquivo de configuração do prometheus, por padrão em /etc/prometheus/prometheus.yml, adicione o seguinte target:
- job_name: 'openvpn-metrics' scrape_interval: 5s static_configs: - targets: ['192.168.61.250:9176']
Reinicie o serviço do prometheus para aplicar as configurações:
systemctl restart prometheus.service systemctl status prometheus
No menu do Prometheus em Status > Targets, observe se o exportador está com o state UP, conforme imagem abaixo:
Instalação de plugin no grafana
Instale o plugin grafana-piechart-panel no servidor grafana.
grafana-cli plugins install grafana-piechart-panel systemctl restart grafana-server systemctl status grafana-server
Importar Dashboard para o Grafana
Para importar o dashboard OpenVPN Server, navegue até o endereço http://ip-grafana-server:3000/dashboard/import e cole o conteúdo da url https://raw.githubusercontent.com/fsvalim/monitoring/main/grafana/templates/7/openvpn_server.json no campo Import via panel json.
O arquivo inportado openvpn_server.json teve como base o painel da comunidade https://grafana.com/grafana/dashboards/10562.
Realizei as alterações conforme minha necessidade e você pode fazer o mesmo no seu ambiente.
Visualização do Dashboard
O resultado final deve ser algo semelhante a imagem abaixo:
Versões de softwares
- PfSense 2.5.2-RELEASE (amd64)
- OpenVPN 2.5.2 amd64-portbld-freebsd12
- Prometheus 2.27.0
- Grafana 7.5.10
Considerações finais
Neste post utilizamos o OpenVPN do pfSense, mas o exportador funciona também em outros sistemas operacionais, como Debian like, ou RHEL like.
Pode ser necessário realizar configurações adicionais de acordo com o seu ambiente ou versões.
Líder em Treinamento e serviços de Consultoria, Suporte e Implantação para o mundo open source. Conheça nossas soluções:
About author
Você pode gostar também
Docker Desktop com IA Integrada: Análise Técnica e Riscos Ocultos
A mais recente atualização do Docker Desktop trouxe um assistente de inteligência artificial nativo que promete revolucionar workflows de containerização. No entanto, uma análise técnica aprofundada revela que essa “revolução”
Como criar uma federação de usuários com Keycloak e LDAP: um tutorial passo a passo
Na primeira parte dessa série de posts, vimos de maneira geral o funcionamento do Keycloak. Nessa segunda parte veremos como criar um user federation para importar usuários da nossa base
Segurança de Software: A Importância da Auditoria de Código e Melhorias de Processos
Resumo: Este post visa esclarecer a importância da segurança de software e como a auditoria de código e melhorias nos processos são itens fundamentais para a qualidade. A auditabilidade de










