防火墙包过滤
防火墙包过滤
Netfilter和Iptables组件负责过滤网络数据包的处理和网络地址转换(NAT)。过滤的标准和相关联的任何操作都存储在链中,达到的单独网络数据包必须一个链一个链的匹配。匹配的链存储在表中,你可以通过iptable命令改变这些表和规则集。
Linux内核维护三个表,每个表对应数据包过滤器的一个特定类别的功能:
1.filter
本表保留了大部分的过滤规则,因为它在更严格的意义上实现了包过滤机制,它决定了数据包是否通过(接受)或丢弃(丢弃)
2.nat
此表定义了对数据包的源地址和目标地址的任何更改。使用这些功能,还可以实现伪装,这是NAT用于专用网络与互联网链接的一种特殊情况。
3.mangle
本表中所持有的规则,可以用来操作IP头(服务类型)中存储的值。
这些表包含了多个预定义的链来匹配数据包:
1.PREROUTING
此链适用于传入的数据包
2.INPUT
此链适用于传入系统内部进程的数据包
3.FORWARD
此链适用于只通过系统路由的数据包
4.OUTPUT
此链次用于从系统本身发出的数据包
5.POSTROUTING
此链适用于所有传出的数据包
图15.1"防火墙:包的可能路径"说明了网络数据包在给定系统上可能经过的路径。为了简单起见,图中列出了表作为链的一部分,但在现实中,这些链被表所持有。
在最简单的所有可能的情况下,传入的数据包对于系统本身到达eth0接口。包是第一次到PREROUTING链的mangle表然后到PREROUTING链的NAT表。下一步,关于数据包的路由,确定数据包的实际目标是系统本身的一个进程。如果filter表中的规则是匹配的,通过INPUT链的mangle和filter表后,数据包最终达到它的目标。
Figure 15.1. iptables: A Packet's Possible Paths