srkyn/home-network-security

GitHub: srkyn/home-network-security

一份脱敏的家庭网络安全案例研究,记录了基于 OPNsense 防火墙和 Proxmox 安全控制平面的纵深防御架构设计与运维实践。

Stars: 0 | Forks: 0

# 家庭网络安全

OPNsense Home Network Security project banner

实时的 OPNsense 防火墙以及用于个人网络的轻量级 Proxmox 安全控制平面:防火墙策略、DNS 安全、CrowdSec 阻断、集中式日志、资产感知、欺骗技术、可用性监控、安全按需扫描以及运维文档。 本仓库记录了一个实际运行的个人网络构建过程,但未发布敏感的配置导出、公网 IP、机密信息、主机名或私密管理细节。其目的是展示工程决策、安全控制和运维习惯,而不会将该网络变成一张目标蓝图。 ## 概览 - 采用 DHCP WAN 和单一可信 LAN 的 OPNsense 边缘防火墙。 - WAN 配置为阻止专用网络和 bogon 网络。 - 私有 RFC1918 LAN,为受信任的客户端分配了限定范围的 DHCP 地址池。 - 在端口 53 上启用 Unbound DNS,支持 DNSSEC 和通过 DNS-over-TLS 转发至 Quad9。 - 在 LAN 上启用 Dnsmasq,以支持 DHCP/本地主机注册,监听备用本地 DNS 端口。 - 防火墙规则阻止 LAN 客户端直接向未经批准的解析器发送 DNS 以绕过本地 DNS。 - 启用 CrowdSec 代理、本地 API 和防火墙反弹器,并配置了 IPv4/IPv6 阻断名单别名。 - Suricata IDS 配置已存在,但目前处于禁用状态。 - WireGuard 和 OpenVPN 存在于配置树中,但目前处于禁用/未实例化状态。 - 存在用于游戏/延迟优先级的流量整形队列和规则,但目前管道处于禁用状态。 - 添加了轻量级 Proxmox 控制平面,包含用于监控、日志、发现、金丝雀服务、配置备份和按需扫描的 LXC。 - VictoriaLogs 接收防火墙和金丝雀日志,具有短暂的保留期和磁盘容量限制。 - NetAlertX 提供本地未知设备感知,无需进行侵入式扫描。 - OpenCanary 充当虚假内部 NAS/服务器,用于高信号交互告警。 - Uptime Kuma 使用 SQLite 监控核心服务,以保持较低的 RAM 使用率。 - Glance 提供单页日常运维仪表板。 - Nuclei、Trivy 和 opnDossier 仅作为手动运行器可用,不进行计划内扫描。 - 管理访问保持私密,并限定为受信任的 LAN 访问范围。 - 文档优先方法:设计说明、脱敏规则、变更跟踪和验证清单。 ## 架构 ``` flowchart LR Internet["Internet"] --> Modem["ISP Modem / ONT"] Modem --> Firewall["OPNsense Firewall"] Firewall --> LAN["Private RFC1918 LAN"] Firewall --> DNS["Local firewall-managed DNS path"] Firewall --> CrowdSec["CrowdSec firewall bouncer"] Firewall --> Shaper["Traffic shaping config
(pipes disabled)"] LAN --> Proxmox["Proxmox security-services node"] Proxmox --> Dashboard["Glance dashboard"] Proxmox --> Logs["VictoriaLogs"] Proxmox --> Discovery["NetAlertX"] Proxmox --> Canary["OpenCanary fake NAS"] Proxmox --> Kuma["Uptime Kuma"] LAN --> ClientHost["Trusted client"] DNS --> Quad9["Quad9 DNS-over-TLS"] CrowdSec --> Blocklists["IPv4/IPv6 blocklist aliases"] Firewall -- "remote syslog" --> Logs Canary -- "canary events" --> Logs ``` ## DNS 强制执行流程 ``` flowchart LR Client["Trusted client"] --> DHCP["Scoped DHCP range"] DHCP --> LocalDNS["Local firewall-managed DNS path
Unbound + Dnsmasq"] LocalDNS --> DoT["Quad9 DNS-over-TLS"] Client -. "Direct DNS to outside resolver" .-> Block["LAN DNS-bypass block rule"] Block --> Review["Firewall log review"] ``` 这项控制使得该设置超越了默认的家庭防火墙:要求客户端使用防火墙能够验证和记录的解析器路径,同时阻断直接绕过 DNS 的尝试。 ## 安全目标 该项目围绕实用的防御目标而构建: - 通过保持入站服务关闭(除非明确需要)来减少攻击面。 - 让 LAN 客户端保持在防火墙控制的 DNS 路径上。 - 使用 DNSSEC 和 DNS-over-TLS 来提高解析器的完整性和隐私性。 - 使用 CrowdSec 防火墙阻断来增加基于信誉的保护。 - 对当前的单 LAN 设计进行文档记录,以便后续审慎地添加网络分段。 - 保持防火墙管理的私密性、审慎性并记录在案。 - 保留设计决策的证据,而不暴露可重复利用的攻击信息。 ## 案例研究 **问题:** 家庭网络可能会在不知不觉中变得难以理清:DNS 绕过了本地控制,防火墙规则发生偏移,未经审查就启用了插件,并且文档落后于实际的配置。 **方法:** 我审查了导出的 OPNsense 配置,将当前的控制措施与未来的工作分离开来,并在不发布敏感网络细节的情况下对设置进行了记录。 **审查的证据:** WAN/LAN 接口角色、限定范围的 DHCP 模型、Unbound 和 Dnsmasq 设置、Quad9 DNS-over-TLS 转发、LAN DNS 绕过阻断、CrowdSec 配置、Suricata 状态、VPN 状态以及流量整形状态。 **接下来要检查的内容:** 定期备份验证、固件/插件更新周期、来自多个客户端的 DNS 路径测试、CrowdSec 阻断名单健康状况,以及基于实际设备信任边界判断是否值得添加网络分段。 **结果:** 公开的文章描述了哪些内容已配置、哪些内容保持私密,以及哪些内容仍是未来的工作。 ## Proxmox 安全控制平面 第二阶段添加了一个基于 Proxmox 的轻量级安全服务节点。它的构建遵循一个简单的规则:提高可见性,而不在流量路径中放置任何东西。 ![轻量级 Proxmox 安全控制平面](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/b20e8840d0095701.svg) 该控制平面提供: - 一个作为日常起点的 Glance 仪表板。 - 使用 SQLite 的 Uptime Kuma 服务监控。 - 用于 OPNsense 和金丝雀日志搜索的 VictoriaLogs。 - 用于本地资产发现和未知设备审查的 NetAlertX。 - 充当虚假内部 NAS/服务器的 OpenCanary。 - 用于 OPNsense 配置备份的受限 Git 目标。 - 用于限定范围检查的手动 Nuclei、Trivy 和 opnDossier 运行器。 有关完整的设计理由,请参见 [docs/proxmox-security-control-plane.md](docs/proxmox-security-control-plane.md)。 ## 控制领域 | 领域 | 当前实施 | 作品集证据 | |---|---|---| | 边界防火墙 | 采用 LAN-to-WAN NAT 的 OPNsense WAN/LAN 防火墙 | 经过脱敏处理的规则意图,而非原始导出 | | WAN 加固 | 在 WAN 上启用专用网络和 bogon 阻断 | 接口摘要 | | DNS 安全 | 带有 DNSSEC 和 Quad9 DNS-over-TLS 的 Unbound | 解析器流程和 DNS 绕过规则 | | DHCP/本地 DNS | LAN 上的 Dnsmasq,为受信任的客户端提供限定范围的 DHCP 模型 | 经过脱敏处理的 DHCP 模型 | | DNS 强制执行 | 阻断 LAN DNS 绕过,仅允许批准的本地解析器 | 防火墙规则摘要 | | CrowdSec | 启用代理、LAPI、防火墙反弹器和阻断名单别名 | 控制摘要 | | IDS/IPS | Suricata 配置已存在但被禁用 | 真实状态及未来工作 | | VPN | WireGuard/OpenVPN 当前未启用 | 未来工作 | | 流量整形 | 已配置游戏/延迟队列和规则;管道已禁用 | 当前调优说明 | | 安全仪表板 | 用于日常检查和工具启动点的 Glance 仪表板 | 经过脱敏处理的仪表板工作流 | | 集中式日志 | VictoriaLogs 接收防火墙和金丝雀 syslog | 日志架构摘要 | | 资产感知 | 限定为本地 LAN 的 NetAlertX | 未知设备审查工作流 | | 金丝雀信号 | OpenCanary 虚假 NAS/服务器 | 高信号交互模型 | | 可用性监控 | 带有 SQLite 的 Uptime Kuma | 监控列表和运维说明 | | 安全扫描器 | Nuclei、Trivy 和 opnDossier 仅作为手动运行器 | 无计划内的侵入式扫描 | | 运维 | 备份、更新、验证和变更记录 | 维护清单 | ## 设计原则 ### 1. 从信任边界开始 当前的网络是 OPNsense 后面的单个 LAN。此处对此进行了如实记录,因为网络分段是未来的工作,而不是当前的控制措施。第一个信任边界是防火墙边缘加上受控的 DNS。 ### 2. 保持暴露的审慎性 默认情况下避免入站访问。如果需要访问某项服务,更安全的做法是记录原因、限定源/目标范围、优先使用 VPN 样式的访问,并在稍后进行审查。 ### 3. 记录足以进行调查的日志 安全控制措施只有在其输出结果能够被审查时才有用。防火墙、DNS 层、CrowdSec 以及任何未来的 IDS/IPS 层都应产生足够的信号来回答发生了什么,而不会使日常使用淹没在噪音中。 ### 4. 记录但不泄露 安全作品集应该证明能力,而不是发布目标蓝图。本仓库使用经过脱敏处理的图表和控制描述,而不是原始的防火墙备份或真实的主机详细信息。 ## 未发布的内容 - 公网 IP 地址。 - 防火墙备份导出。 - VPN 密钥、证书、预共享密钥、令牌或凭据。 - 完整的内部 IP 规划或主机清单。 - 真实的设备名称、用户名、MAC 地址、序列号或 ISP 详细信息。 - 显示敏感 DNS、DHCP、ARP、VPN 或防火墙状态的截图。 ## 验证清单 在维护环境时,请将此作为定期审查清单: - 确认 WAN 侧的管理访问已禁用。 - 审查入站 NAT 和防火墙规则,排查不必要的暴露。 - 确认 LAN 客户端收到了预期的 DHCP 设置。 - 确认 LAN 客户端使用了预期的 DNS 路径。 - 审查 DNS 过滤的有效性和误报情况。 - 如果稍后启用了 IDS/IPS,请检查告警中是否存在重复的噪音、被阻断的活动以及调优的机会。 - 确认备份存在且已安全存储。 - 验证固件/插件更新是否按受控的时间表应用。 - 在发生重大网络变更后审查文档。 ## 仓库结构 - `README.md`:项目概述和面向公众的案例研究。 - `docs/architecture.md`:经过脱敏处理的架构和区域模型。 - `docs/design-rationale.md`:每个主要控制措施和权衡背后的理由。 - `docs/proxmox-security-control-plane.md`:轻量级 Proxmox 安全控制平面案例研究。 - `docs/operations.md`:维护和验证工作流。 - `docs/redaction-guide.md`:安全共享网络安全工作的规则。 - `docs/linkedin-project-package.md`:LinkedIn 项目条目、发布帖子和简历要点。 - `LINKEDIN.md`:个人资料项目条目和发布帖子草稿。 - `SECURITY.md`:关于报告仓库安全问题的指南。 ## 状态 实际运行的个人网络项目。文档已经过脱敏处理,基于 2026-05-06 审查的 OPNsense 配置导出。
标签:CrowdSec入侵防御, Dnsmasq, DNS-over-TLS, DNSSEC, DNS安全, HomeLab, IP 地址批量处理, Linux容器, LXC, Metaprompt, NetAlertX, OpenVPN, OPNsense防火墙, PB级数据处理, Proxmox虚拟环境, Suricata IDS, Unbound DNS, Uptime Kuma, VictoriaLogs, WireGuard VPN, 子域名变形, 安全控制平面, 安全运维, 家庭实验室, 家庭网络安全, 密码管理, 开源安全工具, 插件系统, 日志集中管理, 服务可用性监控, 检测规则, 网络安全, 网络资产发现, 蜜罐技术, 边界防护, 逆向工程平台, 隐私保护