防火墙的表是网络流量管理的基础架构,通过不同的表和规则链实现各种网络安全功能。以下是主要防火墙表及其功能的深入解析:
主要防火墙表
1. filter表(过滤表)
-
核心功能:数据包过滤(允许/拒绝流量)
-
默认包含三条链:
-
INPUT:处理进入本机的数据包
-
FORWARD:处理经过本机路由的数据包
-
OUTPUT:处理本机发出的数据包
-
-
典型应用:
-
允许特定IP访问SSH服务
-
阻止来自特定国家的流量
-
限制内部用户访问某些网站
-
2. nat表(网络地址转换表)
-
核心功能:IP地址和端口转换
-
主要链:
-
PREROUTING:数据包进入路由决策前修改
-
POSTROUTING:数据包离开路由决策后修改
-
OUTPUT:本地生成数据包的地址转换
-
-
典型应用:
-
实现局域网共享公网IP(SNAT)
-
端口转发(DNAT)
-
负载均衡
-
3. mangle表(修改表)
-
核心功能:修改数据包头部信息
-
可操作所有链:可作用于所有五个链(PREROUTING, INPUT, FORWARD, OUTPUT, POSTROUTING)
-
典型应用:
-
设置QoS标记(如设置TOS字段)
-
修改TTL值
-
特殊的路由标记(配合iproute2使用)
-
4. raw表(原始表)
-
核心功能:数据包连接跟踪豁免
-
主要链:
-
PREROUTING
-
OUTPUT
-
-
典型应用:
-
对某些流量禁用连接跟踪(NOTRACK)
-
提高高性能网络环境效率
-
处理特殊协议数据包
-
表与链的处理顺序
数据包通过防火墙时的处理流程:
-
PREROUTING链(raw → mangle → nat)
-
路由决策(判断是发给本机还是转发)
-
INPUT链 (mangle → filter)或 FORWARD链(mangle → filter)
-
OUTPUT链(raw → mangle → nat → filter)
-
POSTROUTING链(mangle → nat)
实际配置示例
示例1:基本的Web服务器保护(filter表)
# 清空现有规则
iptables -F
# 设置默认策略
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
# 允许已建立的连接
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# 允许本地回环
iptables -A INPUT -i lo -j ACCEPT
# 开放HTTP/HTTPS
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# 限制SSH访问
iptables -A INPUT -p tcp --dport 22 -s 192.168.1.0/24 -j ACCEPT
示例2:NAT配置(nat表)
# 启用IP转发
echo 1 > /proc/sys/net/ipv4/ip_forward
# 共享上网(SNAT)
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
# 端口转发(DNAT)
iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 192.168.1.100:80
iptables -A FORWARD -p tcp -d 192.168.1.100 --dport 80 -j ACCEPT
示例3:QoS标记(mangle表)
# 标记VoIP流量
iptables -t mangle -A PREROUTING -p udp --dport 5060 -j MARK --set-mark 1
iptables -t mangle -A PREROUTING -p udp --dport 10000:20000 -j MARK --set-mark 1
# 然后可以使用tc进行流量控制
理解表之间的关系
-
分工协作:各表处理不同层面的网络流量问题
-
filter:安全决策(允许/拒绝)
-
nat:地址转换
-
mangle:数据包修改
-
raw:连接跟踪控制
-
-
处理顺序:数据包依次通过各表,前一表的处理结果会影响后表
-
性能考虑:简单规则放前面,复杂规则放后面;频繁匹配的规则放前面
通过合理配置这些表及其规则链,可以实现从基本访问控制到复杂网络服务的全方位网络安全防护。