在分析LINUX2.4.x网络安全的实现之前先简介一下它里面包括的几个重要概念:netfilter、iptables、match、target、nf_sockopt_ops、网络安全功能点的实现。详解会在后面的分析中讲到。 首先是netfilter,它定义了协议栈中的检查点和在检查点上引用的数据结构,以及在检查点上对这些结构引用的过程。iptables定义了实现网络安全功能的规则的组织以及对规则的操作。 一个规则中包括零个或多个match和一个target。规则组织沿用了LINUX2.2.x中的chain,rule的概念。可是添加了table的概念,这三者的关系是:table是实现某项功能全部规则的总和,chain是在某个检查点上所引用规则的集合,rule是一个单独的规则。match在规则中用于匹配数据包中的各项參数,每一个match匹配特定的參数,所以一个规则中能够有多个match,这包括系统已定义的match,也包括通过内核模块另外加入的match。target在规则中决定怎样处理匹配到的数据包。因此在target中实现了详细的网络安全功能。nf_sockopt_ops是在系统调用get/setssockopt中引用的数据结构,实现用户空间对规则的加入、删除、改动、查询等动作。以上的结构在使用之前必须先注冊到系统中才干被引用。 LINUX2.4.x网络安全实现了包过滤。地址转换(包括了LINUX2.2.x中的地址伪装和透明代理功能并有其它扩展功能),连接跟踪(这是实现地址转换的基础,在它里面实现了对连接状态的记录和监控。与状态检測类似)。Mangle(这是LINUX2.4.x新增的一个功能,它对数据包进行检查但不做禁止、丢弃或同意的推断)。实现这些功能点须要分别注冊netfilter。iptables。match,target。nf_sockopt_ops的数据结构。 假设实现其它新的功能,仅仅需定义对应的结构并将它注冊到系统中,而且通过用户空间的配置工具(这个配置工具也须支持新的结构)把它增加到规则中就能够了。这些结构在规则中自己主动被引用。 netfilter定义了协议栈中的检查点和检查点上引用的数据结构以及对这些数据结构引用的过程。首先看看在检查点上引用的数据结构,如图所看到的: