科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网网络频道linux防火墙实现技术比较(2)

linux防火墙实现技术比较(2)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

本文以ipchains, iptables, checkpoint FW1为例,阐述了linux下的防火墙的不同实现之间的区别。

作者:51CTO.COM 2007年10月23日

关键字: iptables Linux 包过滤 防火墙

  • 评论
  • 分享微博
  • 分享邮件

总体来说,分为输入检测,输出检测和转发检测。但具体到代码的时候,输出检测实际分散到了几处(不同的上层协议走IP层的不同的流程):

UDP/RAW/ICMP报文:ip_build_xmit

TCP报文:ip_queue_xmit

转发的包:ip_forward

其它:ip_build_and_send_pkt

正如ipchains项目的负责人Rusty Russell所说,在开始ipchians不久,便发现选择的检测点位置错了,最终只能暂时将错就错。一个明显的问题是转发的包在此结构中必须经过三条链的匹配。地址伪装功能与防火墙模块牵扯过于紧密,如果不详细了解其原理的话,配置规则很容易出错。

iptables

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

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

FW1

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

FW1通过dev_add_pack的办法加载输入过滤函数。但是此处有个问题:在net_bh()中,传往网络层的skbuff是克隆的,即

skb2=skb_clone(skb, GFP_ATOMIC);
if(skb2)
pt_prev->func(skb2, skb->dev, pt_prev);


这样的话如果你想丢弃此包的话,光将其free掉是不够的,因为它只是其中的一份拷贝而已。
FW1是怎么解决这个问题的呢?见下面的代码(从汇编代码翻译成的C程序):

packet_type *fw_type_list=NULL;
static struct packet_type fw_ip_packet_type =
{
__constant_htons(ETH_P_IP),
NULL, /* All devices */
fw_filterin,
NULL,
NULL, /* next */
};

fwinstallin(int isinstall )
{
packet_type *temp;

/*安装*/
if(isinstall==0){
dev_add_pack(&fw_ip_packet_type);
fw_type_list = fw_ip_packet_type->next;

for(temp = fw_type_list; temp; temp=temp->temp)
dev_remove_pack(temp);
}
/*卸载*/
else {
dev_remove_pack(&fw_ip_packet_type);

for(temp = fw_ip_packet_type; temp; temp=temp->next)
dev_add_pack(temp);
}
}


不难看出,FW1把ip_packet_type歇载掉了,然后自己在自己的处理函数(fw_filterin)中调ip_recv。
输出的挂载和lkm的手法一样,更改dev->hard_start_xmit。dev结构在2.2版本的发展过程中变了一次,为了兼容FW1对这点也做了处理(通过检查版本号来取偏移)。

还有一款linux下的防火墙产品WebGuard(http://www.gennet.com.tw/b5/csub_webguard.html)采用的手法与FW1其非常类似。有兴趣的人可以自行研究一下。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章