ruancarlosrc/PFSense-Firewall-Lab-2

GitHub: ruancarlosrc/PFSense-Firewall-Lab-2

一个结构化的 pfSense 防火墙实验项目,通过规则配置、NAT、日志分析和 Suricata IDS 部署模拟企业级 SOC 网络监控环境。

Stars: 0 | Forks: 0

# 🔥 pfSense 防火墙实验室 — 规则、NAT、日志与 IDS/IPS (Suricata) ## 🎯 目标 构建一个功能完备的 pfSense 边界防火墙环境,应用真实的规则、NAT 和 Suricata 入侵检测配置 —— 模拟由 SOC 监控的企业网络环境中的网络控制水平。 ## 🗺️ 实验室拓扑 ``` ┌─────────────────────────────────────────────┐ │ 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) │ │ │ └──────────────────────────────────────┘ │ └─────────────────────────────────────────────┘ ``` **使用的硬件资源:** - pfSense 虚拟机:512 MB 内存,8 GB 磁盘 - Kali Linux 虚拟机:2 GB 内存(已有) - 总消耗:~2.5 GB 内存 ## 📋 已完成的活动 ### ✅ 活动 1 — pfSense 设置 在 VirtualBox 中安装并初始配置具有两个网络接口的 pfSense CE: - `em0` — WAN(NAT 适配器)用于连接互联网 - `em1` — LAN(内部网络 `labnet`)用于内部网络 - 在 LAN 上配置 DHCP:范围 `192.168.1.100–200` - 通过 Kali 的浏览器访问 `http://192.168.1.1` 上的 WebConfigurator **证据:** `Configuraçoes_iniciais_do_pfsense.png` ### ✅ 活动 2 — 防火墙规则 在 LAN 接口上创建并测试流量控制规则,遵循 **默认拒绝 + 显式允许** 原则。 **已配置的规则(按评估顺序):** | # | 动作 | 协议 | 目标/端口 | 描述 | |---|------|-----------|---------------|-----------| | 1 | ❌ 阻止 (Block) | IPv4 ICMP | any | 阻止 LAN 到 WAN 的 ICMP | | 2 | ❌ 阻止 (Block) | IPv4 TCP | 23 (Telnet) | 阻止 LAN 到 WAN 的 Telnet | | 3 | ✅ 放行 (Pass) | IPv4 TCP | 80 (HTTP) | 允许 LAN 到 WAN 的 HTTP | | 4 | ✅ 放行 (Pass) | IPv4 TCP | 443 (HTTPS) | 允许 LAN 到 WAN 的 HTTPS | | 5 | ✅ 放行 (Pass) | IPv4 * | any | 默认允许 LAN 到 any | **已验证的测试:** - `ping 8.8.8.8` → 被阻止(ICMP 规则) - `curl http://example.com` → 被放行(HTTP 规则) - 多端口端口扫描 → 在日志中可见阻止/放行记录 **应用的概念:** pfSense 在流量的入接口上**自上而下**处理规则。匹配到的第一条规则将被执行;如果没有匹配,则默认拒绝。 **证据:** `Regras_de_firewall_definidas.png` | `Logs_de_trafego_permitido_e_bloqueado_baseado_nas_regras_criadas.png` ### ✅ 活动 3 — NAT(网络地址转换) #### 出站 NAT 从**自动**模式迁移到**手动出站 NAT**,以显示 pfSense 自动生成的规则: - 将子网 `192.168.1.0/24` 转换为 WAN IP - 使用 `curl ifconfig.me` 验证 — 返回 WAN 的公网 IP,而不是 Kali 的内部 IP #### 端口转发 通过 pfSense 的 WAN 暴露内部服务(Kali 8080 端口上的 Python HTTP 服务器): - 在 `Firewall → NAT → Port Forward` 中创建规则 - 重定向:`WAN:8080 → 192.168.1.100:8080` - 自动创建关联的防火墙规则 - 启用 **NAT Reflection (Pure NAT)** 以允许从 LAN 自身进行测试 **应用的概念:** 端口转发是暴露攻击面的一个主要途径 —— 可从外部访问的内部服务。在 SOC 中,端口转发规则作为攻击面管理的一部分会进行定期审计。 **证据:** `Alterando_configuraçoes_de_outbound_NAT.png` ### ✅ 活动 4 — 日志分析 以两种格式探索 pfSense 的原生日志: #### 标准视图(浏览器) - 按源 IP (`192.168.1.100`) 过滤以隔离 Kali 流量 - 按协议识别 `pass` (✅) 和 `block` (❌) 条目 - 创建的规则与相应日志条目之间的相关性 **日志字段解读:** ``` Data/Hora | Interface | Ação | Src:SPort → Dst:DPort | Protocolo ``` #### 原始格式(pfSense 控制台) ``` filterlog: 96,,,em1,match,pass,in,4,tcp,192.168.1.100,142.250.79.161,54270,443,S ``` 识别的字段:接口 (`em1`)、动作 (`pass`)、协议 (`tcp`)、源 IP、目标 IP、目标端口、TCP 标志。 **用于分析的端口扫描模拟:** - 依次生成发往端口 21、22、23、25、80、443、445、3389 的流量 - 日志中识别出的模式:同一 IP 的多次连续连接尝试 → 表明是**端口扫描 / 网络侦察** **证据:** `Analise_de_logs_de_trafego_permitido_e_bloqueado.png` | `Logs_Raw.png` | `Logs_de_trafego_permitido_e_bloqueado_baseado_nas_regras_criadas.png` ### ✅ 活动 5 — 安装和配置 Suricata (IDS) **安装:** `System → Package Manager → Available Packages → suricata` **使用的规则集:** ETOpen Emerging Threats(免费,由 Proofpoint 维护) **初始模式:** IDS(仅警报,不阻断) **监控接口:** LAN (em1) **已启用的类别:** - `emerging-scan` — 端口扫描检测 - `emerging-malware` — 恶意软件行为 - `emerging-exploit` — 已知漏洞利用 **证据:** `Instalação_e_configuraçao_do_suricata.png` ### ✅ 活动 6 — 攻击模拟与警报分析 从 Kali 生成恶意流量以触发 Suricata 规则。 **使用的工具:** - `nmap` — 端口扫描和版本检测 - `nikto` — Web 漏洞扫描器 - 目标:`bancocn.com.br`(合法的黑客测试环境) **生成的警报:** | SID | 优先级 | 类别 | 描述 | 工具 | |-----|-----------|--------|-----------|-----------| | 1:2024364 | 1 | Web 应用攻击 | ET SCAN 发现可能的 Nmap User-Agent | nmap | | 1:2221010 | 3 | 通用协议命令解码 | SURICATA HTTP 无法将响应与请求匹配 | nikto | | — | 2 | 潜在不良流量 | 检测到可疑流量 | nikto | **分析的 SID 2024364 规则:** ``` 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; ) ``` **筛选分析(IDS 对比防火墙):** | 来源 | 关于同一事件的显示内容 | |-------|----------------------------------| | 防火墙日志 | `TCP 192.168.1.100:47522 → 172.67.192.199:443 — PASS`(原始事实) | | Suricata 警报 | `ET SCAN 发现可能的 Nmap User-Agent — 优先级 1`(背景和意图) | 防火墙看到的是**数据包**。Suricata 看到的是**行为**。两者对于构建完整的事件叙述都是必不可少的。 **证据:** `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` ## 🔑 主要学习成果 1. **规则顺序很重要** — pfSense 自上而下处理;顺序不当的规则会造成无声的漏洞 2. **NAT Reflection** 在具有双重 NAT(VirtualBox + pfSense)的拓扑中是必需的,以便在内部测试端口转发 3. **端口转发 = 攻击面** — 每个暴露的服务都是一个需要审计的攻击媒介 4. **没有上下文的 IDS 会产生噪音** — 了解 Suricata 规则的剖析结构才能将警报转化为筛选决策 5. **防火墙日志 + IDS 警报 = 完整叙述** — SOC 分析师将两种来源结合使用,而不是分开使用 ## 🛠️ 技术与工具 | 工具 | 版本 | 功能 | |---|---|---| | pfSense CE | 2.7+ | 防火墙 / 网关 / NAT | | Suricata | 通过 pfSense package | IDS/IPS | | ETOpen Emerging Threats | 2026 更新 | 检测规则集 | | Kali Linux | 2025.4 | 攻击者 / 监控端 | | VirtualBox | — | Hypervisor | | nmap | — | 端口扫描 / 侦察 | | nikto | — | Web 漏洞扫描器 | ## 📁 证据 | 文件 | 活动 | 内容 | |---|---|---| | `Configuraçoes_iniciais_do_pfsense.png` | 设置 | 初始配置向导 | | `Regras_de_firewall_definidas.png` | 防火墙规则 | 创建的 LAN 规则 | | `Logs_de_trafego_permitido_e_bloqueado_baseado_nas_regras_criadas.png` | 防火墙规则 | 规则的放行/阻止日志 | | `Alterando_configuraçoes_de_outbound_NAT.png` | NAT | 手动出站 NAT 配置 | | `Analise_de_logs_de_trafego_permitido_e_bloqueado.png` | 日志 | 流量日志分析 | | `Logs_Raw.png` | 日志 | pfSense 控制台中的原始格式 | | `Instalação_e_configuraçao_do_suricata.png` | Suricata | 已配置并运行的接口 | | `Logs_de_portscan_capturado_pelo_suricata.png` | IDS | 检测到的扫描警报 | | `Detalhes_de_logs_do_suricata.png` | IDS | Suricata 规则剖析 | | `Visao_dos_logs_gerados_pelo_nmap_e_nikito_no_firewall_e_no_suricata.png` | IDS | 防火墙 + Suricata 同步视图 | ## 🗂️ Blue Team 路线图 本实验室是针对 Blue Team / SOC 领域的 120 天结构化路线图的一部分: - ✅ **阶段 0** — 网络与日志 - ✅ **阶段 1** — IAM / Active Directory - ✅ **阶段 2** — 防火墙 ← *本实验室* - 🔜 **阶段 3** — SIEM (Wazuh / Elastic Stack / Splunk) - 🔜 **阶段 4** — EDR / XDR - 🔜 **阶段 5** — SOAR / 模拟 SOC
标签:Metaprompt, pfSense, Suricata, 现代安全运营, 网络安全, 网络实验环境, 网络流量分析, 防火墙, 隐私保护