基于Linux的防火墙集群系统的设计

2010-11-28 11:45斌,黄
关键词:内核防火墙数据包

刘 斌,黄 勇

(安徽科技学院理学院,安徽凤阳233100)

1 引 言

防火墙过滤网络数据包,确保只有安全策略允许的网络数据流进入内部网络,从而保护内部网不受来自外部网的攻击[1],所以防火墙的安全可靠是保证内部网络安全的第一道安全屏障.传统的单接入点防火墙因为数据包处理速度跟不上带宽的增长要求,已经成为网络发展的瓶颈,为了防止其影响网络的性能,网络管理员通常只进行基本的过滤规则配置,远没有达到必要的网络安全级别要求.具有高性能数据包处理能力的、采用专用集成电路或网络处理器实现的先进防火墙设备,其昂贵的价格很难被一般企事业单位接受.搭建防火墙集群可以显著提高网络数据处理能力,不仅能有效的解决防火墙瓶颈问题,而且能降低运行成本,提高检测效率,并且具有良好的扩展性.

2 集群与防火墙集群

集群是指一组相互独立的服务器在网络中表现为单一的系统,并以单一系统的模式加以管理.集群系统一般分为高性能计算集群和高可用集群.高性能计算集群主要用于科学计算,它利用并行计算将一个规模较大的问题的数据分布到集群的各个组成计算机上处理,从而提供单个计算机不能提供的强大处理能力要求.高可用集群则利用容错技术和负载均衡技术对外界提供统一的、高效的、不间断的服务[2,3].

利用集群技术,可以用多台防火墙Agent组成网络防火墙集群系统.先由主Agent捕获的千兆带宽网段内的数据包,使用负载均衡技术,将网络数据包转发到后台的多个防火墙Agent上,由其根据过滤规则对数据包进行相应的检查和转发处理.这样就可以通过多个百兆等级的防火墙Agent构成了一个满足千兆网络环境的防火墙集群系统.

3 防火墙集群的总体规划

防火墙集群主要由各个防火墙Agent子系统、管理控制子系统、数据库子系统组成.运行时安装在内外网络之间,对内外网之间的数据流进行安全检测和过滤.Agent子系统通过负载均衡机制共同完成数据包的安全检测功能.数据库子系统用于存储防火墙的基本配置参数、安全规则列表和检测结果日志信息.管理控制机通过浏览器页面方式来集中管理和监控整个系统的运行情况.各个Agent子系统启动时,自动向管理控制子系统发送配置请求信息,管理控制子系统读取数据库中的配置信息和安全规则列表,并通过系统配置命令调用方式,配置Agent,之后管理控制子系统接收各个Agent心跳系统周期性发过来的系统工作情况汇报信息,对整个系统运行情况进行实施检测.当某个Agent故障时就强制该Agent重新启动运行,同时记录运行情况日志.

Agent子系统的体系结构采用模块化设计思想.整个体系由数据包安全检查模块、网络地址转换模块、安全日志处理模块、数据包处理模块、负载平衡模块、心跳与管理控制模块、认证模块等7个主要功能模块组成,各模块之间通过函数调用和参数传递来完成通信.

4 防火墙集群的关键设计

4.1 Agent内核定制

Agent工作的实时性和高效性将直接影响网络的速度和安全.借鉴Linux操作系统的开源性、内核的稳定性和可裁减编译等特点,特别是Linux2.4以上内核利用Netfilter、Iptables、Ipconntrack几个内核组件提供了对状态检测包过滤的支持.为了提高系统的整体响应速度,提高CPU等系统资源的使用效率,减少进程之间的切换时间,使得内核代码结构更为紧凑,对Agent内核我们采用了具有良好结构的Linux单内核体系结构实现.但是由于Linux内核集成了功能丰富的设备驱动程序、文件系统程序、网络服务程序等,源代码内容庞大,需要对其进行定制、裁减和编译,构建专用的Agent操作系统.

内核定制分为内核下载、内核裁减和重新编译几个步骤.功能完善的Linux最新内核可以从官方网站(http://www.kernel.org)上免费下载得到.Linux内核裁减手段有许多种方法,可以使用免费的Linux工具箱软件包busybox进行,也可以使用linux自带的基于文本和基于图形窗口的内核配置工具.完成裁减后就可以通过#makebzimage命令编译生成新的内核映像文件.具体裁减编译过程可以参考资料[4].

4.2 状态检测技术

Linux2.4以上内核集成的 Netfilter实现了一个将数据包处理流水线化的通用安全框架.它嵌入内核到IP协议堆栈中,为特定网络协议定义了一套钩子函数.在数据包流过协议栈的几个关键点时,将数据包和钩子函数标号当作参数,调用Netfilter框架.Netfilter防火墙框架如图1所示[5].

Netfilter框架定义了5个数据包在防火墙上的处理点 (如图所示),分别表示在进行路由选择之前的数据包、提交本地进程处理的数据包、需要转发的数据包、即将离开防火墙的数据包和本地产生的数据包的检测处理点.

Netfilter向内核提供的防火墙接口是一个firewall_ops结构体.该结构体中定义了三个调用具体规则函数的函数指针,fw_forward、fw_input、fw_output.对数据包的处理实质上就是调用这三个函数.

实现状态检测技术的核心思想是在内核协议栈的FORWARD检测点对数据包进行检测之前,添加一个状态检测模块,查看状态检测表中是否有数据包的轨迹,即判断当前IP包是否和之前已经检查过的某个数据包属于同一个上层会话,如是则直接按原来相同的方式处理,否则进行规则检查,并为该数据包的连接会话在状态检测表中定义一个初始化轨迹项.其流程图如图2示:

图1 Netfilter防火墙框架

图2 网络数据包状态检测流程

4.3 负载均衡模块设计

为了实现负载均衡,集群系统首先需要动态采集A-gent的运行状况信息.Linux的Proc通过文件系统的形式为操作系统和应用进程之间的通信提供了一个界面,可以用于输出系统的运行状态.例如:/proc/uptime文件给出了CPU的使用情况;/proc/meminfo文件给出了内存、交换区、使用权、空闲区、缓冲区等的大小;/proc/net/snmp文件给出了各种网络协议的统计信息;/proc/loadavg文件给出了系统的平均负载.通过这些信息我们可以计算出 Agent的 CUP使用率 (CPU%)、内存使用率(Mem%)、交换区的页交换次数 (CT)、平均负载(BL)、IP连接数 (Cn)等.负载均衡模块需要综合考虑这些因素,并进行计算处理.为了消除单一因素对结果的显著影响,综合反映Agent的负载实际情况,我们对上述参数进行了加权均方根处理,权值函数AgentLoad计算公式如下所示:

其中各ai为调整系数,且∑ai=1(i=1,2,3,4,5),可以根据实际应用加以调整.

通过计算将当前负载较大的Agent的任务迁移到当前负载较少的Agent结点上完成,在迁移时,要将属于同一连接会话的所有IP包定向到算法指定的检测Agent上进行IP分片重组和检测处理.

4.4 集群系统的心跳设计

在集群系统中各个Agent节点周期性的向其他节点广播心跳消息.如果节点A收到来自节点B的心跳消息,则说明B节点正常工作,并向B节点反馈接收确认.若在指定的时间内没有收到结点B的心跳消息,则A向其他节点征询B节点是否故障消息,以便获得更多的消息,进一步确认B的状态.只有当半数以上的节点没有按时收到B的心跳消息,才确认B的故障,控制系统将回收分配给B的资源,并将工作负载提交给其他运行正常的节点完成.

各Agent的心跳检测是通过检测/Proc文件系统实现的.在/proc中每一个运行中的进程 (其中包括防火墙进程)都有一个用它的PID命名的目录,这些目录中包含了提供有关进程的状态和环境的细节信息的文件.

因为心跳消息要借助网络通信进行发送,数据包的丢失和延迟就可能导致心跳检测的不准确,因此必须确定合理的心跳传输的时间周期.对数据包丢失的度量我们采用丢包率进行统计,即Plost=(S-R)/S,其中S为系统运行后统计发送的心跳信息包数量,R为实际接收的确认包数量.数据包的传输延迟通常是由于网络拥塞造成的,传输时间是不确定性的随机概率事件的变量,一般满足契比雪夫不等式 (如下所示).

其中E(t)表示期望传输时间的均值,D(t)表示t的方差.

对E(t)的计算和使用我们采用了估算修正方法实现,即E(t)实际操作采用如下公式代入计算

其中S(t)表示以往传输中的实际传输时间采样值,a为修正因子,经过反复测量,最终修正因子我们确定为0.87.

最后根据传输延时概率和数据包丢包率可以计算出,当正确检测的可信度范围为PA时的最小传输时间间隔为:

5 结束语

将高可用、高性能的集群技术和网络防火墙技术有机结合设计实现防火墙集群,能有效地解决网络带宽的瓶颈和传统防火墙检测效率低下的问题.本文在简要介绍了集群与防火墙集群技术的基础上,重点阐述了采用状态检测技术的Linux防火墙集群系统的总体规划和关键技术环节的设计思想.该防火墙通过跟踪IP数据流状态轨迹,显著地提高了数据包的检测效率,利用负载均衡技术和心跳检测进一步保障了防火墙Agent的有效性和高效性.该防火墙集群在实验测试中运行良好、性能稳定.

[1]邓书晶.防火墙及其集群相关技术浅析[J].计算机安全,2006,(11):58-60

[2]崔小燕.Linux集群系统分析[J].西安邮电学院学报,2006,11(05):103-106

[3]屈钢,邓健青,韩云路.Linux集群技术研究[J].计算机应用研究,2005,(05):100-101

[4]胡庆烈.Linux内核的配置与编译[J].电脑知识与技术,2009,(03):730-731

[5]杨彬,李雪莹,陈宇,等.利用LINUX集群实现高速网入侵检测[J].计算机工程与应用,2003,(23):151-153

[6]李清玉,韦卫,侯紫峰.防火墙集群负载均衡算法设计与实现[J].计算机工程,2005,(01):141-143

[7]M OURANIG.Get Acquainted with Linux Security and Optinization System[M].New York:Harper and Row,2000:103-104

[8]M oon J,Park J,Jung G.Accelerating firewall through intelligent self-learning[J].IEEE Proc M an Cybern,2003(04):3524-3529

猜你喜欢
内核防火墙数据包
强化『高新』内核 打造农业『硅谷』
构建防控金融风险“防火墙”
基于嵌入式Linux内核的自恢复设计
Linux内核mmap保护机制研究
SmartSniff
微生物内核 生态型农资
在舌尖上筑牢抵御“僵尸肉”的防火墙
下一代防火墙要做的十件事
视觉注意的数据包优先级排序策略研究
移动IPV6在改进数据包发送路径模型下性能分析