现阶段系统框架已基本搭建完毕,系统功能还需要进一步扩充。现在可以完成对客户配置的源IP地址、目的IP地址、源端口、目的端口、特定长度的数据包进行过滤。对匹配用户制定的IP或端口的数据包予以丢弃,对长度不在规定范围内的包也予以丢弃,其他的数据包将被转发。下一阶段将添入更多自定义匹配规则的功能,成为真正意义上的防火墙。现在就目前实现的部分功能进行了一些测试,这些功能全部顺利完成。我们在测试文档里配置了敏感源IP地址为192.168.0.2,端口为 32,敏感目的IP地址为192.168.0.3,端口为64。同时还定义了最小包长度为46,最大包长为1536。在测试中我们模拟了9个数据包如下(为观测方便每个数据包的最后一个数据值为该报的序列):
包序号 |
源地址 |
源端口 |
目的地址 |
目的端口 |
长度 |
1 |
192.168.0.7 |
80 |
192.168.0.4 |
40 |
85 |
2 |
192.168.0.2 |
80 |
192.168.0.3 |
16 |
89 |
3 |
192.168.0.16 |
80 |
192.168.0.6 |
32 |
45 |
4 |
192.168.0.8 |
80 |
192.168.0.7 |
32 |
106 |
5 |
192.168.0.16 |
32 |
192.168.0.14 |
40 |
102 |
6 |
192.168.0.5 |
80 |
192.168.0.15 |
64 |
100 |
7 |
192.168.0.2 |
32 |
192.168.0.3 |
64 |
121 |
8 |
192.168.0.7 |
80 |
192.168.0.3 |
40 |
85 |
9 |
192.168.0.7 |
80 |
192.168.0.8 |
40 |
123 |
配置寄存器波形如下:
(1)当我们配置寄存器使得当所有地址匹配时才滤出数据包,通过观察我们定义的数据,可知包3与包7将会被丢弃。从modelsim仿真结果,可以看到包3与包7确实已经被丢弃了,其他包被转发。
(2)当我们配置寄存器使得当源、目的IP地址匹配时才滤出数据包,通过观察我们定义的数据,可知包2、包3与包7将会被丢弃。从modelsim仿真结果,可以看到包2、包3与包7确实已 经被丢弃了,其他包被转发。
(3)当我们配置寄存器使得当目的IP地址匹配时才滤出数据包,通过观察我们定义的数据,可知包2、包3、包7与包8将会被丢弃。从modelsim仿真结果,可以看到包2、包3、包7与包8确实已经被丢弃了,其他包被转发。
7. 板上调试调试方案
在设计上本系统有RX和TX两套,RX负责监控进入局域网的数据,TX负责监控从局域网出去的数据。这就需要两个PHY片两个MAC核,但是限与开发板的限制(只有一个PHY片一个RJ45网口)我们只做了一套。因此在调试的时候就只能调试进或者出一路,但是这样对功能验证已经足够,因为RX和TX两套逻辑是一模一样的。我们调试用到了如下工具:装有windows系统的PC机、双绞线(五类交叉线)、Widpackets OmniPeek发包抓包软件。如下图所示:
Power supply 为电源。
USB configure port 为烧写FPGA代码的接口。
RJ45 network port 为100M网口,用交叉线连接到普通的PC机上,在PC机上用抓包和发包软件来与开发板通信。
PS2 interface 用来接键盘,向系统输入数据,配置寄存器。
Serious port 为串口,用来调试系统,显示FPGA运行情况。
调试步骤:
第一步:烧写基本的硬件代码,系统将收到的数据包按原样返回。结果:已经成功
第二步:烧写基本的串口调试代码和PS2口代码,测试串口的可用性。结果:已经成功。
第三步:烧写硬件代码+软件代码+串口代码+PS2代码。结果:能够读写内部寄存器、系统能够收到数据包、并按照配置规则进行过滤后通过网口发送回PC机
8. 工作总结现阶段是系统的第二版,在第二版中我们完成了对整个系统的设计,实现了软硬件代码的编写和仿真工作,并在widows操作系统的pc机上应用串口通信软件实现用户交互平台。在XUP Virtex-II Pro Development System硬件平台上进行了调试,基本实现了我们的设计,实现了流量统计、匹配过滤、流量控制等功能,由于没有时间涉及DDR SDRAM接口,捕获分析以及测试设备等功能没有完全实现,待在以后的版本中添加。
我们首先对设计进行了比较充分的仿真测试,在ModelSim中模拟真实数据环境对系统功能进行了测试,表明完全达到了设计初期提出的目标;其次,我们将设计方案综合成能够下载到FPGA的bit文件,在100M的网络环境中用Widpackets OmniPeek发包软件在开发板上对系统进行了测试,测试表明各种功能均正常。
9. 系统应用由于本系统内核包括了PowerPc硬核,因此可以在PowerPc中开发应用软件,应用本系统当前版本提供的基本功能,至少可以实现以下具体的应用:
1) 流量统计:提供局域网内部所有主机的流量统计报表。
2) 认证上网:只有通过认证的主机才能够接入局域网进行数据通信。
3) 流量限制:限制局域网类单台主机的通信流量,将流量超过门限的主机报告给网络管理员,同时根据网管选择的处理方式对改主机进行断网或者丢弃部分数据包的限制等。
4) 软件黑名单:可以设定特定的软件黑名单,对应用特定端口通信的软件进行控制。
5) 网站黑名单:可以设定特定的网站黑名单,将从该网站的ip地址发送过来的所有数据包进行控制。
待未来在本系统的硬件平台上实现了捕获分析和设备测试功能后,通过开发应用软件至少可以实现以下具体的应用:
1) 监听:抓取特定主机的通信数据,经上层软件解析分析,实现监听功能。
2) 入侵检测:可以将Snort规则配置到本系统的规则中,对有可能入侵的数据包进行截获。
3) 关键字屏蔽:对含有特定关键字的数据包进行控制。
4) 测试网络设备:向局域网发送事先定义好的数据包,来测试网络中新开发的设备的性能。
5) 黑客功能:向特定网络或者网站发送大量事先定义好的数据包,对特定网络进行攻击。
10. 展望本系统第二版实现了以上的基本的匹配功能,在不对系统架构做很大修改的情况下,可以实现下面的功能:
(1) 访问控制
通过软硬件协调工作,采用多级过滤措施,提供从链路层到应用层的全面安全控制。在链路层提供基于MAC地址的过滤控制能力;在网络层和传输层,根据网络地址、网络协议以及TCP 、UDP 端口进行过滤,并进行协议状态分析;在应用层,通过内容检测机制,可以对高层应用协议命令、协议内容、数据内容关键字等信息实现匹配过滤,实现访问监控,敏感关键屏蔽;同时支持第三方认证机制,提供用户认证机制。实现立体的全方位的安全访问控制。
(2) 入侵防御
在规则队列里加上对非法攻击报文的处理,在网络进口就对它进行过滤,就可以实现防御恶意攻击的功能。
(3) 可靠性保证
防火墙主要用在网络出口,需要高可靠性。具体体现在以下几个方面。
电路方面:由于本系统工作是是需要串接在局域网出口的,因此需要当本系统出现异常后,网络仍然能够正常工作。可以考虑提供在硬件电路上的掉电短路机制,系统异常掉电后能够保证数据通路正常,保证正常的数据通信不受影响;
数据链路方面:增加系统支持的数据链路数量,各个链路之间进行备份或者进行负载均衡,提高网络可靠性或者提高系统能够支持的最大流量。
软件方面:提供看门狗复位机制,系统死机后快速从故障中恢复;
系统方面:提供双系统或多系统冗余机制,减少故障发生概率;
(4) 可扩展性
如果用户需要更多的系统处理能力,可以增加设备,通过简单的软件设置,各个设备就可以组成处理集群,通过负载均衡成倍增加处理性能。同时,由于本系统核心逻辑采用FPGA设计,针对未来不断增加的网络协议类型,可以在不改变系统总体架构的基础上,通过改变软件代码和FPGA硬件代码,开发出适应新的网络环境的设备,比如可以实施VOIP数据监控,垃圾邮件监控,以及VOD点播系统的监控。
11. 参考文献[1] PowerPC Processor Reference Guide,v2.2, June 5,2007.
[2] Xilinx University Program Virtex-II Pro Development System Hardware Reference Manual, v1.0, March 8, 2005.
[3] Embedded System Tools Reference Manual, v7.0, January 8, 2007.
[4] The UltraController Solution: A Lightweight PowerPC Microcontroller, v1.0, September 2, 2003.
[5] UltraController-II: Minimal Footprint Embedded Processing Engine, v1.1, August 5,2005.
[6] A Software UART for the UltraController GPIO Interface, v1.0, March 3,2004.
[7] Tri-Mode Ethernet MAC, v3.1, July 13, 2006.
[8] Content-Addressable Memory, v5.1, November 11, 2004.
[8] FPGA嵌入式系统设计. 孟宪元,钱伟康. 电子工业出版社.