direct接口是firewalld应急阻断的首选通道,绕过zone和服务抽象层,直接向netfilter注入iptables规则,不重载、不断连、不刷新,实现热注入;适用于封禁ip或网段的入出向流量,规则即时生效且可逆。

Firewalld 的 Direct 接口不是备用方案,而是应急阻断的首选通道——它绕过 zone 和 service 抽象层,直接向底层 Netfilter 插入 iptables 规则,无需重载、不中断连接、不触发规则刷新,真正实现“热注入”。
为什么必须用 Direct 接口做应急阻断
常规 firewalld 操作(如 --add-rich-rule 或 --add-port)依赖区域策略合并与运行时规则重建,每次 --reload 会短暂清空连接跟踪表,导致已有 TCP 连接重置。而入侵响应中,保留可疑连接用于取证、监控横向移动路径至关重要。Direct 接口直接调用 iptables 命令,规则立即生效且完全兼容现有连接状态。
快速注入一条精准阻断规则
以紧急封禁攻击源 IP 203.0.113.45 为例(禁止其访问本机所有端口):
- 执行命令:
firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -s 203.0.113.45 -j DROP - 参数说明:
INPUT链作用于入站流量;数字0表示插入到链首(最高优先级);-j DROP立即丢弃不响应 - 该规则仅存在于运行时,重启 firewalld 后自动消失,符合应急“临时封禁、事后复盘”的原则
封禁整个网段并防止反弹出站
若确认攻击来自 198.51.100.0/24,且需同时阻止本机向该网段发起连接(防 C2 回连或误配):
- 入向封禁:
firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -s 198.51.100.0/24 -j DROP - 出向封禁:
firewall-cmd --direct --add-rule ipv4 filter OUTPUT 0 -d 198.51.100.0/24 -j DROP - 两条规则均即时生效,不影响已建立的 SSH 管理会话或其他合法连接
验证与清理
注入后务必验证是否生效,并在处置完成后及时清理,避免规则堆积:
- 查看所有 Direct 规则:
firewall-cmd --direct --get-all-rules - 删除指定规则(按原始命令反向构造):
firewall-cmd --direct --remove-rule ipv4 filter INPUT 0 -s 203.0.113.45 -j DROP - 清空全部 Direct 规则(慎用):
firewall-cmd --direct --remove-rules ipv4 filter INPUT
Direct 接口是 firewalld 在高危场景下最锋利的那把刀——它不改变区域配置、不干扰服务定义、不引发连接中断,只做一件事:立刻、干净、可逆地切断威胁路径。











