WEB开发网
开发学院网络安全防火墙 linux防火墙实现技术比较 阅读

linux防火墙实现技术比较

 2006-04-03 12:36:40 来源:WEB开发网   
核心提示: 此部分详细的分析可参见我早期的一份文章【9】,3.2 iptablesA Packet Traversing the Netfilter System: --->PRE-->[ROUTE]--->FWD-->POST-->Conntrack | Filter

此部分详细的分析可参见我早期的一份文章【9】。

3.2 iptables

A Packet Traversing the Netfilter System:

--->PRE------>[ROUTE]--->FWD---------->POST------>

Conntrack | Filter ^ NAT (Src)

Mangle | | Conntrack

NAT (Dst) | [ROUTE]

(QDisc) v |

IN Filter OUT Conntrack

| Conntrack ^ Mangle

| | NAT (Dst)

v | Filter

2.4内核中的防火墙系统不是2.2的简单增强,而是一次完全的重写,在结构上发生了非常大的变化。相比2.2的内核,2.4的检测点变为了五个。

在每个检测点上登记了需要处理的函数(通过nf_register_hook()保存在全局变量nf_hooks中),当到达此检测点的时候,实现登记的函数按照一定的优先级来执行。严格的从概念上将,netfilter便是这么一个框架,你可以在适当的位置上登记一些你需要的处理函数,正式代码中已经登记了许多处理函数(在代码中搜nf_register_hook的调用),如在NF_IP_FORWARD点上登记了装发的包过滤功能。你也可以登记自己的处理函数,具体例子可参看【8】与【10】。


3.3 FW1

FW1是chekpoint推出的用于2.2内核的防火墙。由于其发布的模组文件带了大量的调试信息,可以从反汇编的代码中窥探到到许多实现细节。

FW1通过dev_add_pack的办法加载输入过滤函数,如果对这个函数不熟悉,请参看【14】。但是此处有个问题:在net_bh()中,传往网络层的skbuff是克隆的,即

skb2=skb_clone(skb, GFP_ATOMIC);

if(skb2)

pt_prev->func(skb2, skb->dev, pt_prev);

这样的话如果你想丢弃此包的话,光将其free掉是不够的,因为它只是其中的一份拷贝而已。

上一页  1 2 3 4 5 6 7 8  下一页

Tags:linux 防火墙 实现

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接