按源地址分区隔离
firewalld 的区域除了按网卡绑定,也可以按源地址绑定:把管理网段直接绑到一个高信任区域,其余流量走公众区域。这种方式比写富规则更直观,区域级的访问分离也更容易长期维护——管理面的放行只存在于一个地方,不会散落在多条规则里。
基本信息
| 适用平台 | Linux(firewalld) |
|---|---|
| 风险等级 | 高 |
| 基线要求 | 仅管理网段所在区域放行 ssh,公众区域不放 ssh |
| 关键命令 | --add-source 与 --remove-service |
| 生效方式 | --permanent 修改后执行 --reload |
典型使用场景
- 管理网与业务网的访问分离
- 只让运维网段能连接 SSH
- 把零散的富规则收敛成区域级策略
- 多网卡多区域环境的分层控制
- 变更后逐网络位置验证可达性
绑定与收敛
绑定与收敛
firewall-cmd --permanent --zone=trusted --add-source=10.20.0.0/16 # 管理网段绑定到高信任区域
firewall-cmd --permanent --zone=trusted --add-service=ssh # 该区域放行 ssh
firewall-cmd --permanent --zone=public --remove-service=ssh # 公众区域移除 ssh
firewall-cmd --reload # 使永久配置生效
firewall-cmd --zone=trusted --list-all # 复核区域配置
firewall-cmd --get-active-zones # 确认源与接口的区域归属检查项与判读
| 检查项 | 含义 | 注意点 |
|---|---|---|
| --add-source | 按源地址绑定区域 | 与按接口绑定可以并存 |
| 区域优先级 | 源匹配优先于接口匹配 | 排查归属时要看清 |
| trusted 区域 | 高信任区域的放行项 | 只放必要服务 |
| public 区域 | 面向不可信流量的默认区域 | 不应放行管理端口 |
| 活动区域 | 各接口与源的实际归属 | 用 --get-active-zones 复核 |
操作顺序不能反:先把 trusted 区域的源与 ssh 配好并验证可用,再从 public 移除 ssh;反过来操作会把自己关在门外。
改区会切断改动瞬间不再匹配的既有连接:要配合运维窗口和回滚预案执行。
多网卡多区域的环境要逐个来源位置验证可达性:只在管理网段自测等于没有测试。
源绑定与接口绑定可能同时存在,而源匹配的优先级更高:排查某条流量到底落进哪个区域时,要先看源规则再看接口规则。