介绍
网络入侵检测系统(NIDS)是当今网络安全基础设施的重要组成部分。它们提供了一个防御层,用于监控网络流量是否存在可疑活动或模式,并在检测到潜在的恶意流量时向系统管理员发出警报。商业NIDS通常有很高的货币成本(最低数千美元,极端情况下甚至数十万美元)。Snort是一个公开可用的开源NIDS。事实上,Snort是世界上部署最广泛的入侵检测技术,迄今为止有数百万次下载,它已成为业界事实上的标准(Snort)。Snort通常是基于PC的NIDS,但也集成在第三方解决方案中。
Snort目前是作为单线程用户级应用程序编写的。它利用TCP/IP堆栈捕获和检查数据包有效负载,以识别恶意活动的签名。通常,NIDS驻留在网络边缘,对进入受保护网络的每个数据包执行深度数据包检查(Alder等人,2004),以对抗数千个攻击特征。签名表示为安全团体经常更新的一组规则。当数据包与签名匹配时,会发出警报,指示试图入侵或滥用。对于基于PC的解决方案,Snort可以在许多平台(如Linux、FreeBSD和Windows)上运行。在当今私人家庭和中小型企业的局域网中,运行Snort NIDS的首选操作系统是Linux或Windows Server 2003。这两个操作系统是最广泛用于运行基于PC的高端服务器的操作系统。Microsoft操作系统Windows Vista相对较新,很难被绝大多数用户采用,因为它需要更多的CPU能力和硬件资源。相反,WindowsServer2003已经过了它的生命周期,并且已经完全成熟,所需的CPU和内存资源要少得多。
为了使Snort高效,它必须跟上当今不断增长的流量,链路速度高达数十Gbps(每秒千兆比特)。不这样做的后果可能会危及内部网络的安全。如果入侵检测系统无法以要求的速率执行数据包检查,则会允许数据包在未被检测到的情况下进入网络。文献中有大量研究讨论了Snort的性能限制,并提出了提高其整体性能的技术。在Abbas(2002)和Vermeiren等人(2004)中,进行了一项初步研究,将Snort设计为一个多线程应用程序,利用当今的多核架构。在Turnbull(2007)和Geschke(2006)中,通过卸载Snort的一些基本功能(包括警报和日志记录),Snort的性能有所提高,从而使Snort能够专注于数据包检查的主要功能。Aldwairi等人(2005)、Weinsberg等人(2007)、Yu等人(2007年)、Coppens等人(2004年)、Sourdis等人(2006年)、Cho和Mangione-Smith(2008年)、Baker和Prasanna(2005年)、Lin等人(2007日)、,Mitra等人(2007年)使用新的优化技术,结合定制FPGA(现场可编程门阵列)和硬件,大大改进了规则和字符串匹配。通过使用不同的数据包捕获库,并允许Snort直接访问分配给NIC(网络接口卡)的内核接收环形缓冲区,可以提高性能(Deri,2005;the Snort Project,2008)。在Biswas和Sinha(2006)中,当完全消除传统网络TCP/IP堆栈和套接字接口机制时,表现出了显著的改进。到目前为止,所有这些提议的技术还没有被Snort开发人员采用。Snort的软件体系结构和运行环境保持不变。因此,定制和集成这些解决方案时存在困难和不兼容性,特别是对于典型的最终用户。
之前在Salah和Kahtani(新闻稿)中介绍了在Linux下提高Snort性能的工作。与之形成鲜明对比的是,本文对Snort在两种首选操作系统(Linux和Windows)下的性能进行了评估和比较研究。我们考虑Linux和Windows的默认系统配置。我们还考虑并研究调整Linux和Windows操作系统的关键性能优化和配置参数对Snort性能的影响。这将有助于选择最佳配置参数来提高和改进Snort的性能。我们通过识别和调整关键系统参数来提高Snort性能的技术可以与Abbas(2002)、Vermeiren等人(2004)、Turnbull(2007)、Geschke(2006)、Aldwairi等人(2005)、Weinsberg等人(2007),Yu等人(2007年)、Coppens等人(2004年)、Sourdis等人(2006年)提出的技术正交,Cho和Mangione Smith(2008)、Baker和Prasanna(2005)、Lin等人(2007)、Mitra等人(2007)、Deri(2005)、Snort项目(2008)、Biswas和Sinha(2006)。我们的改进包括描述Snort应用程序的典型执行行为和CPU处理需求,并相应地选择这些关键系统参数的最佳配置。
论文的其余部分组织如下。第2节简要介绍了Snort的软件体系结构和运行环境。本节还详细介绍了Linux网络子系统的内部工作,并讨论了提高Snort性能的关键调优系统参数。第3节描述了带有Windows和Linux配置详细信息的实验设置。本节还介绍了Snort的安装配置和设置。第4节介绍了Linux和Windows的性能度量和比较,并进行了详细的解释和分析。最后,第5节总结了研究并确定了未来的工作。