FSociety.pt

Infraestrutura Empresarial Segura | Four-Legged Firewall

View on GitHub

🔧 Manutenção

Guia completo de manutenção, backup, atualização, monitorização e troubleshooting do pfSense.


💾 Backup da Configuração

Backup Manual

Diagnostics → Backup & Restore → Backup

Opções de Backup

Opção Valor Descrição
Backup area ALL Toda a configuração
Skip RRD data ✅ Excluir gráficos (reduz tamanho)
Skip package info ❌ Incluir info de packages
Encrypt âś… Recomendado Cifrar com password

Procedimento:

1. Diagnostics → Backup & Restore
2. Backup area: ALL
3. Skip RRD data: âś…
4. Encryption: âś…
5. Password: (senha forte)
6. Download configuration

Resultado: config-pfSense.fsociety.pt-[timestamp].xml

Backup Automático

Via Cron (Diário)

Services → Cron → Add

Minute: 0
Hour: 3
Day of month: *
Month: *
Day of week: *
User: root
Command: /usr/local/bin/php -r "require_once('config.inc'); write_config('Auto backup - daily');"

Description: Daily config backup

Backup para Servidor Remoto

#!/bin/sh
# /usr/local/bin/backup-pfsense-remote.sh

DATE=$(date +%Y%m%d-%H%M%S)
BACKUP_FILE="/cf/conf/backup/config-${DATE}.xml"
REMOTE_SERVER="192.168.1.30"
REMOTE_USER="backup"
REMOTE_PATH="/backups/pfsense"

# Criar backup
/usr/local/bin/php -r "require_once('config.inc'); write_config('Remote backup');"

# Copiar Ăşltimo backup para servidor remoto
LATEST_BACKUP=$(ls -t /cf/conf/backup/config-*.xml | head -1)
scp ${LATEST_BACKUP} ${REMOTE_USER}@${REMOTE_SERVER}:${REMOTE_PATH}/

# Cleanup local (manter 30 dias)
find /cf/conf/backup/ -name "config-*.xml" -mtime +30 -delete

# Enviar notificação (opcional)
echo "pfSense backup completed: ${DATE}" | mail -s "pfSense Backup" admin@fsociety.pt

Adicionar ao Shellcmd:

Services → Shellcmd → Add

Command: /usr/local/bin/backup-pfsense-remote.sh
Shellcmd Type: shellcmd
Description: Remote backup at boot

Versões de Backup

Diagnostics → Backup & Restore → Config History

Lista as últimas 30 versões (configurável):
- config-1701518400.xml (2024-12-02 10:00:00)
- config-1701432000.xml (2024-12-01 10:00:00)
...

Actions:
- View: Ver configuração
- Restore: Restaurar versĂŁo
- Download: Download do arquivo
- Delete: Eliminar versĂŁo

Restaurar Backup

Diagnostics → Backup & Restore → Restore

1. Browse: Selecionar arquivo config.xml
2. Encryption Password: (se cifrado)
3. Restore área: ALL
4. Restore Configuration

⚠️ AVISO: Sistema reiniciará após restore

🔄 Atualizações do pfSense

Verificar Updates

System → Update

Status atual: 2.8.1-RELEASE
Branch: Stable

Check for Updates → Verificar atualizações disponíveis

Update via WebGUI

System → Update

Se update disponĂ­vel:
1. Ver release notes
2. Fazer backup (SEMPRE!)
3. Confirmar update
4. Aguardar download + instalação
5. Sistema reinicia automaticamente
6. Verificar versĂŁo apĂłs reboot

Update via CLI

# SSH no pfSense
pfSense-upgrade -d

# Ver versĂŁo atual
cat /etc/version

# Ver updates disponĂ­veis
pkg-static upgrade -n

# Fazer update
pfSense-upgrade

# Reboot
shutdown -r now

Rollback de Update

Se update causar problemas:

1. Boot no modo Single User
2. Pressionar 4 (Single User Mode)
3. Montar filesystem:
   mount -u /
   mount -a

4. Restaurar backup anterior:
   pfSsh.php playback restorebackup /cf/conf/backup/config-[timestamp].xml

5. Reboot:
   reboot

📊 Monitorização

Dashboard

Status → Dashboard

Widgets principais:
- System Information
- Interfaces
- Services Status
- Gateways
- Traffic Graphs

Adicionar Widgets

Status → Dashboard → Available Widgets

Ăšteis:
- âś… System Information
- âś… Interfaces
- âś… Services Status
- âś… Gateways
- âś… Traffic Graphs
- âś… OpenVPN
- âś… IPsec
- âś… Firewall Logs

Métricas Importantes

CPU Usage

Status → Dashboard → System Information

CPU usage: Normal < 30%
Alerta se > 80% sustained

Causas comuns de CPU alto:

Memory Usage

Status → Dashboard → System Information

Memory usage: Normal < 50%
Alerta se > 85%

Total: 1991 MiB
Used: ~800 MiB (40%)
Free: ~1191 MiB (60%)

Disk Usage

Status → Dashboard → System Information

Disk usage: Normal < 70%
Alerta se > 85%

Total: 42 GB
Used: 2.5 GB (6%)
Free: 39.5 GB (94%)

Limpar espaço:

# Limpar logs antigos
rm /var/log/*.log.*

# Limpar package cache
pkg-static clean

# Limpar RRD old data
rm /var/db/rrd/*-old.rrd

Temperatura (se disponĂ­vel)

# Ver temperatura CPU
sysctl dev.cpu | grep temperature

# Ou via sensors
smbios-ctl --list

ntopng - Monitorização Avançada

Services → ntopng
URL: http://192.168.1.1:3000

Dashboards:

Alertas Ăšteis:


📝 Logs

Logs Principais

Log Localização Descrição
System Status → System Logs → System Logs gerais do sistema
Firewall Status → System Logs → Firewall Tráfego bloqueado/permitido
DHCP Status → System Logs → DHCP Leases DHCP
DNS Status → System Logs → Resolver Queries DNS (unbound)
OpenVPN Status → System Logs → OpenVPN Conexões VPN
NTP Status → System Logs → NTP Sincronização de tempo

Configurar Logging

Status → System Logs → Settings

General Logging Options:
- Reverse: âś… Show log entries in reverse order
- GUI Log Entries: 500
- Log Firewall Default Blocks: âś…

Firewall Logging:
- Log packets matched from default block: âś…
- Log packets matched from default pass: ❌
- Log bogon blocked: âś…

Remote Syslog

Status → System Logs → Settings → Remote Logging

Remote Logging Options:
- Enable: âś…
- Source Address: (auto)
- IP Protocol: IPv4
- Remote log servers:
  - Server 1: 192.168.1.50:514 (Wazuh)
  - Server 2: (opcional)

Remote Syslog Contents:
- âś… System events
- âś… Firewall events
- âś… DHCP service events
- âś… OpenVPN events

Ver Logs via CLI

# System log
clog /var/log/system.log | tail -50

# Firewall log
clog /var/log/filter.log | tail -100

# OpenVPN log
clog /var/log/openvpn.log | tail -50

# Logs em tempo real
tail -f /var/log/system.log

# Filtrar por IP
clog /var/log/filter.log | grep 192.168.1.10

# Filtrar por porta
clog /var/log/filter.log | grep "DPT:443"

🔍 Troubleshooting Comum

1. Sem conectividade Ă  Internet

Sintomas:

DiagnĂłstico:

1. Ping gateway WAN:
   Diagnostics → Ping → 192.168.31.1

2. Ping DNS pĂşblico:
   Diagnostics → Ping → 1.1.1.1

3. Ver regras LAN:
   Firewall → Rules → LAN
   (verificar regra permitindo Internet)

4. Ver estados:
   Diagnostics → States
   (procurar conexões LAN → Internet)

Soluções:

2. Firewall bloqueia tráfego legítimo

Sintomas:

DiagnĂłstico:

1. Ver logs firewall:
   Status → System Logs → Firewall
   (procurar por blocked)

2. Identificar:
   - Source IP
   - Destination IP
   - Port
   - Protocol

3. Ver regras da interface:
   Firewall → Rules → [Interface]

Solução:

Adicionar regra de pass:
Firewall → Rules → [Interface] → Add

Action: Pass
Protocol: [TCP/UDP]
Source: [IP origem]
Destination: [IP destino]
Port: [porta]

Save → Apply Changes

3. VPN nĂŁo conecta

Sintomas:

DiagnĂłstico:

1. Verificar serviço:
   Status → OpenVPN
   (deve estar "up")

2. Verificar porta WAN:
   Firewall → Rules → WAN
   (regra UDP 1194/1195)

3. Ver logs:
   Status → System Logs → OpenVPN

4. Testar RADIUS (se aplicável):
   Diagnostics → Authentication

Soluções:

4. Alta utilização CPU

Sintomas:

DiagnĂłstico:

# Via SSH
top -P

# Ver processos
ps aux | sort -nrk 3,3 | head -10

Causas comuns:

Soluções:

5. Espaço em disco cheio

Sintomas:

DiagnĂłstico:

# Ver uso
df -h

# Ver ficheiros grandes
du -sh /* | sort -h

Solução:

# Limpar logs
rm /var/log/*.log.*

# Limpar cache packages
pkg-static clean

# Limpar backups antigos
find /cf/conf/backup/ -name "*.xml" -mtime +90 -delete

🛠️ Comandos Úteis

pfctl (Firewall Control)

# Ver regras ativas
pfctl -sr

# Ver NAT rules
pfctl -sn

# Ver estados
pfctl -ss

# Ver estatĂ­sticas
pfctl -si

# Reload regras (cuidado!)
pfctl -F all -f /tmp/rules.debug

# Ver tabelas
pfctl -t -T show

# Reset estados (CUIDADO!)
pfctl -F states

Rede

# Ver interfaces
ifconfig

# Ver rotas
netstat -rn

# Ver conexões ativas
sockstat -4

# Ver portas em escuta
sockstat -4l

# Ping com source especĂ­fico
ping -S 192.168.1.1 8.8.8.8

# Traceroute
traceroute 8.8.8.8

Sistema

# Ver versĂŁo
cat /etc/version

# Ver uptime
uptime

# Ver processos
ps aux

# Ver uso de recursos
top

# Ver logs em tempo real
tail -f /var/log/system.log

# Reiniciar serviço
/etc/rc.restart_webgui
/etc/rc.restart_dhcpd

# Reboot sistema
shutdown -r now

# Halt sistema
shutdown -h now

Backup e Restore

# Backup config
cp /cf/conf/config.xml /tmp/config-backup-$(date +%Y%m%d).xml

# Restore config
cp /tmp/config-backup.xml /cf/conf/config.xml
/etc/rc.reload_all

# Ver configurações anteriores
ls -lh /cf/conf/backup/

📋 Checklist de Manutenção

Diário

Semanal

Mensal

Trimestral


🚨 Plano de Disaster Recovery

Cenário 1: pfSense Falha

Ação:

1. Verificar VM no Proxmox
2. Tentar restart: qm start [vmid]
3. Se nĂŁo arrancar:
   - Criar nova VM
   - Instalar pfSense fresh
   - Restore Ăşltimo backup
4. Verificar todas as interfaces
5. Testar conectividade

Cenário 2: Configuração Corrompida

Ação:

1. Boot em Safe Mode
2. Restore backup anterior:
   Diagnostics → Backup & Restore
3. Ou via CLI:
   pfSsh.php playback restorebackup /path/to/backup.xml
4. Verificar funcionalidade

Cenário 3: Perda Total

Ação:

1. Reinstalar pfSense (ver instalação.md)
2. Configurar interfaces básicas
3. Restore backup mais recente
4. Verificar:
   - Interfaces
   - Regras firewall
   - NAT
   - OpenVPN
   - Services
5. Testar tudo funciona

RTO/RPO

Métrica Objetivo Descrição
RTO < 1 hora Recovery Time Objective
RPO < 24 horas Recovery Point Objective
Backup Frequency Diário Automático via cron
Backup Retention 30 dias Local + remoto

🎓 Informação Académica

Campo Informação
Instituição ESTG - Instituto Politécnico do Porto
Unidade Curricular Administração de Sistemas II
Ano Letivo 2025/2026
Autores Ryan Barbosa, Hugo Correia, Igor AraĂşjo

📄 Licença

Este projeto está licenciado sob a MIT License.


đź“– ReferĂŞncias


**[⬅️ Voltar: Packages e Serviços](/fsociety-infrastructure/03-pfsense/08-packages-servicos.html)** | **[Índice](/fsociety-infrastructure/03-pfsense/)**

Última atualização: Dezembro 2025