前言
2023 年,这一年我离开了深圳,伴随着我的家庭网络也跨了省份,来到新的基地,最初呢,我保持了它最原始的网络结构,对接线都拍了照,原封不动的进行了还原,在新公司入职没多久,就不停的接触安全解决方案,接触的多了,逐渐的就想好好调整一下网络,考虑在合适的边界引入防火墙,再加上那段时间成功试验了 proxmox 给虚机划分 vlan 成功,鉴于现有网络结构有点脆弱,每个节点依赖虚拟路由系统的开机,才可连通其辖域里的网络,再加上一直,特别想把 proxmox 多个节点集中管理,但我的主力节点开机时间区间不一致,只有少数节点在线时,是无法启动虚拟机的,直到我遇到了一条命令后,果断下定决心进行网络改造,那命令后边给出。
简化网络拓扑
上一版的网络结构基本已是基于路由模式且结构清晰明朗,唯一的诟病就是具有多个路由节点,需要同步访问控制策略,甚是不便。这一次,力争最佳实践,最大程度简单、安全地改造网络。新的网络环境没有了公网 IP ,由于咱新公司的网络给咱限制了带宽,跟流量走 VPS 一趟速度相当,也就不折腾向运营商索要公网 IP 了,一根光纤入户,接入光猫,光猫的 lan 口入室联入我的家庭网络,边界上布置了一个 OpenWRT 软路由,紧接着就是开源防火墙 pfSense ,在 pfSense 上做了 Vlan 划分,Vlan 基于我软路由硬件的多个物理网口桥接上进行的划分,从而实现了 proxmox 物理节点们单一网线运载了多个逻辑隔离网络,这也是我简化网络的底牌。整体网络拓扑图如下:
proxmox 组建集群
之前一直计划将 proxmox 节用集群模式部署,实现在一个节点上对多个节点实行统一管理,主节点最佳的情况是保持 24 小时开机,且节能耐用,家里的工控主机,也是我的软路由,必须是它来充当这个角色,该工控机是上图的 pve-vnet 。pve-vnet 配置及性能相当有限,赛扬 3955U ,2 核 2 线程,8G 内存,128G 固态存储。
其开启集群主节点,仅需在 Datacenter - Cluster
栏目下点击 Create Cluster
,然后填写自己的集群名称及选取本地网络链路即可创建完成,我这里找一台 VPS 做示例。
加入集群从节点,在主节点 pve-vnet 上获取加入节点信息。
将如上复制的信息粘贴到从待加入节点的输入框,并输入主节点的 root 密码,点击添加即可。
添加完各节点后,可以登录它们中的任意一个节点对整个集群节点进行管理,我这里添加了三个,如下称 pve-prod 、pve-nas、pve-lab ,汇总后,当下有 4 个节点在运行中,有 4 个运行的虚拟机,25 个运行的容器,14 核 CPU,61.84G 内存,24.79T 存储。整体资源面板效果如下。
另外,需要重点关注的一点,在加入节点后,上线比例满足相应的要求,可能会导致整体集群的虚机及容器无法开启,比如我这里的场景,我的工控机主节点每天凌晨有一次重启,而重启的时间点,其他从节点都在关机状态,那必然导致重启后没有可用虚拟机器,家里 wifi 陷入瘫痪,基础服务起不来,外网接入 VPN 用户认证瘫痪,这种情况下,我是采用强制指定在线节点数量来保证,即使仅有一台机器工控主节点,也能顺利运行,即在工控主节点 pve-vnet 上定期执行一下检查,判断节点在线情况,进行更新设置,计划任务如下。
* * * * * pvecm status | grep -q blocked && pvecm expected $(pvecm status |grep "Total votes" | awk -F ":" '{print $2}')
主节点 pve-vnet
虚机分配
如上配置算是寸土寸金,因此必须严格把控其上虚机的数量及其资源分配,家里的 pve-vnet 仅跑了 2 个容器及 2 个虚拟机,详细设定如下。
序号 | 主机名 | 操作系统 | 区域 | 用途 |
---|---|---|---|---|
1 | 01-015-vnet | OpenWRT | 外网接入区 | 出口网关,掌管网络外联控制,如实现白名单联网 |
2 | 01-015-pfsense | pfSense | 外网接入区 | 防火墙,VPN,网络分区分域,入侵检测 |
3 | 01-015-proxy01 | debian | 边界外联区 | 代理服务,给需要内网需要连外网的机器提供代理服务 |
4 | 01-015-proxy02 | debian | 边界外联区 | 基础服务,如 openlap 统一账号认证系统 |
工控软路由网口分配
家里的工控软路由共有 7 个网口,除去一个 console 口,仅剩 6 个网口可被分配。这里将所有网口以桥接的模式供虚拟机使用,并未采用直通的办法,大体实现如下图所示。
将家庭实体网络大体分核心区和办公区,是将办公区内办公主力机器、家庭 wifi 所占用的接口与核心区域的网络接口区分开,核心区下再做 vlan 进行划分网络,避免办公机器上随意修改 vlan id 即可接入到保密区进行访问,安全风险较高。
序号 | 桥接名称 | 桥接接口组 | 用途说明 |
---|---|---|---|
1 | vmbr0 | enp1s0 | 供 wan 口接入,给到网关 OpenWRT 使用 |
2 | vmbr1 | enp2s0,enp3s0,enp4s0 | 这相邻三个接口供核心区域基于 VLAN 再度划分网络 |
3 | vmbr2 | enp5s0,enp6s0 | 最后两个接口用于连接家庭 wifi 设备和办公机器 |
4 | vmbr3 | - | 虚拟网络,供网关和防火墙连接 |
5 | vmbr4 | - | 虚拟网络,供边界外联区使用 |
接入网络
家庭网络网关的处于稳定性考虑,选取了虚拟机,而非容器,实际分配 1 核 CPU,512M 内存及 2G 的存储。
操作系统搭载 OpenWRT ,由于新版 OpenWRT 已经出来了,但其防火墙管理工具改成 nftables ,iptables 的有些功能无法继续支持,所以还是继续选取了旧有版本 21.02.1 。
网络涉及两个网口,一个 wan 口接光猫,一个 lan 口接 防火墙 pfSense 。
分区分域
在以往的方案中,主要是通过 IP 段借助关键路由节点实施网络防护墙规则来隔离多个区域,多个关键路由节点通过同一服务点获取下发的规则来更新自身规则,并无入侵检测能力。现引入开原版的 pfSense 防火墙来集中对网络划分区域。首先,需对网络区域及网段做个规划设定。
序号 | 区域名称 | 网段 | 用途说明 |
---|---|---|---|
1 | 互联网区 | 0.0.0.0/0 | 因特网,不受信任区域 |
2 | 外网接入区 | 192.168.32.0/24 | 部署网关和防火墙 VPN 枢纽 |
3 | 虚拟专线区 | 172.16.32.0/22 | wireguard、openvpn 组网 |
4 | 外网异地区 | 10.16.0.0/16 | 外地网络 |
5 | 边界外联区 | 10.32.0.0/22 | 部署网络外联代理服务及基础服务等 |
6 | 网络管理区 | 10.32.4.0/22 | 部署网络管理平台、安全管理平台及运维堡垒机等 |
7 | 核心业务区 | 10.32.8.0/22 | 部署内网主体业务,如聊天室、网盘、家庭影音等 |
8 | 开发测试区 | 10.32.12.0/22 | 部署测试环境,如渗透系统kali、开源方案 POC 测试 |
9 | 靶场练习区 | 10.32.16.0/22 | 部署靶机环境,如 vulfocus、vulhuub 等 |
10 | 军事保密区 | 10.32.20.0/22 | 部署涉及个人敏感信息、高价值数据的存储网盘及应用系统 |
11 | 家庭办公区 | 192.168.33.0/24 | 办公机器及家庭 WIFI 所使用 |
12 | 非军事化区 | 10.8.0.0/16 | 对外提供服务的机器群组 |
区域默认访问控制矩阵,Y 表示有权限访问,N 表示无权限访问,C 表示按需设置访问权限。
- | 互联网区 | 外网接入区 | 虚拟专线区 | 外网异地区 | 边界外联区 | 网络管理区 | 核心业务区 | 开发测试区 | 靶场练习区 | 军事保密区 | 家庭办公区 | 非军事化区 |
---|---|---|---|---|---|---|---|---|---|---|---|---|
互联网区 | - | Y | C | C | C | N | N | N | N | N | N | Y |
外网接入区 | C | - | N | N | Y | N | N | N | N | N | N | Y |
虚拟专线区 | C | C | - | N | Y | C | C | N | N | N | N | Y |
外网异地区 | C | C | C | - | Y | C | C | N | N | N | N | Y |
边界外联区 | Y | C | N | N | - | N | N | N | N | N | N | Y |
网络管理区 | Y | Y | Y | Y | Y | - | Y | Y | Y | N | Y | Y |
核心业务区 | C | C | N | C | Y | C | - | N | N | N | N | Y |
开发测试区 | C | C | N | C | Y | N | Y | - | Y | N | Y | Y |
靶场练习区 | C | C | N | N | Y | N | N | N | - | N | N | Y |
军事保密区 | N | N | N | N | N | N | N | N | N | - | N | Y |
家庭办公区 | C | C | C | C | Y | C | Y | Y | N | N | - | Y |
非军事化区 | C | C | N | N | C | N | N | N | N | N | N | - |
防火墙的位置放置在各大区域的核心,外连网关,内连各内部区域,网络接口分配如下。
在防火墙内部的划分情况如下:
依据访问矩阵对应的防火墙规则,列举一个接口核心业务区的示例。
防火墙规则的设定需要注意,越靠上优先级越高,整体是遵循黑名单原则,最后一条策略确保所有流量均可达网关,以便网关总控出口流量,对应接口上的规则应遵循从该接口出去方向,也就是说源地址必须是该接口涉及网段,不然策略不符合预期。
总结
本篇重点针对全新组网给出了关键思路及步骤,下期将分享集中式日志管理,让家庭内网的运营数据按需提取分析,如提取入侵检测数据分析攻击来源、类型等,为告警规则准备条件。