用于网络的轻量级入侵检测外文翻译资料

 2022-11-12 19:30:07

Proceedings of LISA 99: 13th Systems Administration Conference

Seattle, Washington, USA, November 7–12, 1999

S N O R T — L I G H T W E I G H T I N T R U S I O N D E T E C T I O N F O R N E T W O R K S

Martin Roesch

THE ADVANCED COMPUTING SYSTEMS ASSOCIATION

copy; 1999 by The USENIX Association All Rights Reserved For more information about the USENIX Association: Phone: 1 510 528 8649 FAX: 1 510 548 5738 Email: office@usenix.org WWW: http://www.usenix.org

Rights to individual papers remain with the author or the authors employer.

Permission is granted for noncommercial reproduction of the work for educational or research purposes.

This copyright notice must be included in the reproduced paper. USENIX acknowledges all trademarks herein.

Snort – Lightweight Intrusion Detection for Networks

Martin Roesch – Stanford Telecommunications, Inc.

ABSTRACT

Network intrusion detection systems (NIDS) are an important part of any network security architecture. They provide a layer of defense which monitors network traffic for predefined suspicious activity or patterns, and alert system administrators when potential hostile traffic is detected. Commercial NIDS have many differences, but Information Systems departments must face the commonalities that they share such as significant system footprint, complex deployment and high monetary cost. Snort was designed to address these issues.

Introduction

Snort fills an important lsquo;lsquo;ecological nichersquo;rsquo; in the the realm of network security: a cross-platform, lightweight network intrusion detection tool that can be deployed to monitor small TCP/IP networks and detect a wide variety of suspicious network traffic as well as outright attacks. It can provide administrators with enough data to make informed decisions on the proper course of action in the face of suspicious activity. Snort can also be deployed rapidly to fill potential holes in a networkrsquo;s security coverage, such as when a new attack emerges and commercial security vendors are slow to release new attack recognition signatures. This paper discusses the background of Snort and its rules-based traffic collection engine, as well as new and different applications where it can be very useful as a part of an integrated network security infrastructure.

Snort is a tool for small, lightly utilized networks. Snort is useful when it is not cost efficient to deploy commercial NIDS sensors. Modern commercial intrusion detection systems cost thousands of dollars at minimum, tens or even hundreds of thousands in extreme cases. Snort is available under the GNU General Public License [GNU89], and is free for use in any environment, making the employment of Snort as a network security system more of a network management and coordination issue than one of affordabil-ity.

What is lsquo;lsquo;lightweightrsquo;rsquo; intrusion detection?

A lightweight intrusion detection system can easily be deployed on most any node of a network, with minimal disruption to operations. Lightweight IDSrsquo; should be cross-platform, have a small system footprint, and be easily configured by system administrators who need to implement a specific security solution in a short amount of time. They can be any set of software tools which can be assembled and put into action in response to evolving security situations. Lightweight IDSrsquo; are small, powerful, and flexible enough to be used as permanent elements of the network security infrastructure.

Snort is well suited to fill these roles, weighing in at roughly 100 kilobytes in its compressed source distribution. On most modern architectures Snort takes only a few minutes to compile and put into place, and perhaps another ten minutes to configure and activate. Compare this with many commercial NIDS, which require dedicated platforms and user training to deploy in a meaningful way. Snort can be configured and left running for long periods of time without requiring monitoring or administrative maintenance, and can therefore also be utilized as an integral part of most network security infrastructures.

What is Snort?

Snort is a libpcap-based [PCAP94] packet sniffer and logger that can be used as a lightweight network intrusion detection system (NIDS). It features rules based logging to perform content pattern matching and detect a variety of attacks and probes, such as buffer overflows [ALE96], stealth port scans, CGI attacks, SMB probes, and much more. Snort has real-time alerting capability, with alerts being sent to syslog, Server Message Block (SMB) lsquo;lsquo;WinPopuprsquo;rsquo; messages, or a separate lsquo;lsquo;alertrsquo;rsquo; file. Snort is configured using command line switches and optional Berkeley Packet Filter [BPF93] commands. The detection engine is programmed using a simple language that describes per packet tests and actions. Ease of use simplifies and expedites the development of new exploit detec-tion rules. For example, when the IIS Showcode [IISBT99] web exploits were revealed on the Bugtraq mailing list [BTQ99], Snort rules to detect the probes were available within a few hours.

Snort vs. The World!

Snort shares commonalities with both sniffers and NIDS. Two programs that lend themselves to direct comparison with Snort, tcpdump and Network Flight Recorder [NFR97], will be examined and contrasted in this section. In many cases, Snort is financially, technically, and/or administratively easier to implement than other Open Source [OSS98] or commercially available tools.

How Is Snort Different From tcpdump?

Snort is cosmetically similar to tcpdump [TCPD91] but is more focused on the security applications of packet sniffing. The major feature that Snort has which tcpdump does not is packet payload inspection. Snort decodes the application layer of a pa

剩余内容已隐藏,支付完成后下载完整资料


用于网络的轻量级入侵检测

摘要

网络入侵检测系统(NIDS)是任何网络安全体系结构的重要组成部分。它们提供了一层防御,用于监视网络流量,以发现预定义的可疑活动或模式,并在检测到潜在的恶意流量时向系统管理员发出警报。商业nid有许多不同之处,但是信息系统部门必须面对它们所共享的共性,例如显著的系统占用空间、复杂的部署和高昂的金钱成本。Snort旨在解决这些问题。

介绍

Snort填补了网络安全领域的一个重要“生态位”:一个跨平台的轻量级网络入侵检测工具,可以部署该工具监视小型TCP/IP网络,并检测各种可疑网络流量以及直接攻击。它可以为管理员提供足够的数据,以便在面临可疑活动时就正确的行动方针作出明智的决定。Snort还可以快速部署,以填补网络安全覆盖中的潜在漏洞,比如当出现新的攻击,而商业安全供应商在发布新的攻击识别签名时速度较慢。本文讨论了Snort的背景及其基于规则的流量收集引擎,以及作为集成网络安全基础设施的一部分非常有用的新应用程序。

Snort是用于小型、低使用率的网络工具。当部署商业NIDS传感器的成本效率不高时,Snort非常有用。现代商业入侵检测系统至少要花费数千美元,在极端情况下要花费数万甚至数十万美元。Snort是在GNU通用公共许可证[GNU89]下可用的,并且在任何环境中都可以免费使用,这使得使用Snort作为网络安全系统更像是一个网络管理和协调问题,而不是一个经济问题。

什么是“轻量级”入侵检测?

轻量级的入侵检测系统可以轻松地部署在网络的大多数节点上,对操作的干扰最小。轻量级IDS应该是跨平台的,具有较小的系统占用空间,并且可以由需要在短时间内实现特定安全解决方案的系统管理员轻松配置。它们可以是任何一组软件工具,可以对不断变化的安全情况进行组合并付诸行动。轻量级IDS很小,功能强大,足够灵活,可以作为网络安全基础设施的永久元素。

Snort非常适合扮演这些角色,其压缩源分布中大约有100 kb。在大多数现代体系结构中,Snort只需要几分钟就可以编译并投入使用,配置和激活可能还需要10分钟。与此相比,许多商业nid需要专门的平台和用户培训才能以有意义的方式部署。可以配置Snort并使其长时间运行,而不需要监视或管理维护,因此也可以将其用作大多数网络安全基础设施的一个组成部分。

Snort是什么?

Snort是一个基于libpcap的[PCAP94]包嗅探器和日志记录器,可以用作轻量级网络入侵检测系统(NIDS)。它具有基于规则的日志记录功能,可以执行内容模式匹配并检测各种攻击和探测,比如缓冲区溢出[ALE96]、隐式端口扫描、CGI攻击、SMB探测等等。Snort具有实时警报功能,可以将警报发送到syslog、服务器消息块(SMB)“WinPopup”消息或单独的“警报”文件。Snort是使用命令行开关和可选的Berkeley Packet Filter [BPF93]命令配置的。检测引擎使用描述每个包测试和操作的简单语言进行编程。易用性简化并加快了新的漏洞检测规则的开发。例如,当在Bugtraq邮件列表[BTQ99]中显示IIS Showcode [IISBT99] web漏洞时,用于检测探测的Snort规则在几个小时内就可用了。

Snort vs.世界!

Snort与嗅探器和nid具有相同之处。本节将对两个程序进行检查和比较,这两个程序可以与Snort、tcpdump和Network Flight Recorder [NFR97]进行直接比较。在许多情况下,Snort比其他开源[OSS98]或商业可用工具在财务、技术和/或管理上更容易实现。

Snort与tcpdump有何不同?

Snort在外观上类似于tcpdump [TCPD91],但更关注包嗅探的安全应用程序。Snort具有而tcpdump没有的主要特性是包负载检查。Snort对数据包的应用层进行解码,并提供规则来收集包含在其应用层中的特定数据的流量。这允许Snort检测许多类型的敌对活动,包括缓冲区溢出、CGI扫描或包负载中的任何其他数据,这些数据可以用惟一的检测指纹进行描述。

Snort的另一个优点是,它的解码输出显示比tcp-dump的输出对用户更友好。Snort目前不会在运行时查找主机名或端口名,这是tcpdump可以执行的功能。Snort专注于尽可能快地收集数据包,并在Snort检测引擎中处理它们。执行运行时主机名查找不利于高性能数据包分析。

Snort和tcpdump共享的一个强大功能是使用Berkeley Packet filter (BPF)命令过滤流量。这允许根据各种特定的数据包字段收集流量。例如,可以通过BPF命令指示这两种工具只处理TCP流量。虽然tcpdump将收集所有TCP流量,但是Snort可以利用其灵活的规则集执行附加功能,比如只搜索并记录那些以特定方式设置TCP标志的包或者包含相当于CGI漏洞探测的web请求。来自海军水面作战中心的阴影id [SHD98]基于tcpdump,并使用广泛的BPF滤波。本文最后对阴影进行了较为详细的讨论。

Snort和非功能性需求

也许,将Snort与NFR进行比较的最佳方式是将Snort比作NFR即将上大学的足球英雄的弟弟。Snort与NFR共享一些相同的功能概念,但是NFR是一个更加灵活和完整的网络分析工具。也就是说,little brother的想法可以扩展到Snort更适合小的地方,并且比NFR更“灵活”。例如,NFR的包过滤n-code语言是一种严肃的、功能齐全的脚本语言,而Snort的规则则更为一维。另一方面,一旦确定了攻击签名,编写Snort规则来检测新攻击只需几分钟。有关用n-code编写的简单web检测规则和类似的Snort规则的示例。

NFR还具有比Snort更完整的特性集,包括IP碎片重组和TCP流解码。这些特性在任何旨在执行任务关键型入侵检测的商业产品中都是必不可少的,而NFR是Ptacek和Newsham [PTA98]提出的第一个能够击败反nids攻击的产品。目前,Snort还没有实现TCP流重新组装,但是未来的版本将实现此功能。Snort目前使用一个规则选项来处理IP碎片,该选项为碎片包设置最小大小阈值。事实上,市场上几乎没有任何商业网络设备能够将小于256字节的数据包碎片化。通过将这个阈值设置为一些合理的值,比如128字节,可以记录碎片化的数据包探测和攻击,并且可以通过Snort自动发送警报。完整的IP片段和TCP流重新组装和分析将在Snort的后续版本中解决。

引擎盖下面

Snort的体系结构关注性能、简单性和灵活性。Snort由三个主要子系统组成:包解码器、检测引擎和日志记录和警报子系统。这些子系统依赖于libpcap混杂的包嗅探库,该库提供了可移植的包嗅探和过滤功能。程序配置、规则解析和数据结构生成在嗅探器部分初始化之前进行,将每个包处理的数量保持在实现基本程序功能所需的最低水平。

包解码器

解码引擎是围绕协议栈层组织的,协议栈层存在于受支持的数据链路和TCP/IP协议定义中。解码器中的每个子例程通过覆盖原始网络流量上的数据结构对包数据施加顺序。这些解码例程通过协议栈依次调用,从数据链路层到传输层,最后在应用程序处结束

用于网络的轻量级入侵检测

层。本节强调速度,解码器的大部分功能包括将指针设置到数据包数据中,以便稍后由检测引擎进行分析。Snort为以太网、SLIP和原始(PPP)数据链路协议提供解码功能。ATM支持正在开发中。

检测引擎

Snort在一个二维链表中维护它的检测规则,其中包含链标头和链选项。这些规则列表已压缩为链标头中的公共属性列表,其中检测修饰符选项包含在链选项中。例如,如果在给定的Snort检测库文件中指定了45条CGI-BIN探测规则,它们通常都共享公共源和目标IP地址和端口。为了加快检测处理,将这些共性压缩到一个链标头中,然后将单个检测签名保存在链选项结构中。

这些规则链在两个方向上递归地搜索每个包。检测引擎只检查规则解析器在运行时设置的那些链选项。匹配检测引擎中解码包的第一个规则触发规则定义中指定的操作并返回。

检测引擎的大修目前正处于规划和开发阶段。下一个版本的引擎将包含用户编写和分发插件模块的功能。将它们绑定到检测引擎规则语言的关键字。这将允许任何具有适当插件模块的人向Snort添加重要的检测功能,并为特定的作业定制程序。

日志/报警子系统

警报和日志子系统是在运行时使用命令行开关选择的。目前有三个日志记录和五个警报选项。可以将日志选项设置为将经过解码的、人类可读的格式的包记录为基于ip的目录结构,或者将tcpdump二进制格式的包记录为单个日志文件。解码格式日志记录允许快速分析系统收集的数据。将tcpdump格式记录到磁盘上要快得多,应该在需要高性能的实例中使用。还可以完全关闭日志记录功能,从而启用警报以获得更大的性能改进。

警报可以发送到syslog,以两种不同的格式记录到警报文本文件中,或者使用Samba smbclient程序作为Win-Popup消息发送。syslog警报以安全/授权消息的形式发送,可以使用swatch [SWT93]等工具轻松监控这些消息。WinPopup alerts允许将事件通知发送到运行WinPopup软件的Microsoft Windows控制台的用户指定列表。将警报发送到纯文本文件有两个选项;充分和快速报警。Full alerting通过传输层协议写入警报消息和包头信息。fast alert选项将压缩的头信息子集写入警报文件,允许在加载状态下比在full模式下有更好的性能。还有第五个选项可以完全禁用警报,当警报是不必要的或不合适的时候,比如在执行网络渗透测试时,这个选项非常有用。

编写Snort规则

Snort规则编写简单,但功能强大,足以检测各种恶意或可疑的网络流量。当包匹配指定的规则模式时,Snort可以使用三个基本操作指令:pass、log或alert。传递规则只是简单地丢弃数据包。日志规则将完整的包写入运行时用户选择的日志例程。使用警告规则生成事件通知用户在命令行中指定的方法,然后使用所选的日志记录机制记录完整的数据包,以支持稍后的分析。

最基本的规则只包含协议、方向和感兴趣的端口。这个规则将记录到10.1.1类C网络地址空间的端口79 (finger)的所有入站流量。

Snort将圆括号中的关键字解释为“选项字段”。选项字段可用于所有规则类型,并可用于从程序生成复杂的行为,如图5所示。

图5中的规则将检测访问任何本地网络web服务器上的PHF服务的尝试。如果在网络上检测到这样一个包,就会生成一个事件通知警报,然后通过运行时选择的日志记录机制记录整个包。

规则IP地址和端口说明符有几个可用的特性。CIDR块网掩码可以设置为1到32之间的任意值。端口范围可以使用冒号“:”修饰符指定。例如,要监视X Windows服务可能运行的所有端口(通常为6000到6010),可以使用冒号修饰符指定端口范围,如图6所示。

端口和IP地址都可以修改,以匹配例外与砰”!操作符,这在图7中描述的规则中非常有用,用于检测来自网络外部源的X Windows流量。

此规则将为所有来自于绑定到内部X Windows服务端口的主机网络之外的流量生成警报。

Snort版本1.2.1有14个选项字段:

1. 内容:搜索包负载,以找到指定的模式。

2. 标志:测试指定设置的TCP标志。

3.ttl:检查IP头的生存时间(time-to-live, ttl)字段。

4. 匹配ICMP类型字段。5. icode:匹配ICMP代码字段。

6. minfrag:设置IP片段大小的阈值。

7. id:测试指定值的IP报头。

8. ack:查找一个特定的TCP头的确认号。

9. seq:特定TCP头序列号的日志。

10. logto:将规则匹配到指定文件名的日志包。

11. dsize:匹配数据包有效负载的大小。

12. 偏移量:内容选项的修饰符,设置偏移到包有效负载以开始内容搜索。

13. 深度:内容选项的修饰符,设置要搜索的起始位置的字节数。

14. 设置包生成事件时要发送的消息。

可以以任何方式组合这些选项来检测和分类感兴趣的包。规则选项使用逻辑和它们之间的逻辑来处理;规则中的所有测试选项必须为true,以便规则生成“found”响应并让程序执行规则操作。

规则开发

对于快速开发新的Snort规则,Snort非常有用。该工具显示数据的清晰简洁的方式使其非常适合编写新规则。的发展一般方法包括利用感兴趣的,比如一个新的缓冲区溢出,运行Snort的利用网络上测试记录目标和攻击主机之间的所有流量,然后分析数据签名的一个独特的签名和冷凝成规则。图8显示了Snort对概念上的“IMAP缓冲区溢出”的看法,该缓冲区溢出刚刚被“脚本小子”社区广泛使用。

应用层中唯一的签名数据是/bin/sh文本字符串之前的机器码,以及弦本身。使用这些信息,可以快速开发一个新规则。

剩余内容已隐藏,支付完成后下载完整资料


资料编号:[18780],资料为PDF文档或Word文档,PDF文档可免费转换为Word

您需要先支付 30元 才能查看全部内容!立即支付

课题毕业论文、外文翻译、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。