网络行为分析监控系统研究与设计
2012-09-04王小军颜嘉元周涌杰吴玉杰
王小军,颜嘉元,周涌杰,吴玉杰
(杭州电子科技大学通信工程学院,浙江杭州310018)
0 引言
当前不少企事业单位因为内部网络管理的缺失而导致的员工工作效率下降、企业带宽资源浪费、内部网络安全隐患和机密信息泄漏等负面效应。文献1提了一种基于通用有限状态机的网络行为监控系统实现,该系统通过通用有限状态机来实现网络行为监控,使用逻辑器件来CPU的工作负担,但在Net-FPGA之前还没有一块专门针对互联网络而设计的FPGA。本文研究设计的网络行为分析监控系统能有效完成内网用户上网行为的分析、监视及控制。本设计硬件平台采用带PCI接口的PC主机和斯坦福大学开发的NetFPGA板卡,主机与NetFPGA板卡的信息交互通过PCI接口来完成。系统基于浏览器/服务器(B/S)构架,在实现上采用了应用层协议处理和IP地址过滤等技术。管理人员通过Web页面能很方便的对网络用户上网行为进行分析监控,并且系统还具有对某些网络攻击的实时报警和自动防护功能,能较好地起到完成保护内部网络安全的网络防火墙的功能。
1 开发平台
一个完整的NetFPGA系统由NetFPGA开发板、千兆以太网卡、运行于CentOS操作系统的PC机(或服务器)以及其他软件程序组成,通过各个层次软硬件的互相配合可完成复杂的网络结构测试[2-4]。其中NetFPGA开发板是整个平台的核心,为用户提供了十分丰富的硬件资源。NetFPGA开发板硬件主要包括:Xilinx公司的Virtex22Pro 50 FPGA芯片,两个高性能PowerPC处理器,还包括2块36MB的SRAM、1块64MB的DDR2 SDRAM、4个千兆以太网接口和一个PCI接口。其中Virtex22Pro 50 FPGA芯片提供给用户设计完成自定义的功能。有关NetFPGA开发板的更详细资料可参考文献5。
2 系统构架
系统采用了PC主机加NetFPGA板卡的系统架构,主机和NetFPGA板卡通过PCI接口进行信息交互。主机运行Linux,在Linux下由软件来完成网络行为记录提取、系统配置、更新规则和自动告警等功能。系统底层NetFPGA功能模块设计基于reference_router工程[6]。Router设计的主体部分主要由输入队列、输出端口查找和输出队列三大模块构成。输入输出队列模块负责PHY的4个RGMII接口和PCI的4个DMA接口的数据接收和发送,输出端口查找模块完成数据包的IP层分析和转发查找,为该系统的核心模块。整体结构设计如图1所示。
图1 网络行为分析监控系统结构设计图
管理系统以网页形式提供,这样使管理员能够在远端方便快捷的管理系统,而不需要安装任何客户端程序。当管理员输入正确的用户名和密码后即可进入管理界面,否则不能对系统进行管理工作。管理系统使用HTML+JS+CSS进行编写,使得管理系统具有方便灵活的特性。网络行为记录器将局域网内用户浏览网页的情况提取出来并存入MySQL数据库中,以便管理员进行查询和分析。网络行为记录器使用C语言编程实现,通过调用socket函数提取出流经NetFPGA各接口的所有网址请求数据,完成用户上网行为的提取及记录[7]。web服务器基于系统提供的开源web服务器设计,通过web服务器实现MySQL数据库操作和操作寄存器进行系统设置等功能,使系统应用方便快捷。MySQL数据库管理系统用于用户网络行为信息、禁用网址信息、日记信息和攻击信息等数据的存储和管理。
3 系统实现
本系统分为上层软件实现部分和底层硬件实现部分,上层软件设计在Linux操作系统下完成网络行为记录提取、系统配置、更新规则和自动告警功能。NetFPGA硬件部分的主要作用是根据PC上位机软件提供的规则,对数据包做分析过滤,对符合规则的包进行丢弃或者转发给软件做二次处理,因此,硬件的设计主要是针对Router工程Output Port Lookup模块的升级,添加新的模块对数据包进行更全面的分析,同时新添加的寄存器接口供上位机软件调用。
本系统的重点实现包括output_port_lookup模块、网络行为记录器模块和web服务器模块,具体实现方法如下。
3.1 output_port_lookup 模块设计
系统在 output_port_lookup 模块内新增加了 src_mac、src_ip、dst_ip、src_port、dst_port、http_get和 other_mod处理模块,在判定数据包的转发或者丢弃过程中在遵循原有设计规则之前,需要先考虑本系统设定的规则。如果该数据包中MAC地址、IP地址或者端口在系统的黑名单之内,则数据包被直接丢弃,如果该数据包属于Http GET请求包或者需要是特定端口的数据包则被转发到cpu做二次处理,其余的包按正常规则转发。
一个完整的数据包在达到Output Port Lookup模块时已经被拆分为若干个64位的分段,用一个8位的in_ctrl信号来标记当前的64位in_data属于哪个分段。每段数据包在时钟的驱动下并行进入input_fifo和preprcocess_control,前者是32深度的缓冲池,保证了数据包在后续模块中的线速处理,后者是控制中枢,根据in_ctrl信号,启动相应的模块对当前in_data上的数据进行分析。其中本系统添加的处理模块有源MAC过滤、源IP过滤、源端口过滤、目标IP过滤、目标端口过滤和GET包的识别。上述模块除GET包识别之外,其他模块都是基于内容可寻址储存器CAM核的设计,每个CAM的深度均为32位,CAM中匹配数据的写入和读出均由寄存器系统完成,待匹配数据则由各个模块从in_data上获得。寄存器设计采用Router的架构,将本系统添加的模块加入到其中。GET包识别采用的是开源项目url_extraction中的模块。各个模块在分析处理完数据包之后,都会将处理结果送到处理中心(op_lut_proce_sm.v),在处理中心判别该数据包的丢弃或者转发。
3.2 网络行为记录器模块设计
网络行为记录器实现将局域网内用户所浏览网站的地址、源MAC地址、源IP地址、目标IP地址、端口号、时间等数据存入到数据库,作为日志记录,方便管理员分析监控。程序流程如图2所示。
图2 网络行为记录器程序流程图
3.3 web服务器模块设计
web服务器模块是根据系统设计要求利用开源服务器设计添加了网络行为分析监控系统专用控制接口和报警信息处理等功能的专用服务器。
4 结束语
本文提出了一种基于NetFPGA开发平台的网络行为分析监控系统的设计方案及具体实现方法。经测试分析,该设计不仅能够实现用户网络行为的分析监控,记录局域网中用户浏览网页的有关信息,如用户的源MAC地址、源IP地址、目的IP地址、网址、端口号、访问时间等,而且还能通过硬件层次的重构,快速的在硬件层次上实现非法用户的禁用、非法网站的禁用、重要TCP/UDP端口的保护和特定服务控制等功能。而系统的一些重要设置参数直接作用于NetFPGA硬件层,从而使系统运行效率更高且更安全。随着上网行为管理系统应用的不断普及,可以预见系统在网络安全领域有着较高的应用价值和发展前景。
目前实现的系统各功能模块仍有不够完善之处,如本设计NetFPGA寄存器数据搜索所采用的数据匹配算法、安全规则设置及数据库设计部分都还有改进的空间,有待进一步的研究。
[1]温研,王怀民,胡华平.分布式网络行为监控系统的研究与实现[J].计算机科学与工程,2005,27(10):13-16.
[2]Digilent中国代表处.NetFPGA用户手册v1.2[R].北京:北京理工大学,2009:3-7.
[3]陆佳华,杨卫,周剑,等.零存整取NetFPGA开发指南[M].北京:北京航空航天大学出版社,2010:63-142.
[4]吕良,杨波,陈贞翔.网络安全防护系统的研究与设计[J].山东大学学报(理学版),2009,44(9):47-51.
[5]Xilinx.NetFPGA:A Gigabit Networking Development Platform for Education Community[R].加州:XILINX 公司,2009:1-16.
[6]James HongyiZeng.NetFPGA Tutorial Tsinghua University– Day 1[DB/OL].http://netfpga.org/tutorials/China2010/NetFPGA_Day_1.pdf,2010 -08 -18.
[7]Richard Stevens.TCP/IP详解 卷3 TCP事务协议、HTTP、NNTP和UNIX域协议[M].北京:机械工业出版社,2000:353-364.