一、Ipfwadm、Ipchains、Iptables关系
Ipfwadm、Ipchains、 Iptables是三个不同的包过滤防火墙工具,对内核的防火墙模块进行操作。
Ipfwadm
Ipfw是比较老的Linux内核版本(Linux2.0.x)提供的防火墙软件包。该软件包的全称是Ipfwadm。Ipfwadm程序包提供了建立规则的能力,根据这些规则来确定允许什么样的包进出本网络。简单说来,防火墙就是一对开关,一个开关允许包通过,另一个开关禁止包通过。现代防火墙系统一般都会附加审计跟踪、加密认证、地址伪装和VPN等多种功能。作为一个安全开关,防火墙可定义的安全策略有两个:一切未被允许的都被禁止;一切未被禁止的都被允许。
Ipchains(IP链和IP伪装)
在更新版本的Linux内核(Linux2.2.x)中,Ipchains替代Ipfwadm,提供了更为严格的包过滤控制机制。Ipchains提供完整的防火墙功能,包括包过滤、地址伪装、透明代理。
Linux 2.2内核中提供的Ipchains,通过四类防火墙规则列表来提供防火墙规则控制,这些列表称为防火墙链。它们分别是IP input链(IP输入链)、IP output链(IP输出链)、IP forward链(IP转发链)和user defined链(用户定义链)。
一个链实际上就是一个规则表。所谓规则,即当被检测的包头符合规则的定义时,就按预先的设定对该包进行某种处理。输入链是指对内连接请求的过滤规则;输出链是对外连接请求的过滤规则;转发链是对内部与外部通信包转发的过滤规则;用户定义链是用户自己定义的规则。
Iptables
Iptables是一个管理内核包过滤的工具,可以加入、插入或删除核心包过滤表格中的规则。实际上真正来执行这些过滤规则的是Netfilter 。Netfilter是Linux核心中一个通用架构,它提供一系列的表(tables),每个表由若干链(chains)组成,而每条链中可以由一条或数条规则(rule)组成。Netfilter/Iptables在Linux 2.4.x/2.6.x中实现。
相对于2.2内核提供的IP链来说,2.4.x/2.6.x内核提供了更好的灵活性和可扩展性。2.4.x/2.6.x内核中的防火墙并不是2.2内核的简单增强,而是一次完全的重新实现,2.4.x/2.6.x内核提供的防火墙软件包在结构上发生了非常大的变化。与IP链相比,2.4.x/2.6.x内核提供的Iptables的检测点变成了5个,并在每个检测点上登记需要处理的函数,登记通过nf-register-hook()函数保存在全局变量nf-hook中来实现。
当包到达此检测点时,实现登记的函数按照事先定义好的优先级别来执行。相对于2.2内核提供的IP链来说,Iptables实现的不仅仅是包过滤功能,而是通过Netfilter实现一整套框架结构,在这个框架之上实现包过滤、NAT等模块功能,从而提供更好的可扩展性和灵活性。
系统缺省的表为filter,该表包含了INPUT链(输入链)、FORWARD链(转发链)和OUTPUT链(输出链)。每一条链中可以定义一条或数条规则,每一条规则都以如下格式定义:条件/处理方式。
二、Netfilter/Iptables的关系
Netfilter/Iptables是与最新的2.4.x/2.6.x版本Linux核集成的IP信息包过滤系统。
虽然Netfilter/Iptables,IP信息包过滤系统作为一个整体看待,但是其实它们分别是该过滤系统的两个组件,Netfilter是内核的模块实现,Iptables是上层的操作工具。
Netfiler是Linux核心中一个通用架构,运行在内核空间(kernel space)。它提供一系列的表(tables),每个表由若干链(chains)组成,而每条链中可以由一条或数条规则(rule)组成.由一些信息包过滤表组成,这些表包含内核用来控制信息包过滤处理的规则集。
Iptables是一个管理内核包过滤的工具,可以加入、插入或删除核心包过滤表格中的规则。运行在用户空间(user space),现在的发行版本缺省都有安装,但如果在一些精简的系统上,无此工具则需要从 单独安装使用它。实际上真正来执行这些过滤规则的是Netfilter。
相对于2.2内核提供的IP链来说,Iptables实现的不仅仅是包过滤功能,而是通过Netfilter实现一整套框架结构,在这个框架之上实现包过滤、NAT等模块功能,从而提供更好的可扩展性和灵活性。
Netfilter/Iptables的最大优点是它可以配置有状态的防火墙,这是ipfwadm和ipchains等以前的工具都无法提供的一种重要功能。有状态的防火墙能够指定并记住为发送或接收信息包所建立的连接的状态。防火墙可以从信息包的连接跟踪状态获得该信息。
在决定新的信息包过滤时,防火墙所使用的这些状态信息可以增加其效率和速度。这里有四种有效状态,名称分别为ESTABLISHED、INVALID、NEW和 RELATED 。
状态ESTABLISHED指出该信息包属于已建立的连接,该连接一直用于发送和接收信息包并且完全有效。INVALID状态指出该信息包与任何已知的流或连接都不相关联,它可能包含错误的数据或头。状态 NEW意味着该信息包已经或将启动新的连接,或者它与尚未用于发送和接收信息包的连接相关联。最后,RELATED 表示该信息包正在启动新连接,以及它与已建立的连接相关联。
Netfilter/Iptables的另一个重要优点是,它使用户可以完全控制防火墙配置和信息包过滤。您可以定制自己的规则来满足您的特定需求,从而只允许您想要的网络流量进入系统。
另外,Netfilter/Iptables是免费的,这对于那些想要节省费用的人来说十分理想,它可以代替昂贵的防火墙解决方案。
Comments
There are no comments.
Leave a Reply