iptables企业防火墙是需前置规划、分层配置、持续验证的防护体系:先厘清流量路径与业务边界,再依表链逻辑逐层落规则,最后用状态跟踪和日志支撑闭环运维。

iptables 企业防火墙不是装上就完事的工具,而是一套需要前置规划、分层配置、持续验证的防护体系。核心在于:先理清流量路径和业务边界,再按表链逻辑逐层落规则,最后用状态跟踪和日志支撑闭环运维。
明确网络角色与流量模型
企业环境必须区分三类主机角色,每类对应不同规则重心:
- 对外服务节点(如 Web、API 服务器):重点加固 INPUT 链,只开放必要端口(80/443/22),默认 DROP;OUTPUT 可宽松,但建议限制高危外连(如 outbound SMTP)
-
网关/跳板机(多网卡、启转发):必须开启
net.ipv4.ip_forward = 1;FORWARD 链是主战场,需结合源/目标区域(如 192.168.1.0/24 → 10.0.0.0/8)精细控制;PREROUTING/POSTROUTING 配合 nat 表做 DNAT/SNAT - 内网管理终端(如运维工作站):INPUT 基本放行(信任内网),OUTPUT 和 FORWARD 严格限制;常配合 mangle 表打 MARK 做 QoS 或审计分流
四表选用原则:聚焦 filter 与 nat
企业生产环境中,95% 的规则集中在两个表:
-
filter 表:承载所有访问控制逻辑。INPUT 链处理入站请求,FORWARD 控制跨网段转发,OUTPUT 管控本机外发。这是防火墙的“主干”,务必设默认策略(
iptables -P INPUT DROP)并前置 ESTABLISHED/RELATED 规则保连接正常 -
nat 表:仅在需地址转换时启用。DNAT 用于公网访问内网服务(如
-t nat -A PREROUTING -d 203.0.113.10 -p tcp --dport 80 -j DNAT --to-destination 192.168.2.10:80);SNAT 用于内网设备共享出口 IP 上网(-t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE) - mangle、raw、security 表极少使用,除非有特殊需求(如 bypass conntrack 降低延迟、或 SELinux 策略联动),初期可忽略
规则编写关键顺序与技巧
规则顺序决定匹配结果,必须遵循“从具体到宽泛、从拒绝到允许”原则:
- INPUT 链典型顺序:
① 允许本地回环(-i lo -j ACCEPT)
② 允许已建立连接(-m state --state ESTABLISHED,RELATED -j ACCEPT)
③ 按 IP+端口白名单放行(如 SSH 来自运维网段:-s 172.16.5.0/24 -p tcp --dport 22 -j ACCEPT)
④ 拒绝高危扫描行为(如多端口 SYN 扫描:-p tcp --tcp-flags ALL NONE -j DROP)
⑤ 默认 DROP(-j DROP) - 避免常见陷阱:
• 不要直接用-A追加到末尾——新规则可能被前面的宽泛规则提前匹配
• 删除规则前先用--line-numbers查序号,再-D INPUT 3精准删除
• 生产环境禁用iptables -F清空,应逐条-D或用脚本备份后重载
上线前必做的三件事
规则写完不等于安全落地,必须完成闭环验证:
-
保存规则:CentOS 7 使用
service iptables save或iptables-save > /etc/sysconfig/iptables;Ubuntu/Debian 推荐用iptables-persistent持久化 -
日志辅助排查:在关键 DROP 规则前加 LOG 动作(
-j LOG --log-prefix "BLOCKED: "),配合journalctl -k | grep BLOCKED快速定位误拦 - 模拟测试覆盖:用不同来源 IP(办公网、IDC、云厂商出口)telnet/nc 测试开放端口;用 curl 模拟 HTTP 请求验证 DNAT;用 tcpdump 抓包确认 FORWARD 是否生效











