防火墙工作原理
防火墙是网络安全的第一道门——决定哪些流量能进、能出、能通过。理解状态防火墙和包过滤的区别,是写出正确防火墙规则的基础。
防火墙类型对比
类型 工作层 特点 适用场景
────────────────────────────────────────────────────────────────────────
包过滤(Packet Filter) L3/L4 无状态,只看IP/端口/协议 路由器 ACL
状态防火墙(Stateful) L4 追踪连接状态,自动放回程 iptables/nftables
应用层防火墙(L7/WAF) L7 理解应用协议,过滤内容 WAF, Nginx ModSec
代理防火墙(Proxy) L7 代理所有连接 Squid, 企业级
下一代防火墙(NGFW) L7+ DPI + IPS + 应用识别 Palo Alto, Fortinet
状态防火墙:连接跟踪
状态防火墙维护一张连接状态表——知道哪些连接是合法建立的,自动放行回程流量:
连接状态表(Conntrack Table):
源IP:端口 目标IP:端口 协议 状态 超时
──────────────────────────────────────────────────────────────────
192.168.1.100:54321 8.8.8.8:53 UDP ESTABLISHED 30s
192.168.1.100:50000 93.184.216.34:443 TCP ESTABLISHED 300s
192.168.1.101:60000 10.0.50.10:3306 TCP ESTABLISHED 300s
规则逻辑:
1. 检查规则表(从上到下,第一条匹配就执行)
2. 如果是已建立连接的回程 → 直接放行(不需要规则)
3. 新连接 → 按规则决定 ACCEPT / DROP / REJECT
# 查看 Linux 连接跟踪表
conntrack -L
cat /proc/net/nf_conntrack
# 连接跟踪统计
conntrack -S
防火墙规则处理流程
flowchart TD
A[收到数据包] --> B{是否已建立\n连接状态?}
B -->|是 ESTABLISHED/RELATED| C[直接放行]
B -->|否 新连接/无状态| D[从第一条规则开始匹配]
D --> E{匹配规则?}
E -->|ACCEPT| F[放行]
E -->|DROP| G[静默丢弃\n发送方超时]
E -->|REJECT| H[丢弃+返回 ICMP 错误\n发送方立即知道被拒绝]
E -->|无匹配| I{默认策略}
I -->|ACCEPT| F
I -->|DROP| G
网络区域模型(Zone-Based)
现代企业防火墙通常按安全区域设计规则:
高安全 ←──────────────────────────────────────────→ 低安全
┌────────┐ ┌───────────┐ ┌──────┐ ┌────────────┐
│Internal│ │ DMZ │ │ OA │ │ Internet │
│ 服务器区│◄──►│ Web/API │◄──►│办公网│◄──►│ 外网 │
│ L4 │ │ L3 │ │ L2 │ │ L1 │
└────────┘ └───────────┘ └──────┘ └────────────┘
区域间规则:
Internet → DMZ:允许 TCP 80/443
DMZ → Internal:允许 TCP 3306/5432/6379(按需)
OA → Internal:允许部分内网服务
Internal → Internet:允许出站(通过 NAT)
任何 → Internal:默认拒绝(除非有显式规则)
DROP vs REJECT:选哪个?
DROP(静默丢弃):
对方没有任何响应 → 等待直到超时(TCP 通常 60-120 秒)
优点:不暴露防火墙存在,扫描者需要更长时间
缺点:合法用户等待时间长(超时才知道不通)
用途:对外网/不信任区域
REJECT(拒绝+通知):
立即返回 ICMP Port Unreachable 或 TCP RST
优点:合法用户立即知道服务不可用
缺点:暴露防火墙存在
用途:内网之间,方便排障
云安全组 vs 传统防火墙
特性 云安全组(AWS SG/阿里云SG) 传统防火墙(iptables)
──────────────────────────────────────────────────────────────────────────
状态 有状态(自动放行回程) 有/无状态(取决于配置)
默认策略 入方向全拒绝,出方向全允许 可自定义
规则数量 较少(100-200条) 可以很多
方向 分入/出站规则 可按链(FORWARD/INPUT/OUTPUT)
作用对象 绑定到实例或子网 绑定到主机/网络设备
管理界面 Web 控制台/API 命令行/API
常见错误 忘记配出站规则(某些云默认限制) 规则顺序错误
CCNA 对应考点
考纲位置:Domain 5.1 — Define key security concepts Domain 5.4 — Configure and verify access control lists
高频考题: - 状态防火墙与包过滤的区别(有无连接状态追踪) - DROP vs REJECT 的行为差异 - 防火墙区域模型(Inside / Outside / DMZ) - 隐式拒绝(Implicit Deny):ACL/防火墙末尾默认拒绝所有
下一节:iptables/nftables 规则设计——理解了原理,动手用 Linux 内置的防火墙工具写规则——这是服务器安全的基础操作。