了解了Netfilter的结构后应该清楚以上的模块只是提供了某些过滤匹配的功能而已,如果我们希望Netfilter能为我们做些事,那我们就需给Netfilter执行“规则”,有了规则后,Netfilter才会知道哪些封包是可以被接受的,哪些封包是除掉的, 又有哪些封包是以特殊方式来处理的.而给予Netfilter规则的方式则是将规则填入到一块有结构性的内存中,这样,Netfilter就会依照防火墙管理人员所给的命令来执行.该内存就是俗称的表,表是防火墙的最大集合,包含链和规则;表包括filter table过滤表;nat用于地址转换;mangle俗称矫正表和RAW表.链则是规则的集合.
匹配:满足的条件,如源地址,端口等.
方法:对条件做出处理,accept,drop等.
Filter表是Netfilter内最为重要的机制,其任务为执行数据包的过滤动作,也就是防火墙的功能;包含INPUT、OUTPUT和FORWARD链,用于处理输入、输出和转发包.filter表是缺省的表.
NAT(Network Address Translation)也是防火墙上一个不可或缺的重要机制,它的功能类似于IP分享器,只是相应功能更加强大.用于处理网络地址翻译.(包含与masquerading 相关的功能);包含PREROUTING(路由前);POSTROUTING(路由后)OUTPUT 输出(很少用到)共3个链.
Mangle表用于处理特殊包的矫正,包含两个链PREROUTING (路由前),POSTROUTING(路由后).在流量控制和Qos应用中,经常会用到mangle表.
RAW表负责加快数据包穿越防火墙机制的速度,借此提高防火墙的性能.
Netfilter的Filter机制
Filter作为Netfilter中的防火墙分类,需明确“数据包的分类”,以下图所示,假设在计算机上装有两片网卡,并且在计算机上分别执行Httpd及Firefox两个程序.
INPUT类型:所谓INPUT类型是指网络上其它主机送给本机处理(Local Process)的数据包,例如当网络上的其它使用都来访问本的的HTTPD服务时就会产生这种类型的数据包.
OUTPUT类型:如果是本机Process所产生的数据包,即为OUTPUT类型的数据包.例如,当使用者在本机上启用Firefox去访问网络上的其它主机时就会产生这种类型的封包.
FORWARD类型:如果数据包对本机而言只是“路过”,那么这就属于FORWARD类型的数据包.当本机执行Router的角色就会有FORWARD类型的数据包.
INPUT链:当我们需要保护本机的HTTPD这个Process时,我们应该选择INPUT类型的数据包.例如,我们可以在INPUT链中描述:“如果进来的数据包是要到本机的TCP Port 80,数据包是由192.168.2.1主机送来的,就将该数据包丢弃掉”,这样就可以达到保护Httpd这个Process的目的.,INPUT链是用来存放过滤INPUT类型数据包的规则的,也就是说,INPUT链是用于“保护”本机的机制.
OUTPUT链:如果我们要限制使用者不得在“本机”上以Firefox来浏览www.163.com网站,那么需要限制OUTPUT类型的数据包.那么在OUTPUT链中的描述为:“如果数据包是本机Process所产生的,并且数据包是送往www.163.com的TCP Port 80时,就将该数据包丢弃掉.”,OUTPUT链是用来存放过滤OUTPUT类型数据包的规则的,也就是说,OUTPUT链是用于“限制”本机应用程序的连接机制.
FORWARD链:如下图所示,如果图中防火墙用来保护WEB Server,那么就应该限制FORWARD类型的数据包,因此可以在FORWARD链中这样描述:“如果数据包是由192.168.2.10主机送出,并且数据包是要送到WEB Server的TCP Port 80端口,那么就将该数据包丢弃掉.”FORWARD链是用来存放过滤FORWARD类型的数据包的规则,也就是说,FORWARD链是用来保护防火墙后面的主机.
规则的匹配
规则按照顺序匹配;当第一个规则匹配后(DROP,ACCEPT,RE |