ruancarlosrc/PFSense-Firewall-Lab-2

GitHub: ruancarlosrc/PFSense-Firewall-Lab-2

Stars: 0 | Forks: 0

# 🔥 pfSense Firewall Lab — Regras, NAT, Logs e IDS/IPS (Suricata) ## 🎯 Objetivo Construir um ambiente funcional de firewall perimetral com pfSense, aplicando configurações reais de regras, NAT e detecção de intrusão com Suricata — simulando o nível de controle de rede encontrado em ambientes corporativos monitorados por um SOC. ## 🗺️ Topologia do Lab ┌─────────────────────────────────────────────┐ │ VirtualBox Host (Windows 10) │ │ │ │ ┌──────────────────────────────────────┐ │ │ │ pfSense CE VM │ │ │ │ em0 (WAN) ← NAT Adapter │ │ │ │ em1 (LAN) ← Internal Network │ │ │ │ 192.168.1.1/24 │ │ │ └──────────────┬───────────────────────┘ │ │ │ Internal Network "labnet" │ │ ┌──────────────┴───────────────────────┐ │ │ │ Kali Linux VM │ │ │ │ 192.168.1.100 │ │ │ │ (atacante e monitor) │ │ │ └──────────────────────────────────────┘ │ └─────────────────────────────────────────────┘ **Recursos de hardware utilizados:** - pfSense VM: 512 MB RAM, 8 GB disco - Kali Linux VM: 2 GB RAM (preexistente) - Total consumido: ~2.5 GB RAM ## 📋 Atividades Realizadas ### ✅ Atividade 1 — Setup do pfSense Instalação e configuração inicial do pfSense CE em VirtualBox com duas interfaces de rede: - `em0` — WAN (NAT Adapter) para saída à internet - `em1` — LAN (Internal Network `labnet`) para a rede interna - DHCP configurado na LAN: range `192.168.1.100–200` - Acesso ao WebConfigurator via `http://192.168.1.1` pelo browser do Kali **Evidência:** `Configuraçoes_iniciais_do_pfsense.png` ### ✅ Atividade 2 — Firewall Rules Criação e teste de regras de controle de tráfego na interface LAN, seguindo o princípio **default deny + allow explícito**. **Regras configuradas (em ordem de avaliação):** | # | Ação | Protocolo | Destino/Porta | Descrição | |---|------|-----------|---------------|-----------| | 1 | ❌ Block | IPv4 ICMP | any | Block ICMP LAN to WAN | | 2 | ❌ Block | IPv4 TCP | 23 (Telnet) | Block Telnet LAN to WAN | | 3 | ✅ Pass | IPv4 TCP | 80 (HTTP) | Allow HTTP LAN to WAN | | 4 | ✅ Pass | IPv4 TCP | 443 (HTTPS) | Allow HTTPS LAN to WAN | | 5 | ✅ Pass | IPv4 * | any | Default allow LAN to any | **Testes validados:** - `ping 8.8.8.8` → bloqueado (ICMP rule) - `curl http://example.com` → passou (HTTP rule) - Port scan multi-porta → entradas block/pass visíveis nos logs **Conceito aplicado:** O pfSense processa regras **de cima para baixo** na interface de entrada do tráfego. A primeira regra que bate é executada; se nenhuma bater, default deny. **Evidências:** `Regras_de_firewall_definidas.png` | `Logs_de_trafego_permitido_e_bloqueado_baseado_nas_regras_criadas.png` ### ✅ Atividade 3 — NAT (Network Address Translation) #### Outbound NAT Migração do modo **Automatic** para **Manual Outbound NAT** para exposição das regras geradas automaticamente pelo pfSense: - Tradução da subnet `192.168.1.0/24` para o IP da WAN - Verificado com `curl ifconfig.me` — retorna o IP público da WAN, não o IP interno do Kali #### Port Forwarding Exposição de serviço interno (servidor Python HTTP na porta 8080 do Kali) pela WAN do pfSense: - Regra criada em `Firewall → NAT → Port Forward` - Redirecionamento: `WAN:8080 → 192.168.1.100:8080` - Regra de firewall associada criada automaticamente - **NAT Reflection (Pure NAT)** habilitado para permitir teste a partir da própria LAN **Conceito aplicado:** Port Forwarding é um vetor primário de exposição de superfície de ataque — serviços internos acessíveis externamente. Em um SOC, regras de Port Forward são auditadas regularmente como parte da gestão de superfície de ataque. **Evidência:** `Alterando_configuraçoes_de_outbound_NAT.png` ### ✅ Atividade 4 — Análise de Logs Exploração dos logs nativos do pfSense em dois formatos: #### Normal View (browser) - Filtro por IP de origem (`192.168.1.100`) para isolar tráfego do Kali - Identificação de entradas `pass` (✅) e `block` (❌) por protocolo - Correlação entre regras criadas e entradas de log correspondentes **Leitura de campos nos logs:** Data/Hora | Interface | Ação | Src:SPort → Dst:DPort | Protocolo #### Raw Format (console pfSense) filterlog: 96,,,em1,match,pass,in,4,tcp,192.168.1.100,142.250.79.161,54270,443,S Campos identificados: interface (`em1`), ação (`pass`), protocolo (`tcp`), IP origem, IP destino, porta destino, TCP flags. **Simulação de port scan para análise:** - Tráfego para portas 21, 22, 23, 25, 80, 443, 445, 3389 gerado sequencialmente - Padrão identificado nos logs: múltiplas tentativas de conexão do mesmo IP em sequência → indicativo de **port scan / reconhecimento de rede** **Evidências:** `Analise_de_logs_de_trafego_permitido_e_bloqueado.png` | `Logs_Raw.png` | `Logs_de_trafego_permitido_e_bloqueado_baseado_nas_regras_criadas.png` ### ✅ Atividade 5 — Instalação e Configuração do Suricata (IDS) **Instalação:** `System → Package Manager → Available Packages → suricata` **Ruleset utilizado:** ETOpen Emerging Threats (gratuito, mantido pela Proofpoint) **Modo inicial:** IDS (apenas alertas, sem bloqueio) **Interface monitorada:** LAN (em1) **Categorias habilitadas:** - `emerging-scan` — detecção de port scans - `emerging-malware` — comportamento de malware - `emerging-exploit` — exploits conhecidos **Evidência:** `Instalação_e_configuraçao_do_suricata.png` ### ✅ Atividade 6 — Simulação de Ataque e Análise de Alertas Geração de tráfego malicioso a partir do Kali para acionar as regras do Suricata. **Ferramentas utilizadas:** - `nmap` — port scan e detecção de versões - `nikto` — scanner de vulnerabilidades web - Alvo: `bancocn.com.br` (ambiente legítimo para testes de hacking) **Alertas gerados:** | SID | Prioridade | Classe | Descrição | Ferramenta | |-----|-----------|--------|-----------|-----------| | 1:2024364 | 1 | Web Application Attack | ET SCAN Possible Nmap User-Agent Observed | nmap | | 1:2221010 | 3 | Generic Protocol Command Decode | SURICATA HTTP unable to match response to request | nikto | | — | 2 | Potentially Bad Traffic | Tráfego suspeito detectado | nikto | **Regra do SID 2024364 analisada:** alert http $HOME_NET any -> any any ( msg:"ET SCAN Possible Nmap User-Agent Observed"; flow:established,to_server; http.user_agent; content:"|20|Nmap"; fast_pattern; classtype:web-application-attack; sid:2024364; rev:5; ) **Análise de triagem (IDS vs Firewall):** | Fonte | O que mostra sobre o mesmo evento | |-------|----------------------------------| | Firewall Log | `TCP 192.168.1.100:47522 → 172.67.192.199:443 — PASS` (fato bruto) | | Suricata Alert | `ET SCAN Possible Nmap User-Agent — Priority 1` (contexto e intenção) | O firewall enxerga **pacotes**. O Suricata enxerga **comportamento**. Ambos são necessários para construir a narrativa completa de um incidente. **Evidências:** `Logs_de_portscan_capturado_pelo_suricata.png` | `Detalhes_de_logs_do_suricata.png` | `Visao_dos_logs_gerados_pelo_nmap_e_nikito_no_firewall_e_no_suricata.png` ## 🔑 Principais Aprendizados 1. **Ordem das regras importa** — pfSense processa top-down; regras mal ordenadas criam brechas silenciosas 2. **NAT Reflection** é necessário em topologias com NAT duplo (VirtualBox + pfSense) para testar Port Forwarding internamente 3. **Port Forwarding = superfície de ataque** — cada serviço exposto é um vetor que precisa ser auditado 4. **IDS sem contexto gera ruído** — entender a anatomia de uma regra Suricata é o que transforma um alerta em decisão de triagem 5. **Firewall log + IDS alert = narrativa completa** — um analista SOC usa as duas fontes juntas, não separadas ## 🛠️ Tecnologias e Ferramentas | Ferramenta | Versão | Função | |---|---|---| | pfSense CE | 2.7+ | Firewall / Gateway / NAT | | Suricata | Via package pfSense | IDS/IPS | | ETOpen Emerging Threats | Atualizado 2026 | Ruleset de detecção | | Kali Linux | 2025.4 | Atacante / Monitor | | VirtualBox | — | Hypervisor | | nmap | — | Port scan / reconhecimento | | nikto | — | Scanner de vulnerabilidades web | ## 📁 Evidências | Arquivo | Atividade | Conteúdo | |---|---|---| | `Configuraçoes_iniciais_do_pfsense.png` | Setup | Wizard de configuração inicial | | `Regras_de_firewall_definidas.png` | Firewall Rules | Regras LAN criadas | | `Logs_de_trafego_permitido_e_bloqueado_baseado_nas_regras_criadas.png` | Firewall Rules | Logs pass/block das regras | | `Alterando_configuraçoes_de_outbound_NAT.png` | NAT | Configuração Manual Outbound NAT | | `Analise_de_logs_de_trafego_permitido_e_bloqueado.png` | Logs | Análise de logs de tráfego | | `Logs_Raw.png` | Logs | Formato raw no console do pfSense | | `Instalação_e_configuraçao_do_suricata.png` | Suricata | Interface configurada e rodando | | `Logs_de_portscan_capturado_pelo_suricata.png` | IDS | Alertas de scan detectados | | `Detalhes_de_logs_do_suricata.png` | IDS | Anatomia de regra Suricata | | `Visao_dos_logs_gerados_pelo_nmap_e_nikito_no_firewall_e_no_suricata.png` | IDS | Visão simultânea firewall + Suricata | ## 🗂️ Roadmap Blue Team Este lab faz parte de um roadmap estruturado de 120 dias para a área de Blue Team / SOC: - ✅ **Fase 0** — Redes e Logs - ✅ **Fase 1** — IAM / Active Directory - ✅ **Fase 2** — Firewall ← *este lab* - 🔜 **Fase 3** — SIEM (Wazuh / Elastic Stack / Splunk) - 🔜 **Fase 4** — EDR / XDR - 🔜 **Fase 5** — SOAR / SOC Simulado