Linux防火墙如何实现网络隔离
小樊
45
2025-12-20 10:04:23
Linux防火墙实现网络隔离的实用方案
一、总体思路
- 通过VLAN/子接口把不同业务划分到独立的二层域(如 VLAN 10/20),在三层上让它们处于同一台网关时进行策略控制。
- 在网关或三层设备上开启IP 转发,用iptables/nftables或firewalld对跨网段流量实施“默认拒绝、按需放行”的策略。
- 需要对外发布服务时,使用SNAT/MASQUERADE与端口转发;对不需要互通的网段,直接在FORWARD链上丢弃跨网段流量。
- 对大规模地址或复杂策略,配合ipset提升匹配与管理效率。
- 验证环节用ping、traceroute、tcpdump确认隔离与放行是否符合预期。
二、场景化配置示例
- 示例网络:eth0 上创建 VLAN 10(192.168.10.0/24) 与 VLAN 20(192.168.20.0/24),外网口为 eth1;网关 IP 分别为 192.168.10.1/24、192.168.20.1/24。
- 启用转发(/etc/sysctl.conf):net.ipv4.ip_forward=1,执行 sysctl -p 生效。
- 方案A(nftables,推荐):
- 新建 /etc/nftables.conf,创建 inet filter 与 ip nat 表;
- filter/FORWARD 默认策略 DROP;阻断 VLAN 间转发:iifname “eth0.10” oifname “eth0.20” drop;iifname “eth0.20” oifname “eth0.10” drop;
- 仅允许 VLAN10 上网:iifname “eth0.10” oifname “eth1” accept;iifname “eth1” oifname “eth0.10” ct state {established,related} accept;
- nat/POSTROUTING:oifname “eth1” ip saddr 192.168.10.0/24 masquerade;
- nft -f /etc/nftables.conf 应用,并启用 nftables 服务。
- 方案B(firewalld,区域化):
- 将 ens36(inside)放入 trusted,ens37(dmz)放入 dmz,external 作为默认外部区域;
- dmz 区域仅放行业务所需(如 http),可关闭 ssh、屏蔽 icmp:firewall-cmd --zone=dmz --remove-service=ssh --permanent;firewall-cmd --zone=dmz --add-icmp-block=echo-request --permanent;firewall-cmd --zone=dmz --add-service=http --permanent;
- 外网访问 dmz 的 80 端口做端口转发:firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toaddr=192.168.20.20 --permanent;
- 重载:firewall-cmd --reload。
- 方案C(iptables + ipset,适合大规模黑白名单):
- 创建集合:ipset create subnet1 hash:ip;ipset create subnet2 hash:ip;
- 批量管理成员后,用集合匹配规则实现隔离与放行(如仅允许 subnet1 访问某服务);
- 注意规则顺序,放行规则应优先于阻断规则插入。
三、常见隔离模式与命令要点
- 同主机不同网段互访隔离:在 FORWARD 链上按接口对(如 eth0.10↔eth0.20)直接 DROP,其余按需 ACCEPT。
- 仅某网段可上网:对该网段 SNAT/MASQUERADE,并仅放行其出站与已建立回程(ESTABLISHED,RELATED)。
- 对外发布服务:使用 DNAT/端口转发 将公网端口映射到 DMZ 主机;必要时仅开放白名单来源。
- 大规模地址策略:用 ipset 管理 CIDR/单个 IP,减少规则条数与维护成本。
- 规则顺序与默认策略:隔离场景建议 FORWARD 默认 DROP,仅对明确需求插入 ACCEPT;插入(-I)与追加(-A)的顺序不同,放行规则需优先。
四、验证与运维
- 连通性验证:在 VLAN10 主机 ping VLAN20 主机应不通;从 VLAN10 访问外网与 DMZ 业务应可达(按策略)。
- 路径与抓包:用 traceroute 检查路径是否被策略截断;在相应接口用 tcpdump 观察是否被转发或丢弃。
- 规则与接口核查:iptables/nftables 规则列表、接口与 VLAN 配置定期巡检;变更前备份、变更后回归测试。
五、安全加固与注意事项
- 最小暴露面:仅开放必要端口与服务;对管理口(如 SSH)限制来源 IP,必要时更改默认端口并启用日志审计。
- 区域与服务:在 firewalld 中按 trusted/dmz/external 等区域划分职责,服务按需开启,避免“全开”。
- 主机加固:结合 SELinux/AppArmor 限制进程网络能力,形成多层防护。
- 高隔离需求:对强隔离场景,可叠加 Network Namespaces、容器网络策略或 SDN 方案。