Guia Completo: Monitorando OpenVPN no Firewall pfSense com Prometheus e Grafana

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:

CURSOSCONSULTORIA

Anterior Melhore a segurança do seu ambiente Kubernetes com práticas eficazes
Próxima Entenda o papel crucial do API Gateway na infraestrutura de TI

About author

Felipe Valim
Felipe Valim 3 posts

Felipe Valim é Graduado em Sistemas de Informação pelo Centro Universitario Eniac, possui as certificações LPIC-3 Virtualization and Containerization, LPIC-2, LPIC-1, Zabbix Certified Professional & Specialist. Com mais de 8 anos de experiência em tecnologias Open Source, atualmente integra o time de Consultoria e Treinamento 4Linux.

View all posts by this author →

Você pode gostar também

Segurança

Keycloak: Gerenciamento de Identidade e Acesso para WebApps e Serviços RESTful

O Keycloak [1] é um software open source de gerenciamento de identidade e acesso voltado para WebApps e RESTful web services. Inicialmente desenvolvido em 2014 pela comunidade de JBoss. Em

Segurança

Entenda o Ataque Man-In-The-Middle e Como Detectá-lo

Você sabe o que é MITM? O Man-In-The-Middle (em português: Homem no Meio), faz referência ao atacante que intercepta os dados trocados entre duas partes (por exemplo: você e o

Segurança

Aprenda a usar o Netcat para auditoria de segurança em Linux

Nesta dica da semana da 4Linux, iremos aprender como trabalhar com o nc (Netcat), uma ferramente utilizada para auditoria de vulnerabilidades e segurança. O que é? O comando netcat é