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, 现代安全运营, 网络安全, 网络实验环境, 网络流量分析, 防火墙, 隐私保护