嵌入式Linux防火墙的设计与实现

时间:2022-03-03 01:03:31

【前言】嵌入式Linux防火墙的设计与实现由文秘帮小编整理而成,但愿对你的学习工作带来帮助。Abstract: In this paper, a project is designed and tested for embedded Linux firewall. Firstly, a system framework of embedded Linux firewall based on ARM processor is proposed and a scheme of Linux kernel reducing is designed. Secondly, consideri...

嵌入式Linux防火墙的设计与实现

摘要: 针对嵌入式linux防火墙进行设计并加以实现及测试。首先,提出了基于ARM处理器的嵌入式Linux防火墙的体系架构,给出了Linux一种内核裁剪定制的方案;接着,针对Netfilter/Iptables在大数量规则集下性能低下的问题,提出了Iptables结合NF-hipac、Ipset使用的解决方案,并成功实现了移植;最后,针对实现的系统,给出了完整详细的功能及性能测试结果。功能测试结果表明了系统设计的合理性和有效性,性能测试结果指出了影响系统性能的关键参数,为进一步优化系统提供了参考和依据。

关键词:

中图分类号: TP391;TN911.73文献标识码:A文章编号:2095-2163(2011)03-0035-05

Design and Implementation of the Embedded Linux Firewall

RAO Ming, DU Zhonghui, HAN Qi, LI Qiong

Abstract: In this paper, a project is designed and tested for embedded Linux firewall. Firstly, a system framework of embedded Linux firewall based on ARM processor is proposed and a scheme of Linux kernel reducing is designed. Secondly, considering the poor performance of Netfilter/Iptables in large number rules set, a method of Iptables combining with NF-hipac and Ipset is introduced, and it is transplanted successfully. Finally, with the accomplished system, the integrated and detailed function and performance tests are provided. The function experiments show the rationality and efficiency of the system design and the performance tests indicate the key parameters influencing the system performance, which provides the reference and basis for further optimizing the system.

Key words:

0引言

互联网已经发展成为当今世界上最大的信息库,但是Internet从建立开始就缺乏安全的总体构想和设计,所以互联网的安全性就存在众多缺陷和隐患,由此防火墙的概念应运而生。所谓防火墙指的是一个由软件和硬件设备组合而成、在内部网和外部网之间、专用网与公共网之间的界面上构造的保护屏障,从而保护内部网免受非法用户的侵入。但是,传统意义上的防火墙存在网络应用受到结构性限制、内部安全隐患、效率较低和故障率高等缺点,所以人们又提出了分布式防火墙的概念。分布式防火墙负责对网络边界、各子网和网络内部各节点之间的安全防护。分布式防火墙的具体实现方式可以归结为基于软件和基于硬件两种,一般将基于硬件实现的分布式防火墙称为嵌入式防火墙[1]。嵌入式防火墙是一种基于嵌入式技术的新型防火墙,同时将安全策略延伸到了网络末端,安全措施由硬件系统实施,从而有效地克服了传统边界防火墙的局限,并结合了硬件解决方案的强健性和集中管理式软件解决方案的灵活性,从而创建了一种更为完善的安全防护架构。

1999年,Bellovin[2]提出了一种分布式的解决方案,将策略的执行分布到各端结点,同时保持集中式的策略管理。2000年,Loannids等人[3]按照Bellovin 1999年提出的观点实现了一个分布式防火墙的原型系统。2001年,Payne和 Markham[4]实现了一种基于硬件的分布式防火墙,并指出基于硬件的分布式防火墙具有更高的可靠性。国内学者也先后实现了基于嵌入式Linux以及Netfilter/Iptables架构的防火墙系统[5,6],并对嵌入式防火墙中Linux内核裁剪进行了研究[7,8]。在商业产品方面,华为3Com公司也研发出PCI卡和PC卡形式的嵌入式防火墙,这类防火墙不受网络拓扑控制,完全独立于主机操作系统,强化整个网络台式机、服务器和笔记本,配合适当的安全策略,控制每个端点的网络访问,并能快速响应检测到的攻击。但是这些研究和产品大多都基于Iptables工具,当规则数量达到一定程度时,Iptables进行规则过滤的速度大大下降,从而严重影响防火墙的整体性能。

本文基于ARM9嵌入式平台, 提出并实现了一种Iptables结合NF-hipac、Ipset的嵌入式防火墙方案,首先使用交叉编译技术将运行于x86体系Linux上的Netfilter/Iptables防火墙系统移植到基于ARM体系处理器的平台上,同时对Linux操作系统的内核进行裁剪。通过测试发现Iptables在某些条件下的性能局限,所以结合NF-hipac、Ipset实现三者优势的互补,进一步提高防火墙的性能。

1基于Netfilter/Iptables的防火墙分析

1.1Netfilter架构与Iptables

本小节将对Linux下的Netfilter/Iptables防火墙体系做整体的分析以及介绍,并指出Iptables的不足及其改进方案。

Netfilter是Linux内核实现数据包过滤、网络地址转换(NAT)、数据包处理等的功能框架。之所以说Netfilter是一种架构,是因为Netfilter可以被多种协议族所用。利用Netfilter架构,各种协议都可以在Linux内核级实现自己的防火墙。Netfilter的设计为内核中其它模块动态参与IP层中的数据包处理提供了途径。

Netfilter在内核中建立了一个函数指针链表,称为钩子函数链表,加入到链表中的函数指针所指的函数称为钩子函数(Hook Function)。一个数据包按照如图1所示的过程通过Netfilter系统,图中的5个钩子函数分别为:(1)NF_ IP_PRE_ROUTING;(2)NF_IP_LOCAL_IN;(3)NF_IP_FO-WARD;(4)NF_IP_POST_ROUTING;(5)NF_IP_LOCAL_OUT。

Iptables是基于Netfilter框架的数据报处理子系统[1],有很强的扩展性。内核模块可以在原有基础上注册一个新的规则表(table),并要求数据报流经指定的规则表,可以选择用于实现数据报过滤的filter表、网络地址转换的NAT表及数据报处理的mangle表。Linux2.6内核提供的这三种数据报处理功能都基于Netfilter的钩子函数和Iptables;而且还是互相之间独立的模块,完美集成到由Netfilter提供的框架中。Iptables实现对规则的管理和访问,ipt_entry,ipt_match,ipt_target,ipt_table等数据结构用于构造规则表, ipt_do_table函数用于遍历规则表并处理规则表上的结构。

1.2Iptables的不足及衍生工具Ipset、NF-hipac

在利用Iptables向系统添加防火墙规则时,如果没有特殊指定,Iptables会将新规则添加至规则链(线性表)的尾部;而当协议栈中有新数据包达到时,内核会调用ipt _do_table()逐条将规则与数据包的属性相对比,如果匹配成功则转入相应的处理行为。也就是说,几乎所有未命中规则的数据包的匹配复杂度为O(n)(n为规则的数目),这样在小规则集的情况下,性能削减不会很大,但是如果在庞大规则集的情况下,性能就会因规则条目的增长而大幅削减。

Ipset工具在这个方面做了很大的改善,最主要的是在结构和规则的查找上面做了很大的改善。Ipset的思想就是将相同处理规则的匹配条件放到一个集合中,一般采用hash方法。一个报文查询规则的时候,只需要判断IP地址是否在这个集合中就可以了;如果满足对应的匹配条件,就执行相应的处理操作。由于将查找从线性表遍历改为了hash查找,时间复杂度从O(n)降到了O(1)。根据提供的测试结果表明,当规则数目在300-1 500之间的时候,其对性能的影响基本是水平线。

NF-hipac是Netfilter项目中的一个子项目,NF-hipac提供了一个新颖包分类的架构,将规则集呈现树状分布以代替原有Iptables的线性分布,从而将时间复杂度从O(n)降到了O(logn)。但是相比于Ipset,NF-hipac具有更大的灵活性。当查找每一个包的时候,使用一个高级算法来减少内存占用。在一个有特别多的规则和高带宽的网络中,NF-hipac表现出色。NF-hipac的特点就是其语法完全兼容iptables -t filter选项,并且NF-hipac可以调用Iptables的匹配行为以及连接跟踪机制,这些特点使NF-hipac可以完全取代Iptables的过滤子功能。

2嵌入式防火墙方案设计及实现

2.1基于Iptables-Ipset-NF-hipac的防火墙方案

Iptables的优势在于具有足够的灵活度,并且功能强大,面面俱到;劣势是在数量巨大的规则集时性能低下。而Ipset虽具有很好的性能,将Iptables的时间复杂度从O(n)降到了O(1),但是却缺乏灵活性,集合里所有的IP对应到同一个处理操作,在面对并非一次性更新的规则集合时,显得用处不大。NF-hipac的灵活性和性能处于前二者之间,但是只能代替Iptables-t filter选项。因此,综合三个工具的优势,设计出一个更加优秀的防火墙方案:

(1)Ipset负责一次性大规模更新同一处理操作的IP集合;

(2)NF-hipac负责独立零散的过滤规则的更新;

(3)Iptables用来进行其他子功能(数据包转发、数据包地址伪装等)操作。

这样既保证了系统运行的高性能,又能覆盖所需的全部功能。

本文设计的嵌入式Linux防火墙的整体体系架构如图2所示。硬件层为ARM9的处理器,操作系统内核为经过移植的Linux(版本2.6.13)内核,并且支持NetFilter。用户态则移植了三款防火墙工具,并且都是在Netfilter架构的基础上进行开发的,包括Iptables、Ipset以及NF-hipac。

2.2开发平台及编译环境

本文设计的嵌入式Linux防火墙方案是在HIT-ESDK01平台上实现的,HIT-ESDK01是哈工大自主研制的嵌入式实践教学平台。该平台采用ATMEL公司AT91RM9200(ARM920T)嵌入式处理器,这是一款ARM920T内核的工业级产品,主频180MHz,带有MMU存储器管理单元,内嵌10M/100M自适应以太网。开发板上还包括64MB SDRAM、 256MB/1GBNand Flash和16MB Nor Flash,板上集成4线电阻式触摸屏接口、TFT液晶屏接口,最大支持16BPP模式800?}600分辨率,板载RS232、RS485、RJ45、USB等接口以及CAN总线接口及多种存储卡接口。实验平台的接口布局如图3所示。

所谓交叉编译就是在一个平台上生成可以在另一个平台上执行的代码,本文使用基于gcc 3.4.1的工具链,在x86架构的Linux主机上使用ARM架构的编译工具链对系统内核和工具进行编译,生成可以在目标板上运行的内核,烧写到Flash中,便可在嵌入式平台上运行经过裁剪的系统和相关工具。交叉编译内核的详细步骤本文不再赘述,只是简要介绍三个防火墙工具编译与移植的关键环节。

Iptables是Linux内核的一部分,因此与交叉编译内核一起考虑Iptables的编译,需要注意的是,Iptables最好编译为built-in模式,而不要选择模块模式,这主要是考虑到嵌入式系统单内核方便管理、使用及大规模的工业复制。NF-hipac是通过内核补丁的方式编译的,下载到其源码后为内核打补丁,然后与内核一起编译。另外,还需要对源码进行一定的修改,为编译移植用户层NF-hipac工具做准备,修改的文件包括Makefile、nf-hipac-core.c等。Ipset也是通过内核补丁的方式编译的,操作方法类似。

3功能与性能测试

本文测试部分包括防火墙的功能测试和性能测试,使用到的测试工具Netperf。Netperf是一款网络性能的测量工具,主要针对基于TCP或UDP的传输。Netperf根据应用的不同,可以进行不同模式的网络性能测试,即批量数据传输(bulk data transfer)模式和请求/应答(request/reponse)模式。Netperf测试结果所反映的是一个系统能够以多快的速度向另外一个系统发送数据,以及另外一个系统能够以多快的速度接收数据。

本文测试用例包括两种网络拓扑,如图4、图5所示。测试网络拓扑1主要模拟了从外网的客户端访问被防火墙保护的内网服务器(Web服务器、测试软件netserver服务器等),外网IP用192.168.5.0/24模拟,内网IP用10.50.10.0/24模拟。由于嵌入式Linux防火墙本身也为一台计算机,所以将其内部假设服务器,测试网络拓扑2(下文简称拓扑2)如图5所示,完成拓扑1所不能完成的一些性能上的测试,将测试结果进行进一步分析对比。

3.1功能验证与测试

功能验证与测试包括Iptables功能测试、NF-hipac功能测试和Ipset功能测试,在各种单项测试通过后,进行了ftp、telnet、NAT、针对SYNFlood攻击的防御等应用场景测试,图6、图7是NAT测试的数据流示意图和测试结果,表1给出了针对SYNFlood攻击的防御的测试结果,测试结果表明了该防火墙功能的有效性。

3.2性能测试

本文对防火墙进行的性能测试包括:内核精简前后性能对比测试、MTU值对性能影响测试、Iptables/NF-hipac/Ipset大规则集下的压力测试以及网络套接字缓冲区大小对系统性能的影响测试。

内核精简前后性能对比测试主要是为了验证本文所做内核裁剪的有效性,本文对精简前后的内核做众多性能方面的测试,对比了批量数据传输速率、请求/应答模式(即TCP_RR模式)交易率、连接/请求/应答模式(即TCP_CRR模式)交易率三方面给出测试结果,如图8-图10所示。

从测试结果可以得出,TCP_CRR模式下的交易率的数值变化较为明显。由于TCP_CRR模式为每次交易建立一个新的TCP连接,对系统消耗最为严重,从图10可以看出,未精简的内核的交易率变得十分不稳定。但无论是三项测试数据当中的哪一项,内核精简后对比精简前均有不同程度的性能上的提升,证明对内核进行精简可以对系统性能的提升起到作用。

MTU值(Maximum Transmission Unit最大传输单元)[1]是指一种通信协议的某一层上面所能通过的最大数据包大小(以字节为单位),在大流量的网络当中,增大MTU的值可以很好地改善网络性能。本文测试拓扑2,从批量数据传输速率、请求/应答模式交易率两方面进行测试,结果如表2、表3所示,其中,嵌入式防火墙eth0接口连接至服务器的网络接口,eth1接口连接至客户端的网络接口。

通过测试结果可以观察到,在较大MTU值的情况下,无论是数据传输速率还是交易率均得到了提升,但是也取决于整个网络中的瓶颈MTU值。

接下来进行了Iptables、NF-hipac、Ipset三个工具在大规则集下的压力测试,测试结果如图11、图12所示。由测试结果可以看出,Iptables在300条规则之内的性能对比NF-hipac与Ipset并没有明显的劣势,但是当规则的数量超过这一数值的时候,其性能表现就会大打折扣。而NF-hipac与Ipset的性能表现则几乎与规则的数目无关,NF-hipac的表现要稍好于Ipset。

4结束语

本文在HIT-ESDK01嵌入式教学平台之上设计并实现了嵌入式Linux防火墙系统。首先,根据嵌入式及防火墙的基本知识,设计了系统的总体结构,针对嵌入式系统的特点,给出了一种Linux内核的裁剪理由及方案,并针对该方案给出了测试结果,证明对其实施裁剪的必要性;其次,指出了Netfilter/Iptables架构在大数量规则集下性能低下的缺陷,提出了Iptables结合NF-hipac、Ipset使用的解决方案,并针对方案给出了详细的移植方法及步骤;最后,对实现的系统进行了详细的功能及性能测试。功能测试完成了整个系统各项功能的测试,证明了系统的可用性;性能测试主要给出了影响系统性能的参数,包括内核精简程度、MTU值、套接口缓冲区大小、防火墙规则的数量等等,通过改变参数并加以测试,对得到的测试结果加以分析,给出优化系统的途径。

参考文献:

[ 1 ] PAYNE C,MARKHAM T. Architecture and Applications for a

Distributed Embedded Firewall[C]// Proceedings of the Comp-

uter Security Applications Conference,2001:329-336.

[ 2 ] BELLOVIN S M. Distributed Firewalls[J]. Journal of Login,19-

99:39-47.

[ 3 ] LOANNIDS S,SMITH J,KEROMYTIS A D,et al. Implementing

a distributed firewall[C]// Proceedings of the 7th ACM Conferen-

ce on Computer and Communications Security, Athens, Greece,

2000-11.

[ 4 ] PAYNE C,MARKHAM T. Architectures and applications for a

distributed embedded firewall[C]// Proceedings of the Computer

Security Applications Conference,2001:329-336.

[ 5 ] 刘正海. 基于嵌入式Linux防火墙的研究与实现[D]. 重庆:重庆

大学硕士学位论文,2007.

[ 6 ] 郑培群. 嵌入式防火墙过滤规则的设计与算法优化[D]. 武汉:

武汉理工大学硕士学位论文,2010.

[ 7 ] 罗奕. 嵌入式Linux裁剪及其系统构建的研究与实现[D]. 长沙:

中南大学硕士学位论文,2005.

[ 8 ] 韩鲁峰, 姚远, 张其善. 一种基于Linux嵌入式系统的防火墙

的开发[J]. 微计算机应用,2005,26(4):407-410.

上一篇:无处不在的音乐 下一篇:摇晃婴儿很危险