firewalld默认不自动将未知请求送入drop区,而是交由默认zone处理;需执行firewall-cmd --permanent --set-default-zone=drop并重载配置,使未显式匹配的入站流量被无响应丢弃。

Firewalld 默认不会自动把“未定义源IP的未知请求”扔进 drop 区——它只按明确绑定的规则处理流量:要么接口属于某个 zone,要么源 IP 被显式分配到某个 zone。所谓“未知请求”,其实是没被任何 zone 主动接收的流量,它们会 fallback 到默认 zone,而非 drop 区。
确认并设置默认区域为 drop
这是最直接、最底层的兜底控制方式。所有未被其他规则捕获的入站流量,只要没匹配到更具体的 zone(如通过 --add-source 或网卡绑定),就会走默认 zone 的策略。
- 查看当前默认区域:firewall-cmd --get-default-zone
- 永久将默认区域设为 drop:firewall-cmd --permanent --set-default-zone=drop
- 重载配置生效:firewall-cmd --reload
此时,任何未被显式分配到其他 zone 的入站连接(比如新接入的网卡、未指定 source 的访问)都会被 drop zone 的“丢弃所有入包”策略拦截,不响应、不记录、无回包。
避免默认 zone 被意外覆盖
即使设了默认为 drop,仍需防止以下操作无意中引入宽松策略:
- 不要对 public 或其他低信任 zone 执行 --add-service 或 --add-port(除非真需要)
- 检查是否误将网卡绑定了非 drop zone:firewall-cmd --get-active-zones,若有 eth0 在 public,就相当于给该接口开了默认白名单
- 若需保留某网卡对外服务,建议新建专用 zone(如 webzone),单独开放 http/https,并保持默认 zone 仍是 drop
补充强化:用富规则封堵“漏网之源”
drop 作为默认 zone 能兜住大部分,但若业务需在其他 zone 开放服务(如 internal 允许 SSH),又担心来自非授权子网的试探性连接,可叠加富规则精准拦截:
- 拒绝所有非运维网段访问 internal 区的 SSH:firewall-cmd --permanent --zone=internal --add-rich-rule='rule family="ipv4" source address="0.0.0.0/0" port port="22" protocol="tcp" reject'
- 或更严格地只允许可信源:firewall-cmd --permanent --zone=internal --remove-service=ssh,再单独加白:firewall-cmd --permanent --zone=internal --add-source=192.168.10.0/24 + firewall-cmd --permanent --zone=internal --add-service=ssh
验证是否生效
完成配置后,快速验证关键点:
- firewall-cmd --get-default-zone 应返回 drop
- firewall-cmd --zone=drop --list-all 应显示 target: DROP 且无 services/ports
- 从一个未被任何 zone 显式允许的 IP 尝试 telnet 或 curl 任意端口,应表现为超时或无响应(不是 Connection refused)











