RAW表负责加快数据包穿越防火墙机制的速度,借此提高防火墙的性能。
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来浏览网站,那么需要限制OUTPUT类型的数据包。那么在OUTPUT链中的描述为:“如果数据包是本机Process所产生的,并且数据包是送往的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,REJECT),通常会退出链。规则也可以多次匹配,比如LOG规则在前面,后面的ACCEPT也会匹配,如果检测不到匹配的规则,那么默认的链策略会生效。设置防火墙策略有两个基本原则:默认禁止一切,明确地允许被选择的数据包通过。(建议);默认开放一切,明确地禁止被选择的数据包通过。如下图所示: