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
Entenda o que é Imagem Forense e sua importância na tecnologia
O que de fato é imagem forense? Para ser direto, Image Forensics é um ramo específico da análise forense que lida com vários tipos de ataques. Alguns deles incluem: A autenticidade de
Proteja seu site: aprenda a identificar vulnerabilidades com WhatWeb
Todos nós temos contato direto ou indireto a sites e aplicações web. E, como bem sabemos, essas aplicações são alvos de ataques massivos de hackers e pessoas mau intencionadas. Por
OWASP Top 10: Conheça as principais vulnerabilidades web de 2021
O que é a OWASP Top 10? Saudações, pessoal! É importante perceber que com a ascensão das tecnologias web surgiram também novas necessidades de segurança destas. Atualmente, é natural que