dennis-sec/cybersecurity-homelab

GitHub: dennis-sec/cybersecurity-homelab

构建网络安全实验室,模拟真实网络环境。

Stars: 0 | Forks: 0

# 网络安全家庭实验室 — Proxmox、pfSense、Suricata、Pi-hole 与 WireGuard 这是我家的网络安全实验室。我建立它是为了能够亲手实践那些仅凭课程无法真正学会的东西——网络分段、编写入侵检测系统规则、破解和修复 VPN,以及实时观察攻击如何触发检测。 所有东西都运行在一台联想 ThinkCentre M920s(i5-8500,24 GB RAM)上,使用 Proxmox。实验室网络被 pfSense 隔离,由 Suricata 监控,由 Pi-hole 过滤,并通过 WireGuard 远程访问。我从隔离的 Kali 箱子对其进行攻击。 ## 为什么我要建立它 我想创建一个真实的环境来练习网络防御和攻击的双方,并真正地 *证明* 事情是可行的,而不是仅仅假设它们是可行的。以下每个阶段都以验证步骤结束:一个触发警报的扫描、一个被阻止的 ping、一个被黑洞化的 DNS 查询。 ## 如何布局 ``` flowchart TD INT([Internet]) --> BT["BT Smart Hub 6
192.168.1.254 — home router"] BT -->|Powerline Ethernet| PVE["Proxmox host — Lenovo M920s
192.168.1.50"] PVE --> PF["pfSense firewall VM
WAN 192.168.1.181 · LAN 10.10.10.1
+ Suricata IDS · WireGuard VPN"] PF --> SW["vmbr1 — isolated lab network
10.10.10.0/24"] SW --> KALI["Kali Linux
attacker · 10.10.10.100"] SW --> PIH["Pi-hole
DNS filtering · 10.10.10.10"] SW --> MEDIA["Jellyfin + *arr stack
self-hosted services"] PHONE["Phone via cellular"] -. WireGuard VPN — 10.6.210.0/24 .-> PF ``` 家庭路由器将流量转发到 pfSense 的 WAN,pfSense 防火墙和 NAT 将隔离的 `10.10.10.0/24` 实验室(因此实际上是双重 NAT)。一个默认拒绝规则阻止实验室访问我的家庭网络——我通过从 Kali 箱子中 ping 我的家庭网关并观察它 100% 失败来确认了这一点,而互联网访问仍然正常。 ## 运行的内容 | 层级 | 技术 | 地址 | |---|---|---| | 虚拟机管理程序 | Proxmox VE 9.1(Debian 13)| 192.168.1.50 | | 防火墙/路由器/入侵检测系统/VPN | pfSense CE 2.8.1 + Suricata + WireGuard | 10.10.10.1 | | DNS 过滤 | Pi-hole(Quad9 + DNSSEC)| 10.10.10.10 | | 攻击者 | Kali Linux 2026.1 | 10.10.10.100 | | 自托管服务 | Jellyfin + *arr stack | 10.10.10.x | ## 我实际做了什么(并进行了验证) ### 第 1 阶段 — Proxmox 主机 在 M920s 上安装了 Proxmox VE 9.1。遇到了新的 deb822 存储库格式——禁用存储库需要 `Enabled: false`,而不是注释掉组件,这导致出现 "malformed entry" 错误,直到我弄清楚为止。添加了一个 XFCE 桌面以实现本地访问。为了方便,我启用了 root 自动登录,这我知道会扩大本地攻击面——我已经将其作为权衡点记录下来;加固计划在路上。 ### 第 2 阶段 — 网络桥接 创建了 `vmbr1` 作为实验室交换机,上面没有 IP,这样 Proxmox 就不会尝试路由——pfSense 处理所有路由、NAT、DHCP 和 DNS。在桥接上放置 IP + NAT 会创建一个与 pfSense 竞争的第二个路由器。 ### 第 3 阶段 — pfSense、Suricata、WireGuard(核心) - **pfSense CE 2.8.1:** WAN 通过 DHCP 从我的 BT 网关获取,LAN `10.10.10.1`,实验室的 DHCP 池,默认拒绝实验室 → 家庭。 - **Suricata** 在 LAN 上以 IDS(仅警报)模式运行,使用 ETOpen 规则以及我的一些规则。我编写了 SID `1000001` 来捕获 nmap SYN 扫描,从 Kali 上运行 `nmap -sS` 对 pfSense 进行扫描,并观察我的规则被触发。 - **WireGuard** 用于从我的手机远程访问,使用 DuckDNS 跟踪我不断变化的家庭 IP。有趣的错误:对等方被保存到配置中,但从未同步到实时接口——我通过 SSH 使用 `wg show`、`ifconfig` 和过滤日志进行跟踪,并通过强制重新同步来修复它。还捕获了一个留在 "None" IPv4 上的接口,这将静默地破坏隧道路由。 ### 第 4 阶段 — Pi-hole 在 `10.10.10.10` 上进行 DNS 过滤,上游使用 Quad9 和 DNSSEC。除了广告拦截之外,这让我能够看到实验室主机通信的每个域名——这对于发现 C2 式回调很有用。验证:`doubleclick.net` → `0.0.0.0`,`google.com` 正常解析。 ### 第 6 阶段 — Kali 攻击者 在实验室网络上运行 Kali 2026.1,具有 CPU 直通。它通过 pfSense 而不是我的家庭网络访问互联网——这正是我想要的隔离。 ## 路线图 - Wazuh SIEM 用于集中日志记录和关联 - VulnHub / Metasploitable 目标在独立的隔离攻击范围内 - 完整攻击 → 检测 → 缓解的记录 - 加固:Proxmox 2FA、fail2ban、非 root 管理员、备份 ## 诚实的限制 - Proxmox 主机本身位于我的家庭网络中,而不是在 pfSense 之后——对于单机实验室来说很正常,但我会将 pfSense 移到自己的硬件上,以控制整个房屋。 - 单操作员设置,具有 root 自动登录;适当的身份验证加固已列入清单。 ## 截图 每个阶段的证据——Suricata 警报、被阻止的 ping、Pi-hole 仪表板、nmap 扫描、WireGuard 流——位于 `/screenshots`。
标签:Metaprompt