harshhhhh10/Pfsense-Firewall-Home-Lab

GitHub: harshhhhh10/Pfsense-Firewall-Home-Lab

在虚拟化环境中搭建 pfSense 防火墙实验室,通过对抗性测试验证 NAT、有状态规则及默认拒绝安全模型的企业级网络边界防御能力。

Stars: 0 | Forks: 0

# 🛡️ 使用 pfSense 搭建的企业级防火墙与网络安全家庭实验室

Platform Firewall OS License Status

## 📖 目录 * [项目概述](#-project-overview) * [项目目标](#-project-objectives) * [环境背景](#-environment-context) * [架构](#-architecture) * [安全思维:边界测试与验证](#-security-mindset-boundary-testing--validation) * [实现的功能](#-features-implemented) * [文档矩阵](#-documentation-matrix) * [生产策略与实验室实现的对比](#-production-strategy-vs-lab-implementations) * [复现与快速入门指南](#-reproduction--quick-start-guide) * [展示的技能](#-skills-demonstrated) * [未来改进](#-future-improvements) * [参考资料](#-references) * [作者](#-author) ## 📌 项目概述 本项目演示了在虚拟化家庭实验室沙箱中部署、对抗性配置验证以及对 pfSense 防火墙进行故障排除的过程。 该实验室模拟了核心的企业网络概念,包括安全区域隔离、严格的出口过滤、混合网络地址转换(NAT)以及有状态会话跟踪。 本项目并未简单地应用静态配置变更,而是采用了防御性工程方法——从外部区域主动测试安全边界,以验证防火墙在实时的对抗性条件下的表现是否符合预期。 ## 🎯 项目目标 * 在隔离的多接口 hypervisor 环境中部署 pfSense。 * 实现符合最小权限模型的**默认拒绝**安全态势。 * 通过集中的 DHCP 和安全的 DNS Unbound 引擎管理客户端配置。 * 编写并执行严格的有状态防火墙策略和基于时间的访问限制。 * 通过从外部网络探测边界,验证入站边界防御。 * 记录系统的基线性能、数据包变更以及故障排除框架。 ## ⚙️ 环境背景 为了确保测试的一致性和审计的准确性,本实验室使用以下确切的软件基线进行构建和验证: * **防火墙引擎:** pfSense Community Edition `2.7.2-RELEASE`(构建于:2023 年 12 月) * **Hypervisor 平台:** Oracle VirtualBox 虚拟化套件 * **内部端点客户端:** Ubuntu Desktop LTS * **外部安全探测引擎:** Kali Linux Offensive Suite ## 🏗 架构

Network Topology

该架构模拟了企业边缘部署模型: * **WAN 网段 (`10.0.2.0/24`):** 连接到上游 hypervisor NAT 网关的外部不可信网络。 * **LAN 子网 (`192.168.10.0/24`):** 高信任度、分段的内部资产域。 ## ⚔️ 安全思维:边界测试与验证 为了将本项目从管理配置展示转变为实证安全评估,使用外部测试节点从对抗的角度对网络边界进行了测试。 [ Kali Linux 节点 ] ──( 未经请求的 WAN 扫描 )──► ╳ [ pfSense WAN 接口 ] ──► ( 被默认拒绝丢弃 ) ### 1. 入站外部侦察探测 从位于不可信 WAN 骨干网段上的外部测试机器执行了激进的、未经请求的网络端口扫描,目标是 pfSense 接口的公网 IP: ``` # 对防火墙 WAN 边缘执行全面的 TCP Syn 隐秘扫描 nmap -sS -Pn -p 1-1024 10.0.2.15 ``` ### 2. 可观察的安全结果 * **防火墙动作:** 针对明确定义的端口转发(如端口 8080)之外端口的每个传入探测数据包都被静默丢弃。 * **扫描反馈:** 外部侦察工具将所有扫描的端口标记为 `filtered` 或 `closed`。 * **防御证明:** 这直接验证了**默认拒绝安全模型**。来自外部空间的未经请求的入站连接无法发现内部拓扑映射,也无法在没有明确的目标映射授权下访问内部服务。 ## ✨ 实现的功能 * **接口配置:** 明确的网络边界驱动程序绑定和三层隔离。 * **有状态的访问控制策略:** 细粒度的营业时间限制和基于别名的阻断。 * **动态作用域守护进程:** 活动的 DHCP 分配池与响应式 DNS 记录缓存相配合。 * **混合出站 NAT 映射:** 受控的源标头转换架构,用于出站资产隐私。 * **入站目标端口转发:** 将外部请求封装映射到目标应用。 * **并发接口线路诊断:** 深层数据帧验证循环,捕获 NAT 前后的快照。 ## 📚 文档矩阵 | 模块 ID | 文档标题 | 仓库导航 | | :--- | :--- | :--- | | **01** | 项目概述 | [查看文档](docs/01-project-overview.md) | | **02** | 网络拓扑 | [查看文档](docs/02-network-topology.md) | | **03** | 环境部署 | [查看文档](docs/03-environment-deployment.md) | | **04** | 网络配置 | [查看文档](docs/04-network-configuration.md) | | **05** | 防火墙规则执行 | [查看文档](docs/05-firewall-rules.md) | | **06** | 网络地址转换 (NAT) | [查看文档](docs/06-nat.md) | | **07** | 数据包分析与捕获 | [查看文档](docs/07-packet-analysis.md) | | **08** | 网络诊断与表格 | [查看文档](docs/08-network-diagnostics.md) | | **09** | 故障排除框架 | [查看文档](docs/09-troubleshooting.md) | | **10** | 经验教训与技术审查 | [查看文档](docs/10-lessons-learned.md) | ## 🏢 生产策略与实验室实现的对比 在活跃的企业生产生态系统中安全地运行防火墙,需要做出超越隔离学习实验室基本要求的加固决策。 下表重点介绍了将此功能性概念验证转变为生产级部署所需的架构更改: | 运营控制 | 家庭实验室沙箱实现 | 生产企业标准 | | :--- | :--- | :--- | | **管理访问权限** | 在初始配置周期内允许通过标准 HTTP 通道进行访问。 | **强制仅使用 HTTPS。** 在 WebGUI 上强制执行严格的 TLS 1.3 加密,并将接口监听绑定仅限制在专用的带外 (OOB) 管理 VLAN。 | | **系统凭据** | 在简单的测试周期中保留标准的出厂密码以追求速度。 | **立即轮换默认值。** 强制执行由集中式多因素身份验证 (MFA / RADIUS) 支持的高熵、唯一的凭据值。 | | **控制台访问管理** | 允许通过明文 SSH 终端会话进行基于密码的交互。 | **加固 SSH。** 仅强制执行基于公钥的加密身份验证;完全禁用 root 密码访问。 | | **日志与遥测** | 本地数据库存储直接映射到文件追踪 (`/tmp/*.pcap`)。 | **集中式日志。** 使用安全的 syslog 转发器将系统日志流式传输到企业级 SIEM 引擎,以进行长期保留和警报关联。 | | **业务连续性** | 在单个 hypervisor 系统上部署的单节点实例。 | **高可用性 (HA)。** 通过公共地址冗余协议 (**CARP**) 配对多个物理设备,以支持状态同步的自动故障转移。 | | **配置备份** | 从仪表板布局菜单触发手动快照创建。 | **自动化备份。** 安排定期的加密备份任务到受访问控制的异地保险库存储库中。 | ## 🛠 复现与快速入门指南 请按照以下顺序步骤在您的虚拟化环境中复现这个确切的防火墙和客户端验证环境: ### 1. 在 VirtualBox 中配置网络布局 * 导航至 VirtualBox 首选项,创建一个名为 `Lab_WAN` 的新 **NAT 网络**,配置子网边界为 `10.0.2.0/24`。 * 创建一个名为 `Lab_LAN` 的专用仅主机或隔离的内部骨干网布局。 ### 2. 配置 pfSense 防火墙虚拟机 * 创建一个新的虚拟机配置文件,分配 **2 个 vCPU,2GB RAM 和 20GB 虚拟磁盘**。 * 将下载的 `pfSense-CE-2.7.2-RELEASE-amd64.iso` 镜像挂载到虚拟光驱。 * 将 **网络适配器 1** 映射到您的 `Lab_WAN` NAT 网络接口。 * 将 **网络适配器 2** 映射到您隔离的 `Lab_LAN` 内部网络。 ### 3. 初始化网关操作系统 * 打开虚拟机电源,按照交互式安装脚本进行操作,将基础操作系统安装到虚拟驱动器。 * 重启后,通过控制台完成接口跟踪分配:将接口 `em0` 分配为 **WAN**,将接口 `em1` 分配为 **LAN**。 * 静态设置 LAN 接口 IPv4 属性:分配地址 `192.168.10.1/24` 并启用本地 DHCP 服务器地址池分发守护进程。 ### 4. 配置 Ubuntu 端点客户端 * 创建您的 Linux 工作站客户端虚拟机,将其单一的网络适配器分配明确设置为相同的 `Lab_LAN` 内部网络骨干。 * 启动操作系统。该接口将自动从 pfSense DHCP 服务器获取地址租约(例如 `192.168.10.100`)。 * 在您的 Ubuntu 工作站节点上打开终端窗口,通过运行以下命令来验证您的有状态连接路径: ping -c 4 8.8.8.8 ## 🧪 展示的技能 ### 核心基础设施与路由 * 使用现代 CIDR 格式指南进行结构化的子网掩码规划。 * 跨越多区域路由引擎的有状态边界路由。 * 涵盖 DHCP 和 Unbound 缓存架构的集中式配置映射。 ### 网络防御工程 * 跨三层访问控制列表应用最小权限原则。 * 转换配置(SNAT、PAT、DNAT)的部署和调优。 * 解释实时状态表的标志状态(`ESTABLISHED:ESTABLISHED`)以追踪握手生命周期。 ### 安全分析与遥测 * 使用 pcap 解析过滤器进行线路监控,以捕获和检查原始帧标头。 * 阅读防火墙跟踪条目以验证规则 ID 并查找被阻止的网络流量模式。 * 使用深层接口 ping 例程、路由追踪和活动日志挖掘进行系统故障排除。 ## 🚀 未来改进 此 pfSense 防火墙安装构成了不断扩展的企业安全家庭实验室的核心网络路由和安全基础。未来的实验室扩展将基于以下路线图在此布局上进行构建: 1. **企业 VLAN 分段:** 使用 802.1Q 标签在 pfSense 防火墙上添加明确的 `OPT` 虚拟接口,以将 Active Directory、SIEM 和工作站流量隔离到不同的广播域中。 2. **Active Directory 实验室部署:** 在 LAN 网关后搭建 Windows Server 域控制器集群,以管理集中的域身份验证并强制执行基线安全组策略对象 (GPO)。 3. **Windows 事件转发 (WEF) 设置:** 配置组策略订阅,以自动从域工作站拉取系统、安全性和应用程序日志到集中的日志收集器端点。 4. **Sysmon 部署与调优:** 在端点中推出 Microsoft System Monitor (Sysmon) 扩展,以收集高级遥测数据,包括进程创建、网络套接字源和原始内存加载钩子。 5. **Wazuh SIEM 集成:** 在专用的管理子网中部署中央 Wazuh 管理器节点,以摄取端点日志,并根据活动的威胁情报指标系统地解析数据。 6. **检测工程实践:** 编写自定义的 Sigma 规则集和 SIEM 警报逻辑,旨在捕获可疑操作,例如横向移动尝试或未经授权的外部 DNS 隧道传输。 7. **事件响应与威胁狩猎:** 在隔离的子网中执行受控的恶意软件模拟,以练习分析内存结构工件、追踪进程执行路径以及进行实时的入侵后取证。 ## 📖 参考资料 * **Netgate pfSense 技术文档:** [核心参考指南](https://netgate.com) * **RFC 1918:** 专用互联网的地址分配(子网边界) * **RFC 4787:** 单播 UDP 的网络地址转换 (NAT) 行为要求 ## 👨‍💻 作者 **Harsh Soni** [GitHub 主页](https://github.com) *网络安全工程师 | 防御性安全从业者 | 威胁狩猎爱好者*
标签:NAT路由, pfSense, 网络协议分析, 网络安全实验, 虚拟化网络, 防火墙