区域决定默认策略
firewalld 把规则组织成区域:每个区域有一套默认行为与规则集,接口或来源地址被归入某个区域后,就套用该区域的策略。public 默认只放行 ssh 等少量服务,internal、trusted 则信任程度更高。多网卡服务器按用途分区域绑定——对外的收紧、内网的放宽——比在一个区域里堆大量来源限制更清晰,也更不容易漏配。
基本信息
| 默认区域 | firewall-cmd --get-default-zone、--set-default-zone= |
|---|---|
| 接口绑定 | --add-interface、--change-interface、--zone=<zone> --add-interface= |
| 查看绑定 | --get-zone-of-interface=ens33、--list-all-zones |
| 典型区域 | public 对外、internal 内网、trusted 完全信任、drop 丢弃 |
| 持久化 | 操作加 --permanent 后 firewall-cmd --reload |
| 权限要求 | root 或 sudo |
典型使用场景
- 多网卡服务器按业务面划分区域,管理网与业务网策略分离
- 新系统初始化时把默认区域从默认值调整为符合基线的区域
- 排查某张网卡为什么被放行了某些端口,先确认它归属哪个区域
- 临时把接口切到受限区域做安全演练
- 批量交付时统一各机器的区域绑定关系
区域操作
区域操作
firewall-cmd --get-default-zone # 看默认区域
firewall-cmd --set-default-zone=public # 设为永久生效
firewall-cmd --get-zone-of-interface=ens33 # 查某接口当前归属(操作前先记录)
firewall-cmd --zone=internal --add-interface=ens192 # 运行时绑定
firewall-cmd --zone=internal --change-interface=ens192 --permanent # 永久变更归属
firewall-cmd --zone=internal --list-all # 核对该区域接口、服务与端口
firewall-cmd --reload # 让永久配置生效多网卡典型布局
多网卡典型布局
# 对外网卡放 public,只放行业务端口
firewall-cmd --zone=public --add-interface=ens160 --permanent
firewall-cmd --zone=public --add-service=https --permanent
# 管理网卡放 internal,按来源允许管理流量
firewall-cmd --zone=internal --add-interface=ens192 --permanent
firewall-cmd --zone=internal --add-service=ssh --permanent
firewall-cmd --zone=internal --add-source=10.10.0.0/24 --permanent # 也可按来源归区
firewall-cmd --reload
firewall-cmd --list-all-zones | head -40 # 逐区域核对配置结果区域属性读法
| 字段 | 含义 | 判读要点 |
|---|---|---|
| interfaces | 归属该区域的接口 | 为空说明该区域当前没有生效接口 |
| sources | 归属该区域的来源地址 | 按来源归区适合单网卡多网段场景 |
| services | 已放行服务名 | 服务名对应 /usr/lib/firewalld/services 定义 |
| ports | 已放行端口 | 与 services 有重叠时注意重复放行 |
| target | 该区域的默认动作 | default 拒绝入站未匹配流量,ACCEPT/DROP 语义不同 |
| masquerade | 是否开启地址伪装 | 出网 NAT 场景需要,内网互联不需要 |
多网卡服务器建议按用途分区域绑定:对外网卡用 public 收紧,内网互信网卡用 internal 或 trusted,规则边界比在单一区域里堆来源限制更清晰。
change-interface 会把接口从原区域移出:执行前先用 --get-zone-of-interface 记录现状,远程操作时避免把管理面接口切到拒绝入站的区域。