Table, Chain, Rule, Policy
针对主机触及的数据包:
1)数据包传入主机,确定哪个 Table(表)进行处理;
2)在 Table 中,确定被哪个 Chain(规则链)处理;
3)在 Chain 中,确定被哪条 Rule(规则)处理;
4)在 Rule 中,确定要执行哪个 Policy(策略);
Table(表)
四表(Four Tables)
raw table:确定是否对该数据包进行状态跟踪。
包含两个规则链:PREROUTING;OUTPUT;
mangle table:修改数据包内容,用来做流量整形的,给数据包设置标记。
包含五个规则链:PREROUTING;INPUT;FORWARD;OUTPUT;POSTROUTING;
nat table:负责网络地址转换,用来修改数据包中的源、目标IP地址或端口。
包含三个规则链:PREROUTING;OUTPUT;POSTROUTING;
filter table:负责过滤数据包,确定是否放行该数据包(过滤)。
包含三个规则链:INPUT;FORWARD;OUTPUT;
在iptables 的四个规则表中,mangle table 和 raw table 的应用相对较少;
当数据包到达防火墙时,规则表之间的优先顺序:raw > mangle > nat > filter
Chain(规则链)
规则链,是由多条 Rule 组成的规则集合;
防火墙会按照从上到下的顺序来读取配置的策略规则:
1)在找到匹配项后就立即结束匹配工作,并去执行匹配项中定义的行为(即放行或阻止)。
2)如果在读取完所有的策略规则之后没有匹配项,就去执行默认的策略。
针对默认策略,在设置时:
1)当防火墙的默认策略为拒绝时,就要设置允许规则,否则谁都进不来;
2)如果防火墙的默认策略为允许,就要设置拒绝规则,否则谁都能进来,防火墙也就失去了防范的作用。
五链(Five Chains)
PREROUTING:在进行路由选择前处理数据包,用来修改目的地址,用来做DNAT。相当于把内网服务器的IP和端口映射到路由器的外网IP和端口上
INPUT:处理入站数据包,匹配目标IP为本机的数据包,然后才会交由应用程序进行处理;
OUTPUT:处理出站数据包,通常不在此链上做配置
FORWARD: 处理转发数据包,匹配流经本机的数据包
POSTROUTING: 在进行路由选择后处理数据包,用来修改源地址,用来做SNAT。相当于内网通过路由器NAT转换功能实现内网主机通过一个公网IP地址上网
Rule(规则)
Rule(规则),是 iptables 把用于处理或过滤流量的策略条目;
Policy(策略)
通常,防火墙策略规则的设置有:ACCEPT(允许流量通过)、REJECT(拒绝流量通过)、LOG(记录日志信息)、DROP(拒绝流量通过)
REJECT 和 DROP 不同点:
1)DROP,丢弃报文,它是直接将流量丢弃而且不响应,仿佛未收到;
2)REJECT,丢弃报文,并告知发送方流量被丢弃;
规则执行过程
关系总结
_IDX_ | _TAB_ | PREROUTING | INPUT | FORWARDING | OUTPUT | POSTROUTING | _DESC_ |
---|---|---|---|---|---|---|---|
01 | raw | * | * | ||||
02 | mangle | * | * | * | * | * | |
03 | nat | * | * | * | |||
04 | filter | * | * | * |
参考文献
Linux防火墙——iptables(四表五链)_向阳生的博客-CSDN博客_iptables匹配顺序