构建虚拟化网络安全实验室:网络与 pfSense 设置

发布: (2025年12月12日 GMT+8 09:33)
6 min read
原文: Dev.to

Source: Dev.to

为什么要这样做

在过去的一年里,我使用了单独的虚拟机、Docker 容器以及 TryHackMe 等在线培训平台来获取动手的网络安全经验。虽然这些工具很有价值,但它们并不能提供完全受控网络环境的真实感和复杂度。

随着我在 Maryville University 开始网络安全学位——并且在 Windows 10 到达生命周期终点后将主工作站迁移到基于 Fedora 的 Linux 发行版——我决定是时候构建一个真正的虚拟化家庭实验室了。将 Linux 作为宿主操作系统还能让我避免 Windows 11 的硬件要求(安全启动、TPM),从而完全掌控我的虚拟化堆栈,并能够设计一个面向网络安全培训的企业级实验室。

本文是记录我的家庭实验室构建的四篇系列文章的第一篇。这里我会介绍基础架构的选择,解释如何配置虚拟化环境,并演示如何部署 pfSense 作为整个网络的核心路由器和防火墙。由于我的工作站原生运行 Linux,我选择 KVMQEMU,因为它们性能好、灵活且与操作系统深度集成。再配合 libvirtvirshvirt‑viewer,即可获得一个快速、轻量且高度可定制的虚拟化生态系统——非常适合学习真实基础设施的内部工作原理。


虚拟网络

  • lab‑NAT – 为 pfSense 提供通过 Linux 主机的上行互联网访问。
  • lab‑LAN – 完全隔离的内部网络,所有客户端和服务器虚拟机都位于此。

这种划分模拟了真实企业网络中外部和内部段的区别。


pfSense 防火墙/路由器

pfSense 充当实验室的中心安全设备,提供:

  • WAN 与 LAN 之间的路由
  • 有状态防火墙
  • DHCP 服务
  • NAT 转换
  • 分段和网络边界控制

所有进出内部网络的流量都经过 pfSense,映射了大多数企业环境的设计。


内部系统

这些系统构成实验室内部的“企业网络”:

  • Windows Server 2022(Active Directory + DNS)
  • Windows 11 工作站
  • 运行 Splunk 的 Ubuntu Desktop
  • 用于测试和未来项目的其他 Linux 服务器

它们共同提供了一个功能完整的身份、终端和日志生态系统,代表了真实的企业环境。


外部攻击机器(通过 VPN 的 Kali ThinkPad)

我将实体的 Kali Linux ThinkPad 作为外部攻击机器接入。它通过 VPN 隧道连接到 pfSense 防火墙,模拟以下两种情形之一:

  1. 来自外部的威胁行为者访问网络,或
  2. 通过受控入口点连接的恶意设备。

此设置允许对隔离的 lab‑LAN 进行渗透测试、漏洞发现和攻击模拟,同时保持所有内容安全地与我的真实设备隔离分段。


安装 KVM/QEMU 与工具

# Install the virtualization stack
sudo rpm-ostree install @virtualization virt-manager libvirt libvirt-daemon-kvm qemu-kvm bridge-utils --allow-inactive

启用并启动 libvirtd

sudo systemctl enable --now libvirtd
sudo systemctl status libvirtd   # verify it’s running

验证 KVM 支持

egrep -c '(vmx|svm)' /proc/cpuinfo

定义虚拟网络

lab‑LANlab‑NAT 创建 XML 定义(此处省略示例 XML)。随后定义、启动并设为自动启动:

# lab‑LAN
sudo virsh net-define /etc/libvirt/qemu/networks/lab-lan.xml
sudo virsh net-start lab-lan
sudo virsh net-autostart lab-lan

# lab‑NAT (same steps with lab-nat.xml)
sudo virsh net-define /etc/libvirt/qemu/networks/lab-nat.xml
sudo virsh net-start lab-nat
sudo virsh net-autostart lab-nat

验证网络已激活:

sudo virsh net-list --all

使用 virt-install 创建 pfSense 虚拟机

sudo virt-install \
  --name pfSense \
  --ram 2048 \
  --vcpus 2 \
  --os-variant freebsd13.0 \
  --disk path=/var/lib/libvirt/images/pfSense.qcow2,size=10,format=qcow2 \
  --cdrom /var/lib/libvirt/boot/pfsense.iso \
  --network network=lab-nat,model=virtio \
  --network network=lab-lan,model=virtio \
  --graphics spice \
  --boot uefi

打开安装程序控制台:

sudo virt-viewer pfSense

pfSense 接口分配

在 pfSense 安装过程中为两个虚拟网卡分配:

  • WANlab‑NAT
  • LANlab‑LAN

安装完成后,根据需要配置 DHCP、防火墙规则和 NAT。这一步完成了初始的网络分段和路由。


反思与后续计划

构建防火墙和虚拟网络基础显著提升了我对 virshvirt-viewer 以及基于 KVM 的虚拟化的信心。该过程巩固了关键的基础设施概念,如定义虚拟网络、桥接接口、配置路由以及在防火墙层进行 DHCP 分配。部署 pfSense 加深了我对分段、NAT 行为以及多接口设计的理解。

即将开展的工作

  • 扩展 pfSense 功能:高级防火墙规则、VLAN 分段、DNS 解析器调优、静态 DHCP 映射。
  • 评估 pfSense 插件:pfBlockerNG(威胁情报)和 Suricata(IDS/IPS)。
  • 在下一篇文章中,我将安装 Windows Server 2022,将其提升为域控制器,配置 DNS,并与 pfSense 集成。Windows 和 Linux 客户端将加入域,为后续关于 SOC 工作流、蓝队工具、检测工程以及攻击模拟的文章奠定 Active Directory 基础。
Back to Blog

相关文章

阅读更多 »