近年来,随着网络和通信技术的迅速发展,宽带网络逐渐进入企业和家庭,构建一个安全、稳定和低成本的防火墙具有很大的意义和前景。防火墙作为网络安全产品,防火墙系统平台的选择直接决定了防火墙的防御能力。而Linux以其良好的网络性能和开放源码的优势,吸引越来越多的人将其作为防火墙的系统平台。本文是在基于arm9的ks8695x开发板上对Linux操作系统内核进行裁剪,去除操作系统中不必要的应用部分,建立包括满足防火墙功能需求的最小操作系统集合。
一 、工作原理
Linux 防火墙技术,2.0 内核采用Ipfwadm 来控制内核包过滤规则, 内核采用Ipchains 作为内2.2核包过滤工具,2.3 内核以后,采用了通用化的可扩展防火墙核心框架——Netfilter。本文介绍的就是利用基于 Netfilter 框架和Iptables工具实现了一个具有包过滤网络地址转换等功能的防火墙系统。
1.Netfilter/Iptables架构分析
在 Netfilter 中,使用内建的 INPUT、OUTPUT和 FORWARD过滤规则,数据包在Netfilter表和链中的传播如图1所示,箭头表示了数据包的流向。当数据包经过各链时系统就会从该链的第一条规则开始检查,看数据包是否符合该规则所定义的条件,若满足,系统将根据该规则所定义的方法处理该数据包;若不满足,则继续检查下一条规则。若该链中没有相应的规则匹配,则将由此链的缺省方针来确定丢弃或接受该数据包。
图1数据包在Netfilter表中的流程图
具体过程如下:
(1)当一个包进入时(通过以太网卡进入内核),内核首先判断这个包的目标地址以决定送到哪一个链进行检查,这个过程就叫“Routing(路由)”。
(2) INPUT链:如果包的目的地址是本计算机,包将在图中向下送到方框INPUT链,如果INPUT链决定接受这个包,那包将穿越这个链,任何等待这个包的进程将接受这个包。
(3) FORWARD链:如果包的目的地址不是本计算机,则内核将转发这个包。IP包转发功能如果没打开,内核将不知道如何转发这个包,这个包将被丢弃;如果包的转发功能打开,这个包将被转发到指向目的地址的另一个网络设备上 (如果有另外一个网络设备),那包将直接转到图中方框FORWARD Chain,如果FORWARD Chain接受这个包,它将被送出去。
(4) OUTPUT链:本地计算机上的程序可以送出IP包,这些包立即被送到OUTPUT链,如果OUTPUT链接受这些包,那这些包将继续被送到它们的目的地。
|