预计阅读本页时间:-
6.2 Linux防火墙的概念
Linux防火墙其实并不是特别专业的叫法,我们所说的Linux防火墙其实指的是Linux下的Netfilter/iptables。Netfilter/iptables是Linux内核集成的IP信息包过滤系统。
虽然Netfilter/iptables IP信息包过滤系统可当作一个整体来看待,但其实它们是该过滤系统的两个组件,Netfilter是内核的模块实现,iptables是上层的操作工具。Netfilter是Linux核心中的一个通用架构,运行在内核空间(kernel space)。iptables提供了一系列的表(tables),每个表都由若干个链(chains)组成,而每条链中可以由一条或数条规则(rule)组成(我们常用的是其中的三表五链),其规则又是由一些信息包过滤表组成,这些表包含内核用来控制信息包过滤处理的规则集。iptables是一个管理内核包过滤的工具,可以加入、插入或删除核心包过滤表格中的规则。它运行在用户空间(user space)中,现在的发行版本中默认都有安装,但如果是在一些精简的系统上则可能无此工具,需要单独安装。实际上真正执行这些过滤规则的是Netfilter。相对于Linux2.2内核提供的IP链来说,iptables实现的不仅仅是包过滤功能,而是通过Netfilter实现了一整套框架结构,在这个框架之上其实现了包过滤、NAT等模块功能,从而提供了更好的可扩展性和灵活性。
广告:个人专属 VPN,独立 IP,无限流量,多机房切换,还可以屏蔽广告和恶意软件,每月最低仅 5 美元
Netfilter/iptables的最大优点是它可以配置有状态的防火墙,这是ipfwadm和ipchains等之前的工具所无法提供的一种重要功能。有状态的防火墙能够指定并记住为发送或接收信息包所建立的连接状态。防火墙可以从信息包的连接跟踪状态中获得该信息。在决定过滤新的信息包时,防火墙所使用的这些状态信息可以提高其效率和速度。这里有4种有效状态,其名称分别为ESTABLISHED、INVALID、NEW和RELATED。
·ESTABLISHED表示该信息包属于已建立的连接,该连接一直用于发送和接收信息包并且完全有效。
·INVALID表示该信息包与任何已知的流或连接都不相关联,它可能包含了错误的数据或头。
·NEW表示该信息包已经或即将启动新的连接,或者它与尚未用于发送和接收信息包的连接相关联。
·RELATED表示该信息包正在启动新连接,以及它与已建立的连接相关联的连接。由于iptables的状态会在iptables脚本里用得比较多,因此在后面的6.5节中介绍iptables基础知识时将会进行详细说明。
Netfilter/iptables的另一个重要优点是,它使得用户可以完全控制防火墙的配置和信息包过滤,可以通过定制规则来满足自己的特定需求,从而只允许自己想要的网络流量进入系统。
另外,Netfilter/iptables是免费的,这对于那些想要节省费用的人来说十分理想,它可以代替昂贵的防火墙解决方案。附带说明一下,iptables和Netfilter的确存在差别,尽管它们经常被用来相互替换使用,Netfilter是用来实现Linux内核中防火墙的Linux内核空间程序代码段,它要么被直接编译进内核,要么被包含在模块中。而iptables是用来管理Netfilter防火墙的用户程序,在这里统一将Netfilter/iptables简称为iptables。