Monitorando o serviço OpenVPN PfSense com Prometheus e Grafana.

Monitorando o serviço OpenVPN 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 Kubernetes: Avaliando a Segurança do Cluster - Part 1
Próxima Afinal, você sabe o que é um API Gateway?

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

DevOps

Ansible Vault: Criptografando Playbooks e Variáveis

Automatize sua infraestrutura sem correr riscos de segurança O Ansible foi um dos responsáveis pela popularização da automação de configurações por meio das suas playbooks (scripts no formato YAML, onde

Segurança

Como aprender segurança de verdade.

Continuando a séria de artigos que estou escrevendo a pedido da 4Linux, gostaria de discutir um pouco a respeito do aprendizado de segurança da informação. Muitas vezes me perguntam o

Segurança

LGPD e encriptação de dados no PostgreSQL

LGPD Em 2018, o Brasil adotou a LGPD (Lei Geral de Proteção de dados Pessoais – LGPD/LGPDP), assim como diversos outros países (os EUA, a CCPA e a União Europeia,