一个高效的背景流量生成方案

2018-06-06 10:14赵康兵
电脑知识与技术 2018年7期

赵康兵

摘要:生成高质量攻击流量与背景流量是进行入侵检测系统测试与评估的核心问题,其中如何兼顾背景流量与真实网络环境的一致性与灵活性一直是个难点,此外入侵检测系统性能的飞速提升又对测试所需背景流量生成的效率提出了较高的要求。这里以NXTECH硬件平台为基础,设计了一个软硬件结合基于重放技术的背景流量生成方案,能够高速产生多种应用层协议流量,允许突发,并使用C#进行了实现。

关键词: 背景流量生成;速率控制;突发流量;入侵检测系统

中图分类号:TP393.0 文献标识码:A 文章编号:1009-3044(2018)07-0046-02

Abstract:The generation of effective background traffic and malicious traffic is the main question of evaluating IDS, and there is a hard trade-off between effectiveness and flexibility. Moreover, efficient method to generate background traffic is needed due to high-performance IDS. Based on NXTECH hardware platform, a new background traffic generation system is designed and implemented by C#, which combines software and hardware to replay packets, supports lots of application layer protocol and traffic burst.

Key words:background traffic generation; rate control; burst of traffic; IDS

1 引言

互联网已经渗透进人们日常生活的方方面面。为了保证网络服务的稳定性和网络数据的保密性,入侵检测系统以及防火墙、反病毒软件等安全解决方案被广泛使用,它们的性能和效果对网络安全有着至关重要的影响。

对入侵检测系统测试和评估方案的研究已经有了很长的历史。1997年Puketza等人介绍了他们基于软件工程测试思想设计的测试平台[1-2]并制订了评估指标。他们通过脚本模拟用户行为来生成攻击流量和背景流量,开创了先河。1998和1999年MIT林肯实验室在美国国防部和美国空军支持下进行了影响最大的一次测试[3-4],测试对象包含了当时流行的开源和商业入侵检测系统。他们使用软件模拟一个空军基地的网络拓扑,生成训练数据和测试数据,这些数据被整理成DARPA1999和DARPA2000数据集被广泛使用,成为相关领域研究的测试基准。后续的研究[5-8]也可简单分为采用有限自动机建模、使用测试组件和流量重放三种方式生成背景流量,但如何生成与真实环境更为接近的背景流量并保证灵活性与高效性的问题并没有得到解决。

本文以具有高速流量发送能力的NXTECH硬件平台为基础,基于REPLAY技术设计并实现了一个背景流量生成系统,提供了对多种应用层协议的支持,并且支持流量控制和较高的效率。

2 方案设计

2.1 硬件平台介绍

本项目以NXTECH硬件平台为基础,它由一台普通PC机和与其通过高速接口相连的硬件板卡组成。板卡提供了两个RJ45接口,具有数据包发送、捕获和其他网络测速功能,发送速率最高可达10Gbps。在PC机上加载板卡驱动NXTECH.dll后可调用对应接口实现相关功能。实现流量发送功能的流程为:1)打开设备;2)锁定使用端口;3)设置工作模式;4)设置网络模式;5)发送自定义数据包。表1是板卡驱动提供的关键接口说明:

2.2 功能需求分析

本项目的主要目标是,模拟真实网络环境生成背景流量,允许通过参数控制发送速率、是否存在突发等选项。对网络背景流量的模拟可分为高低两种层次,低层次只包含以太网、IP、TCP等数据包,高层次生成的流量中还包含应用层协议内容。由于入侵检测系统工作时会丢弃无意义的数据包,为了与真实网絡环境保持一致,本方案也需要能够生成各种应用层协议流。

2.3 总体结构设计

本项目模块结构如图1所示,简单分为五部分。用户代理与用户交互,接收所需协议种类、网络信息、发送速率、是否允许突发等参数,调用其他模块执行具体功能。数据中心维护了一个数据库和一系列流量样本文件。预处理模块从数据中心模块读取需要发送的流量样本,利用PacketDotNet进行解析和处理后填充到一个待发送队列中。流量发送模块对硬件板卡较为底层的API接口进行了封装以简化使用。速率控制模块根据流量控制算法调用发送模块完成流量发送。

3 关键技术实现

为了充分利用硬件资源,实现较高的发送速率,考虑对生成和发送过程进行并行处理,以充分利用硬件性能;为了实现允许突发和不允许突发两种速率限制情况,根据需求在两种流量控制算法之间进行切换。

3.1 流量生成与发送的并行处理

核心思路是在利用.net平台中的BlockingCollection>中“缓存”已经处理完成待发送的数据包。数据包的生成和发送在不同的线程中处理。由于.net中BlockingCollection允许多个线程同时进行读写,可以在多个线程预处理数据包的同时进行流量发送,以此最大限度的提高流量的生成及发送速度。算法的原理如下:

1) 任意时候,接收到停止信号立即停止发送和生成过程,并清理已缓存的数据包

2) 流量生成模块尝试将已处理完成的数据写入缓存队列,成功则继续写入,失败(缓存数据已满)则进入阻塞状态

3) 流量发送模块尝试从缓存队列中取出数据调用板卡API进行发送,成功则继续读取数据,失败(缓存数据已空)则进入阻塞状态

4) 缓存数据增加将激活发送模块,缓存数据减少激活生成模块。

3.2 流量控制的实现

板卡硬件发送能力高达10Gps,因此在通常情况下,可通过控制向板卡发送数据的速率调节实际流量发送速度。常用的速率控制算法有令牌桶算法和漏桶算法,主要区别在于前者支持突发,允许短时间内发送流量超过最大限制,而后者可保证任意时刻流量不超出最大速率限制。以令牌桶算法为例,其实现思路为,每次发送流量之前检查令牌桶是否有足够token,如果有则消耗token并执行发送过程;如果无则根据距离上次添加token时间计算出相应数量补充到令牌桶中,间隔时间过短则等待若干毫秒。

4 结论

本文分析了入侵检测系统测试平台对背景流量生成的需求,以NXTECH硬件平台为基础设计并实现了一个背景流量生成系统,具有可扩展性强、效率高、使用简便等优点,也可用于网络测试等其他需要背景流量生成的场合。在未来,可对本方案进行进一步研究和改进,如通过profiling进一步优化性能、添加ARP自动发现等功能。

参考文献:

[1] Puketza N J, Zhang K, Chung M, et al. A methodology for testing intrusion detection systems[J]. IEEE Transactions on Software Engineering, 1996, 22(10): 719-729.

[2] Puketza N, Chung M, Olsson R A, et al. A software platform for testing intrusion detection systems[J]. Ieee software, 1997, 14(5): 43-51.

[3] Lippmann R, Haines J W, Fried D J, et al. The 1999 DARPA off-line intrusion detection evaluation[J]. Computer networks, 2000, 34(4): 579-595.

[4] Lippmann R, Haines J W, Fried D J, et al. Analysis and results of the 1999 DARPA off-line intrusion detection evaluation[C]//International Workshop on Recent Advances in Intrusion Detection. Springer, Berlin, Heidelberg, 2000: 162-182.

[5] 胡亮, 趙阔, 孔令治, 等. 基于日志的网络背景流量模拟仿真[J]. 小型微型计算机系统, 2006, 27(2): 197-201.

[6] 许超, 钱俊, 史美林. 用于入侵检测数据集评测的 SMTP 流量模拟[J]. 计算机工程与设计, 2006, 27(12): 2124-2126.

[7] 刘华阳. 网络系统仿真中的流量模型研究[J]. 军民两用技术与产品, 2006(2): 42-43.

[8] 邹天际. 网络模拟中背景流量模型的研究[D]. 哈尔滨工业大学,2010.