基于Snort的入侵检测系统方案_第1页
基于Snort的入侵检测系统方案_第2页
基于Snort的入侵检测系统方案_第3页
基于Snort的入侵检测系统方案_第4页
基于Snort的入侵检测系统方案_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于Snort的入侵检测系统使用 Snort、Apache、MySQL、PHP 和 ACID 构建高级 IDS入侵检测系统和 Snort 介绍在当今的企业应用环境中,安全性是所有网络都非常关注的问题。黑客和入侵者已成功侵入一些大公司的网络。目前已经有一些保护网络架构和通信安全的方法,如防火墙、虚拟专用网(VPN)、数据加密等。入侵检测是近年来兴起的一种较新的网络安全技术。使用入侵检测技术,我们可以找出是否有人试图从已知的攻击类型中攻击您的网络或主机。使用入侵检测系统收集的信息,我们可以强化我们的系统并将其用于其他合法目的。市场上还有许多漏洞检测工具,包括商业形式和开源形式,可用于评估网络中存在

2、的不同类型的安全漏洞。一个全面的安全系统包括许多工具:防火墙:用于阻止信息流入和流出网络。在许多商业和开源产品中都可以找到防火墙。最著名的商业防火墙产品有 Checkpoint (.checkpoint.)、Cisco (.cisco. )和 Netscreen (.netscreen.)。最著名的开源防火墙是 Netfilter/Iptables (.)。入侵检测系统 (IDS):用于查明是否有人正在闯入或试图闯入您的网络。最著名的 IDS 是 Snort,可以在 HYPERLINK %20%20%20%20:/%20%20%20%20 .下载。漏洞评估工具:用于发现和堵塞网络中的安全漏洞。

3、漏洞评估工具收集的信息可以指导我们设置适当的防火墙规则,将恶意互联网用户拒之门外。现在有许多漏洞评估工具,例如 Nmap ( HYPERLINK %20%20%20%20:/%20%20%20%20/ ./ ) 和 Nessus ( HYPERLINK %20%20%20%20:/%20%20%20%20/ ./ )。这些工具可以一起使用来交换信息。有些产品将这些功能捆绑在一起形成一个完整的系统。Snort 是一个免费的开源网络入侵检测系统 (NIDS)。 NIDS 是一种入侵检测系统 (IDS),用于检测网络上的流量。 IDS 还包括安装在特定主机上并检测目标主机行为的系统。迄今为止,IDS

4、 是一项相当新的技术,而 Snort 在 IDS 方面处于领先地位。从对入侵检测和相关概念的介绍开始,您将学习如何安装和管理 Snort 以与其他使用 Snort 的产品一起使用。这些产品包括 MySQL 数据库 (.)、入侵数据库分析和管理工具 ACID (./kb/acid)。 Snort 能够将日志数据(例如警报和其他日志消息)记录到数据库中。 MySQL 用作数据库引擎来存储所有这些数据。使用 ACID 和 Apache (.apache.) Web 服务器,我们可以分析这些数据。 Snort、Apache、MySQL 和 ACID 的协作使我们能够将入侵检测数据记录到数据库中,然后使

5、用 Web 界面查看和分析数据。本书的组织结构使读者能够按照后续章节逐步构建完整的入侵检测系统。安装和集成各种工具的步骤将在以下章节中逐步介绍:第 2 章将介绍编译和安装 Snort 的基础知识。在本章中,您将能够使用基本安装和默认规则设置工作 IDS,以及创建可以记录入侵活动的日志文件。第三章介绍了Snort规则的相关知识、Snort规则的组成以及如何根据自己的系统环境和需求创建自己的规则。建立好的规则是构建入侵检测系统的关键,所以本章非常重要。本章还介绍了不同版本的 Snort 之间的规则差异。第 4 章介绍了输入和输出插件。插件使用 Snort 编译并用于调整检测引擎的输入和输出部分。输

6、入插件用于在实际检测过程发生之前准备捕获的数据包。输出插件用于为特定目的格式化数据。例如,一个输出插件可以将输出检测信息转换为SNMP陷阱信息,另一个输出插件可以将该信息转换为数据库信息。本章将详细介绍如何配置和使用这些插件。第 5 章描述 MySQL 数据库如何与 Snort 一起工作。 MySQL 插件使 Snort 能够将日志数据记录到数据库中以供后续分析。在本章中,您将学习如何在 MySQL 中设置数据库以及如何配置数据库插件以将数据记录到数据库中。第 6 章介绍 ACID,以及如何使用 ACID 来获取您在第 5 章创建的数据库中的信息并在 Apache 服务器上显示。 ACID是一

7、个重要的工具,提供了丰富的数据分析能力,你可以通过它获取攻击频率、攻击类别、查看这些攻击方法的相关资源等等。 ACID 与 PHP 脚本语言、GD 库和 PHPLOT(一种用于绘制图表的工具)一起使用,以分析 SQL 中的数据并绘制图表。第 7 章重点介绍可与 Snort 一起使用的其他有用工具。阅读本书后,您将构建一个包含多个组件的完整系统,如图 1-1 所示。如图所示,Snort 捕获并分析数据,然后使用输出插件将数据存储在 MySQL 数据库中。借助 ACID、PHP、GD 库和 PHP 包的 Apache 服务器使用户能够连接到服务器以通过浏览器显示数据。用户可以在网页上应用不同的查询

8、来分析、备份、删除数据或显示图表。基本上,您可以在一台计算机上安装 Snort、MySQL、Apache、PHP、ACID、GD 库和 ACID,实际上阅读本书后,您可以构建一个类似于图 1-2 所示的系统。表明该系统更接近实际应用。在企业中,通常使用多个 Snort 探针,将探针放置在每个路由器或防火墙后面。在这种情况下,您可以使用一个集中的数据库来收集所有探测信息,并在该数据库服务器上运行 Apache Web 服务器,如图 1-3 所示。1 什么是入侵检测?入侵检测是指用于检测针对网络和主机的可疑活动的一系列技术和方法。入侵检测系统基本上可以分为两类:基于特征的入侵检测系统和异常行为检测

9、系统。入侵者通常具有可以被软件检测到的特征,例如病毒。入侵检测系统会检测包含已知入侵行为特征或IP协议异常的数据包。基于一系列特征和规则,入侵检测系统可以检测和记录可疑行为并生成警报。基于异常的入侵检测系统通常分析数据包协议头中的异常,在某些情况下比基于签名的入侵检测系统更好。通常,入侵检测系统捕获网络上的数据包并将它们与规则进行比较或检测其中的异常情况。 Snort 基本上是一个基于规则的 IDS,但是输入插件可以分析协议头异常。Snort 的规则存储在文本文件中,可以使用文本编辑器进行修改。规则按类别分组。不同类别的规则存储在不同的文件中。最后,这些文件由一个名为 snort.conf 的

10、主配置文件引用。 Snort 在启动时会读取这些规则并构建数据结构或链表以使用这些规则捕获数据。识别入侵特征并用规则捕获它们是一项棘手的工作,因为您在实时检测中应用的规则越多,您需要的处理能力就越大,因此使用尽可能少的规则来捕获尽可能多的特性非常重要。 Snort 预定义了许多入侵检测规则,您可以自由添加自定义规则。同时,也可以去掉一些构建规则,防止误报。1.1.1 一些定义在进一步了解入侵检测和 Snort 之前,您需要了解一些与网络安全相关的定义,这些定义将在本书的后续章节中反复应用。要理解其他更复杂的安全概念,必须对这些术语有基本的了解。身份识别系统入侵检测系统或 IDS 是用于检测入侵

11、的软件、硬件或两者的组合。 Snort 是一个可供公众使用的开源 IDS。 IDS 的实际功能取决于组件的复杂性和复杂性。物理IDS是硬件和软件的结合,很多公司都可以提供解决方案。如前所述,IDS 可以采用特征分析技术、异常检测技术或两者兼而有之。 网络 IDS 或 NIDSNIDS 是一种入侵检测系统,用于捕获在网络介质上传播的数据并将其与特征数据库进行比较。根据数据包与特征库的匹配,IDS产生告警或将日志记录到文件或数据库中。 Snort 主要用作 NIDS。 主机 IDS 或 HIDS面向主机的入侵检测系统或 HIDS 作为代理安装在主机上。该入侵检测系统分析系统和应用程序日志以检测入侵

12、。其中一些 HIDS 是被动的,仅在发生某些事情时通知您,而另一些则是主动的,嗅探网络中主机的通信状态并实时生成警报。 特点特征是数据包中包含的信息的特征。签名用于检测一种或多种攻击性行为。例如,针对您的 Web 服务的包中存在“scripts/iisadmin”可能意味着入侵企图。根据攻击的性质,签名数据可能出现在数据包的不同位置。例如,您可能会在 IP、传输层标头(TCP 或 UDP 标头)和/或应用层标头或有效负载中找到攻击签名。您将在本书后面部分了解有关攻击签名的更多信息。通常 IDS 依靠签名来检测入侵。在发现新的入侵特征时,一些商业 IDS 需要供应商提供更新的特征库。在其他 ID

13、S 中,例如 Snort,您可以自己更新特征库。 报警警报是任何类型的入侵通知。当 IDS 检测到入侵者时,它会向安全管理员发出警报。告警可以是弹窗、终端显示和致等形式。警报也存储在日志文件或数据库中,供安全专家查看。在本书的后面部分,您将获得有关警报的更多信息。Snort 的警报由输出插件控制,可以生成各种形式的警报。 Snort 还可以向不同的目标致相同的告警,例如,将告警致到数据库,同时生成 SNMP 陷阱信息。一些插件可以修改防火墙配置,以便可以在防火墙或路由器上控制入侵者。 日志日志信息通常存储在文件中。默认情况下,Snort 将此信息存储在 /var/log/snort 目录中,但

14、也可以在启动 Snort 时使用命令行开关更改此目录。日志信息可以以文本格式或二进制格式存储。以后可以通过 Snort 或 Tcpdump 访问二进制格式文件。还有一个名为 Barnyard 的新工具,可以分析 Snort 生成的二进制日志文件。将日志存储为二进制文件会更有效,因为这种格式的开销相对较低。要在高速网络环境中应用 Snort,需要将日志存储为二进制文件。 误报误报是错误地将非侵入行为报告为侵入行为的警报。例如,上位机配置错误有时会产生触发规则,导致误报。某些路由器(例如 Linksys 家用路由器)会生成引起 UpnP 相关警报的消息。为了避免误报,需要对默认规则进行修改和调试。

15、在某些情况下,您可能需要停止使用某些规则以避免误报。 探测器运行入侵检测系统的机器也称为探测器,因为它用于“探测”网络中的活动。在本书后面,如果使用了检测器这个词,它指的是运行 Snort 的计算机或其他设备。IDS 应该放置在网络中的什么位置?根据您的网络拓扑,您应该将 IDS 放置在一个或多个位置。 IDS 的位置还取决于您要检测的入侵类型:外部入侵、外部入侵或两者兼有。例如,如果您只想检测外部入侵活动,并且只有一台路由器连接到 Internet,那么放置 IDS 的最佳位置可能就在路由器或防火墙的外部网络接口旁边。如果您有多个访问 Internet 的借口,也许您想在每个入口处放置一个

16、IDS。有时您还希望能够检测到来自外部的威胁,因此您可以在每个网段上放置一个 IDS。很多情况下,不需要对所有网段实施入侵检测,可以只在敏感区域放置IDS。你知道,更多的 IDS 意味着更多的工作和维护成本。因此,部署 IDS 取决于您的安全策略,即您要防止什么样的入侵。图 1-4 显示了 IDS 通常放置的典型位置。如图 1-4 所示,通常应该在每个路由器和防火墙后面放置一个 IDS,对于网络中的非军事区 (DMZ),在 DMZ 中也应放置 IDS。需要注意的是,DMZ 中的 IDS 警报策略不应像专用网络中那样严格。1.1.3 蜜罐蜜罐是一种旨在通过故意暴露已知弱点来欺骗黑客的系统。当黑客

17、发现蜜罐时,他们通常会花一些时间在上面,在此期间您可以记录黑客的行为以了解黑客在做什么以及他们正在使用的技术。一旦您了解了这些技术,您就可以使用您获得的信息来强化您的真实服务器。有很多方法可以构建和放置蜜罐。蜜罐上应该有一些暴露的服务,这些服务包括Telnet服务(23端口)、服务(80端口)、FTP服务(21端口)等等。您应该将蜜罐放置在靠近应用程序服务器的地方,这样黑客很容易将蜜罐误认为是真正的应用程序服务器。例如,如果您的应用服务器的 IP 地址是 1 和 3,那么您可以将您的蜜罐的 IP 地址设置为 2,并设置您的防火墙和路由器,以便黑客可以访问服务器。对端口的访问被重定向到蜜罐,然后

18、入侵者将蜜罐当作真正的服务器。您应该仔细考虑警报生成机制,以便在您的蜜罐受到威胁时立即获得信息。将日志保存在不同的机器上是个好主意,这样即使黑客闯入蜜罐,也无法删除日志文件。那么什么时候应该安装蜜罐呢?这取决于你的情况:如果您的组织有足够的资源来追踪黑客,那么您应该设置一个蜜罐。所谓资源包括硬件和人力。如果您没有足够的资源,那么拥有蜜罐是没有意义的,因为您知道获取不会使用的信息是没有意义的。只有当你能以某种方式使用蜜罐获得的信息时,蜜罐才有用。如果你想收集行为证据来起诉黑客,你也可以使用蜜罐。理想情况下,蜜罐应该看起来像一个真实的系统,你可以制作一些虚假的数据文件、虚假账户等,以说服黑客相信它

19、,这样黑客就可以在上面挂上足够长的时间,以便你可以记录更多活动.可以在蜜罐项目/上获取更多信息,可以找到一些自己感兴趣的信息,对蜜罐有进一步的了解。您还可以访问另一个 /u/provos/honeyd/ HYPERLINK %20%20%20%20:/%20%20%20%20/u/provos/honeyd/ 以获取有关其开源秘密罐的信息。获取更多信息的其他一些地方是:南佛罗里达蜜罐项目: HYPERLINK %20%20%20%20:/%20%20%20%20 .相关白皮书: HYPERLINK %20%20%20%20:/%20%20%20%20/whites/howto.html ./w

20、hites/howto.html1.1.4 安全区域和信任级别前段时间,网络被分为两大类:安全和非安全。有时这种划分也意味着网络在路由器或防火墙之内或之外。当今的典型网络通常根据不同的安全策略级别和信任级别划分为多个区域。比如公司财务部门的安全级别非常高,在这个领域只内容少数几个服务运行,不内容互联网服务;而在 DMZ 或非军事区,网络是对互联网开放的,这个区域的信任程度与财务部门的信任程度有很大不同。根据信任级别和安全策略,您应该在不同的领域应用不同的入侵检测规则和策略。需要不同安全级别的网络在物理上是分开的。您可以安装一组具有不同规则的 IDS,以检测具有不同安全要求的每个区域中的可疑网络

21、活动。例如,如果财务部门的网络中没有Web服务器,那么定向到80端口的数据包将被记录为入侵,并且这样的规则不能在DMZ中使用,因为DMZ中的Web服务器对所有人开放.IDS 策略在您可以在网络中安装 IDS 之前,您必须制定策略来检测入侵者并采取相应措施。策略必须能够规定一组规则以及应如何应用这些规则。 IDS 策略应包含以下内容,您可以根据自己的要求添加更多内容:谁将查看 IDS 信息? IDS 为您提供了一种生成入侵警报的机制。报警系统要么是简单的文本文件形式,要么是更复杂的形式,可能集成到 HpOpenView 等网络管理软件或 MySQL 等数据库中。您的系统中需要有人负责监控入侵和制

22、定策略。入侵行为可以通过弹窗或网页实时监控。在这种情况下,操作人员必须了解警报的含义以及警报消息中事件的安全级别。谁将管理 IDS、维护日志等?对于所有系统,都需要建立日常维护系统,IDS也是如此。谁处理安全事件?如果没有安全事件处理机制,根本不需要安装IDS。根据安全事件的安全级别,某些情况可能需要政府机构的参与。事件处理程序是什么样的?该策略应定义一些事件响应机制,根据所涉及的安全级别向不同的管理层报告。例行报告:总结前一天、一周或一个月发生的事情。特征库升级:黑客总是在创造新的攻击手段。如果 IDS 了解攻击的特征,它就可以检测到攻击。 Snort 规则使用攻击特征库来检测攻击。由于攻击

23、的特征是不断变化的,因此您还必须为您的 IDS 规则更新特征数据库。您可以直接在 Snort 上定期获取签名数据库的更新,或者在发现新的攻击方法时自行更新。每个项目都需要一个文档系统。 IDS 策略应描述检测到攻击时应记录哪些文档。文档可以包括简单的日志或完整的入侵记录。您还可以通过多种方式记录数据。例行报告也是文档的一部分。根据您的 IDS 策略,您可以准确了解您的网络需要多少 IDS 检测器和其他资源,并更准确地计算 IDS 的成本和费用。Snort 的组成部分Snort 在逻辑上可以分为多个组件,这些组件协同工作以检测特定功能并生成满足特定要求的输出格式。基于 Snort 的 IDS 由

24、以下主要组件组成:包解码器预处理器检测引擎日志和警报系统输出模块图 1-5 显示了这些部分的关系。来自互联网的任何数据包到达数据包解码器,然后被致到输出模块,在那里它要么被丢弃,要么生成日志或警报。在本节中,我们将简要介绍这些部分。通读本书并建立一些规则后,您将更加熟悉这些组件之间的交互方式。1.3.1 数据包解码器数据包解码器从不同的网络接口获取数据包,并为预处理或致到检测引擎做准备。网络接口可以是以太网、SLIP、PPP等。1.3.2 预处理器预处理器是一个组件或插件,Snort 在检测引擎执行某些操作以查明数据包是否用于入侵之前安排或修改数据包。一些预处理器还可以通过在数据部分发现异常并

25、生成警报来执行一些检测工作。预处理器的工作对于任何IDS检测引擎根据规则分析数据都非常重要。黑客有许多欺骗 IDS 的技术。例如,如果你创建这样一个规则来查找包中包含“scripts/iisadmin”的入侵签名,如果你将字符匹配到过于严格的限制,那么黑客只需要做一些小变通,他们就可以轻松地欺骗你.例如:“脚本/./iisadmin”“脚本/示例/./iisadmin”“脚本/.iisadmin”更复杂的是,黑客还在字符中嵌入了 16 位 URI 字符或 Unicode 字符,这对 Web 服务器同样合法,请注意 Web 服务器理解所有这些字符并将它们视为“脚本/iisadmin”人物。如果

26、IDS 严格匹配某个字符串,则可能无法检测到此类攻击。预处理器可以重新排列字符,以便 IDS 可以检测到它们。预处理器也可用于打包分片的组装。当向主机致大数据流时,通常数据包会被分段。例如,以太网中默认的最大数据包大小为 1500 字节,这是由网络接口的 MTU(Maximus Transfer Unit)值决定的。这意味着如果您致大于 1500 字节的数据,它将被拆分为多个数据包,以便每个数据包的大小小于或等于 1500 字节。接收系统可以将这些小片段重新组合回原始数据包。在 IDS 上,还需要重新组装数据包才能对其进行表征。例如,可能的入侵签名通常在一个数据包分片上,而另一半在其他分片上。

27、为了让检测引擎准确分析特征,需要组装所有分片。黑客还使用数据分片来对抗入侵检测系统。预处理器用于对抗这些攻击。 Snort 的预处理器可以组装数据片段、解码 URI、重新组装 TCP 流等等。这些功能是 IDS 中非常重要的部分。1.3.3 检测引擎检测引擎是Snort最重要的部分,它的作用是检测数据包是否包含入侵行为。检测引擎通过 Snort 规则执行此操作。规则被读入部分数据结构或链表并与所有数据包进行比较。如果一个数据包符合规则,就会产生相应的动作(记录或报警等),否则该数据包将被丢弃。检测引擎是 Snort 中与时间相关的组件。根据您机器的处理能力和您定义的规则数量,检测引擎将花费不同

28、的时间来响应不同的数据包。当 Snort 在 NIDS 模式下工作时,如果网络中的数据流量过多,有时可能会因为无响应而丢弃一些数据包。检测引擎上的负载取决于以下因素:规则数运行 Snort 的机器的处理能力运行 Snort 的机器的部分总线速度网络负载在设计 NIDS 时,应考虑所有相关因素。您需要了解探测系统可以解析数据包并将规则应用于高的不同部分,这些部分可能是:数据包的IP头数据包的传输层头,包括TCP、UDP或其他传输层协议头,也可以是ICMP头。应用层标头。应用层标头包括 DNS 标头、FTP 标头、SNMP 标头、SMTP 标头等等。有时可以使用一些间接的方法来获取应用程序头信息,

29、例如位偏移等。数据包有效载荷。这意味着您可以构建一个规则,使用检测引擎在传输的数据中查找字符。检测引擎在不同版本的 Snort 中工作方式不同。在所有 1.x 版本的 Snort 中,一旦检测引擎将数据包与规则匹配,它就会停止进一步处理,然后根据规则生成警报或日志,这意味着即使数据包匹配多个规则,也只有第一个应用规则,不进行其他匹配,这是有益的,但以下情况除外:如果数据包匹配的第一条规则是低优先级,则仅生成低优先级。警告,即使此数据包也匹配其他具有高优先级的规则。这个问题在 Snort 的第二个版本中得到了修复:包在生成警报之前首先匹配所有规则,并且在所有规则都匹配后,选择优先级最高的规则警报

30、。Snort 的检测引擎第 2 版被完全重写,比以前的版本快得多。在撰写本文时,Snort 2.0 尚未发布,早期的测试表明新引擎比旧引擎快了近 18 倍。1.3.4 日志和报警系统根据包中的内容,包可用于记录行为或生成警报。日志可以存储为简单的文本文件、tcpdump 格式文件或其他形式。默认情况下,所有日志文件都存储在 /var/log/snort 目录中。您可以在命令行上使用 -l 选项来更改日志和警报的存储位置。更多命令行选项将在下一章讨论。这些选项可用于修改日志和警报的类型和详细信息等。1.3.5 输出模块输出模块或插件可以执行不同的操作,具体取决于您指定如何保存由日志记录和警报系统

31、生成的输出信息。基本上,这些模块用于控制日志和警报系统生成的输出信息的格式。根据配置,输出模块可以执行以下操作:只需登录 /var/log/snort/alerts 或其他文件致 SNMP 陷阱登录到 MySQL 或 Oracle 等数据库。您将在本书后面了解更多关于使用 MySQL 的知识生成 XML 输出修改路由器或防火墙的配置向 Windows 主机致 SMB 消息其他工具可用于以消息或网页视图等格式致警报,您将在后面的章节中了解有关它们的更多信息。表 1-1 总结了 IDS 的各种组件。表 1-1 IDS 的组成部分姓名描述包解码器准备要处理的包裹预处理器或输入插件分析协议标头、规范标

32、头、检测标头异常、组装数据包片段和组装 TCP 流检测引擎将包与规则进行比较日志和警报系统生成警报和日志输出模块将警报和日志输出到最终目的地1.4 关于开关根据您使用的交换机,您将有多种方法在交换机端口上安装 Snort 机器。某些交换机(例如 CISCO)内容您将所有流量复制到连接 Snort 机器的端口,该端口通常称为 Spanning 端口。安装 Snort 的最佳位置是直接在路由器或防火墙后面,以便 Snort 可以在所有 Internet 流量进入交换机或集线器之前捕获它。例如,您的防火墙有一条 T1 线路连接到 Internet,并使用交换机连接部分网络。典型的连接方案如图 1-6

33、 所示:如果您的交换机有 Spanning 端口,您可以将 IDS 适配器连接到 Spanning 端口,如图 1-7 所示,以便 IDS 可以看到所有到 Internet 的流量以与部门通信。您还可以将 IDS 连接到防火墙和交换机之间的 HUB,这样所有传入和传出的流量也对 IDS 可见,如图 1-8 所示。但需要注意的是,如果IDS按照图1-8进行布置,那么IDS将无法获取对外通信的数据包,只能看到与Internet的通信。这种方案对于外部网络是可信的,预期的攻击从外部非常有用。1.5 跟踪TCP数据流Snort 添加了一个名为 Stream4 的新预处理器,它可以同时处理数千个并发数据

34、流。它的配置将在第 4 章讨论。它可以重组 TCP 数据流并执行状态检查。这意味着您可以组装一个特定的 TCP 会话,并在使用多个 TCP 数据包执行攻击的方式中发现异常。您还可以查找进出特定服务器端口的数据包。1.6 Snort 支持的平台Snort 支持多种硬件平台和操作系统。 Snort 目前支持以下操作系统: Linux OpenBSD NetBSD Solaris(Sparc或 i386) HP-UX AIX IRIX 苹果系统 窗户您可以访问 Snort 的 HYPERLINK %20%20%20%20:/%20%20%20%20 .以获取 Snort 当前支持的平台列表。1.7

35、如何保护IDS本身一个关键问题是,如何保护运行IDS的系统?如果 IDS 本身的安全性受到威胁,您收到的警报可能是错误的,或者您可能根本收不到警报。入侵者可能会在进行实际攻击之前禁用 IDS。有很多方法可以保护您的系统,从一般建议到一些复杂的方法,其中一些在下面提到:您可以做的第一件事是不在运行 IDS 探测的机器上运行任何服务。 Web 服务是探索系统的最常用方法。当出现新的威胁时,供应商会发布相应的补丁,这只是一个持续的、永无止境的过程。您的 IDS 应该有制造商提供的最新补丁。例如,如果您的 Snort 在 Windows 机器上运行,您应该安装 Microsoft 发布的所有最新安全补

36、丁。配置您的 IDS 机器,使其不会响应 ping(ICMP 回显)。如果您在 Linux 机器上运行 IDS,请使用 netfileter/iptables 阻止任何不必要的数据,Snort 仍然可以看到所有数据包。如果您的 IDS 机器仅用于入侵检测,那么除非绝对必要,否则不要在其上执行任何其他活动来设置其他用户帐户。除了这些通用的方法,Snort 还可以在一些特殊的方法下应用。下面有两种特殊的技术可以防止 Snort 受到攻击。1.7.1 在 Stealth 界面上运行 Snort您可以在仅侦听传入数据包而不向外界致任何数据包的隐形端口上运行 Snort。在隐形端口上,我们使用一根特殊的

37、电缆,在运行 Snort 的主机上,将端口的引脚 1 和 2 短接,并将引脚 3 和 6 短接到另一端。您可以在 Snort 的常见问题解答页面 /./docs/faq.html 上找到有关此方法的更多信息。1.7.2 在没有IP地址的接口上运行Snort您还可以在未配置 IP 地址的接口上运行 Snort。例如,在 Linux 机器上,您可以使用“ifconfig eth0 up”之类的命令来激活接口 eth0,而无需配置 IP 地址。这种方法的好处是因为 Snort 主机没有 IP 地址,所以没有人可以访问它。您可以在 eth1 上配置 IP 地址以访问此探针。请参见图 1-9。在 Win

38、dows 系统上,您可以使用未绑定 TCP/IP 协议的接口,这样该接口上就不会出现 IP 地址。不要忘记禁用其他协议和服务。在某些情况下,当接口没有配置IP地址时,会遇到wincap(Windows用来抓包的库)不可用的提示。如果遇到这样的情况,可以使用以下方法:在要创建隐蔽端口的网络接口上配置 TCP/IP 协议,同时禁用所有其他协议和服务。启用 DHCP 客户端。禁用 DHCP 服务器。这将使网络接口没有IP地址,网络接口仍然可以绑定TCP/IP协议。1.8 相关资源1.入侵检测常见问题解答: ./newlook/resources/IDFAQ/ID_FAQ.htm2.蜜罐项目: /3.

39、 Snort 常见问题解答: ./docs/faq.html4. Honeyd蜜罐: ./u/provos/honeyd/5.Winpcap : winpcap.polito.it/ _6.思科系统: .cisco。7.检查点: .checkpoint。8.网屏: .netscreen 。9.网络过滤器: .10.打鼾: .11. Nmap工具: .12. Nessus : .13. MySQL数据库: .14.酸: ./kb/acid15. Apache 网络服务器: .安装 Snort 并开始前期工作Snort 可以作为守护进程安装,也可以作为包含许多其他工具的完整系统安装。如果您只是安装

40、 Snort,您可以获得受感染数据的文本或二进制文件,然后可以使用文本编辑器或其他工具(如 Barnyard)查看,如本书后面所述。在安装简单的情况下,还可以将告警信息以SNMP Trap的形式致到HP OpenView或OpenNMS等网管系统。警报消息也可以以 SMB 弹出窗口的形式致到 Windows 机器。如果您使用其他工具安装它,您可以执行更复杂的操作,例如将 Snort 数据致到数据库并通过 Web 界面对其进行分析。分析工具可以让您更直观地查看捕获的数据,而无需花费大量时间处理晦涩的日志文件。下面列出了一些其他可以使用的工具,它们都没有特定的任务。一个全面的 Snort 系统使用

41、这些工具来提供一个带有后端数据库的 Web 用户界面。Snort 使用 MySQL 来记录警报日志。也可以使用类似于 Oracle 的数据库,但 MySQL 更常用于 Snort 环境。事实上,Snort 可以使用任何兼容 ODBC 的数据库。Apache 作为 Web 服务器PHP 用作 Web 服务器和 MySQL 数据库之间的接口。ACID 是一个 PHP 包,用于通过 Web 界面分析 Snort 数据。ACID 使用 GD 库生成图形PHPLOT 用于在 ACID 的 Web 界面中以图形的形式呈现数据。为了使 PHPLOT 工作,必须正确配置 GD 库。ACID 使用 ADODB

42、连接到 MySQL 数据库。2.1 Snort安装方案Snort 的安装方法取决于运行环境。下面列出了一些典型的安装方案供参考。您可以根据自己的网络情况进行选择。2.1.1 测试安装安装简单,仅包括一个 Snort 探测器。 Snort 将数据记录到文本文件中。日志文件供 Snort 管理员随后查看。由于实际应用中分析日志的成本比较高,所以这种方法只适用于测试环境。要以这种方式安装 Snort,您可以在 HYPERLINK %20%20%20%20:/%20%20%20%20 .获得编译后的版本。对于 RedHat Linux,您可以下载 RPM 包。对于 Windows 系统,您可以下载可执

43、行文件并将其安装在您的系统上。2.1.2 安装单个探测器的应用 IDS单探测器 Snort 安装适用于只有一条 Internet 线路的小型网络。将探测器放在路由器或防火墙后面,以检测进入您系统的入侵者。但如果您对所有 Internet 流量感兴趣,您也可以将传感器放置在防火墙之外。在这种安装方式中,您可以从 HYPERLINK %20%20%20%20:/%20%20%20%20 S下载编译后的版本,也可以下载源代码并根据自己的需求进行编译,以获得您需要的功能。这个要求是在编译版本中完成的。不够。本章详细讨论了 Snort 编译步骤。在应用系统安装中,还可以自动启动和关闭Snort,使系统启

44、动时自动启动Snort。如果您在 Linux 中安装已编译的版本,RPM 包将为您完成此操作。在 Windows 上,您可以将 Snort 作为服务或在启动组中的批处理文件中启动。 Windows 相关问题在第 8 章中讨论。日志将被记录为文本文件或二进制文件,并使用类似于 SnortSnarf 的工具分析数据。 SnortSnarf 将在第 6 章中详细讨论。2.1.3 单探测器与网管系统的集成在应用系统中,您可以配置 Snort 向网管系统致 Trap。在企业应用中,有多种网络管理系统在使用。最常见的商用网管系统公司有惠普、IBM、Computer Associates等。Snort 使用

45、 SNMP 陷阱集成到网络管理系统中。当您阅读本章中的 Snort 编译步骤时,您将了解 Snort 如何提供 SNMP 功能。第 4 章提供了有关配置 SNMP 陷阱目标、团体名称等的更多信息。2.1.4 带数据库和网络界面的单探测器Snort 最常见的用法是与数据库集成。该数据库用于记录,然后可以通过 Web 界面访问。此类安装的典型设置包括 3 个基本组件:鼻息检测器数据库服务器网络服务器Snort 将日志记录到数据库中,您可以通过与其连接的 Web 浏览器查看该数据库。这种方案可以在第一章的图1-1中看到。这三个组件也可以安装在同一个系统上,如第一章的图1-2所示。Snort 可以与不

46、同类型的数据库一起使用,例如 MySQL、PostgresSQL、Oracle、Microsoft SQL Server 和其他 ODBC 兼容的数据库。 PHP 用于从数据库中获取数据并生成页面。这样的安装为您提供了一个易于管理的功能齐全的 IDS,具有用户友好的界面。为了让您能够使用数据库登录,您必须向 Snort 提供数据库用户名、密码、数据库名称和数据库服务器的地址。在单探针场景中,如果数据库服务器安装在运行传感器的机器上,则可以使用“localhost”作为主机名。编译 Snort 时,选择记录数据库功能,本章稍后将详细介绍。第 4、5 和 6 章讨论了 Snort 使用数据库的配置

47、。2.1.5 使用集中式数据库管理多个 Snort 检测器在分布式环境中,您可能需要在多个位置安装 Snort 检测器。管理所有这些探测器并分析它们单独收集的数据是一项艰巨的任务。在企业应用程序中,有多种方法可以将 Snort 设置为分布式 IDS。一种方法是将多个检测器连接到同一个中央数据库,如图 1-3 所示。所有探测器生成的数据都存储在该数据库中。还要运行类似于 Apache 的 Web 服务器。然后,用户可以使用网络浏览器查看这些数据并进行分析。但是要明白这种配置存在一些实际问题:启动 Snort 时,所有探针必须能够访问数据库,否则,Snort 将终止进程。必须保证检测器始终可以访问

48、数据库,否则数据将丢失。如果探测器和数据库服务器之间有防火墙,则需要打开相应的端口,这有时与防火墙的安全策略不匹配或违反了安全策略。当探针无法直接访问数据库服务器时,有一些解决方法。可以将探针配置为在本地存储文件,然后使用 SCP 等工具定期将这些文件上传到中央数据库服务器。 SCP 是一种使用 SSH 协议进行安全文件传输的工具。防火墙管理员希望内容 SSH 端口上的流量。您可以使用 Snort 本身、Barnyard 或其他工具从日志文件中提取数据并将它们放入数据库中,以便以后使用 Web 界面查看。这种方法的唯一问题是数据库中的数据不是严格的“实时”数据。延迟的大小取决于您使用 SCP

49、将数据上传到中央数据库服务器的频率。该方法如图 2-1 所示。请注意,中央数据库服务器必须运行 SSH 服务器才能使用 SCP 上传数据。如第 1 章所述,本书的最终目的是帮助您安装 Snort 并使所有软件包协同工作。当您阅读本书时,您将了解这些组件如何相互作用和协同工作以形成一个完整的入侵检测系统。本书所涉及的软件可以在本书的 authors.phpktr./rhman/ 处获得源代码。您还可以在此找到一些脚本,以帮助您在新系统上轻松安装这些软件包。事实上,使用本书中提到的一些脚本,您可以以根用户身份使用几条命令行构建一个有效的 IDS。如果您的 Snort 版本比本书中介绍的版本更新,您

50、可以在argusnetsec./downloads 下载支持新版本 Snort 的脚本的最新版本。本书将详细介绍这些组件在 RedHat Linux 7.3 机器上的安装,但在其他版本的 Linux 或其他平台上的过程类似。为了本书的方便,所有组件都安装在 /opt 目录中。但是如果你使用编译好的包,安装位置可能会有所不同。当您使用本书或本书中的脚本时,文件将安装在此目录中。在本章中,您将学习如何将 Snort 作为独立产品安装,在后面的章节中,将介绍其他一些组件。您可以二进制形式或源代码形式获取 Snort。编译的二进制包适用于大多数安装。如前所述,如果要为 Snort 定制一些功能,则需要

51、下载 Snort 的源代码版本并自行编译。例如,有些人喜欢 SMB 警报,但其他人可能认为它们不安全。如果您需要不支持 SMB 警报的 Snort,则需要自己编译。对于 SNMP 陷阱、MySQL 等其他一些功能也是如此。自己编译 Snort 的另一个原因是您需要了解正在开发的代码。本章将指导您逐步安装 Snort。基本安装过程非常简单,Snort 已经为您提供了涵盖大多数已知攻击特征的预定义规则。当然,自定义安装仍然需要一些工作。2.2 安装 Snort在这一部分中,您将学习如何安装已编译的 Snort 以及如何自己编译和安装它。安装已编译的 RPM 包非常简单,只需几个步骤。但是如果您的

52、Snort 是源代码形式,则需要一些时间来理解和安装。2.2.1 使用 RPM 安装 Snort从 RPM 包安装 Snort 涉及以下步骤。 下载从 Snort (. ) 下载最新版本的 Snort。在撰写本文时,最新的二进制文件是snort-1.9.0-1snort.i386.rpm 。 安装运行以下命令来安装 Snort 二进制文件:rpm -安装 snort-1.9.0-1snort.i386.rpm此命令产生以下操作:创建 /etc/snort 目录,该目录将存储 Snort 的规则文件和配置文件。创建 /var/log/snort 目录,将存储 Snort 的日志文件。创建 /us

53、r/share/doc/snort-1.9.0 目录来存储 Snort 的文档文件。在此目录中,您会找到 FAQ、README 和其他一些文件。在 /usr/sbin 目录中创建一个名为 snort-plain 的文件,它是 Snort 守护进程。创建文件/etc/rc.d/init.d/snortd,它是启动和关闭脚本。在 RedHat Linux 中,它相当于 /etc/init.d/snortd。至此基本安装完成,您可以开始使用 Snort。此版本的 Snort 编译时不支持数据库,您只能使用 /var/log/snort 目录中的日志文件。 Snort 启动、停止和重启使用以下命令手动

54、启动 Snort:/etc/init.d/snortd 启动该命令将启动 Snort 守护进程,运行“ps -ef”命令,您可以看到类似以下的输出:根 15999 1 0 18:31? 00:00:01 /usr/sbin/snort -A 快速 -b -l /var/log/snort -d -D -i eth0 -c /etc/snort/snort.conf请注意,每次重新启动机器时,都必须手动启动 Snort。您可以通过创建文件来自动执行此过程,本章稍后将对此进行讨论。使用以下命令停止 Snort:/etc/init.d/snortd 停止使用以下命令重新启动 Snort:/etc/i

55、nit.d/snortd 重启2.2.2 从源代码安装 Snort为了能够从源代码安装 Snort,您必须首先构建它。您可以使用下面描述的步骤构建可执行的 snort。首先从 Snort (.) 获取最新版本的 Snort。在编写本书时,Snort 的最新版本是 1.9.0,下载文件的名称是snort-1.9.0.tar.gz ,下载后可以保存在 /opt 目录中。请注意,阅读本书时可能会有更新的版本,安装方法类似。 解压下载后,第一步解压源码,执行如下命令:tar zxvf snort-1.9.0.tar.gz这将创建 /opt/snort-1.9.0 目录。确保已将文件下载到 /opt 目

56、录并在此目录中运行 tar 命令。对于其他版本的 Snort,目录名可能不同,目录名会反映版本号。解压后可以运行tree命令观察tar命令创建的目录树,如下图是/opt/snort-1.9.0的目录树:rootconformix opt# tree -d snort-1.9.0snort-1.9.0|- 贡献|- 文档|- 等|- 规则|- 源| |- 检测插件| |- 输出插件| |- 预处理器| -win32| |- WIN32-代码| |- WIN32-包括| | |- 网络| | |- 网通| | |- 库网| | |- mysql| | - RPC| |- WIN32-库| | |-

57、 库网| | - mysql| - WIN32-项目- 模板21 个目录rootconformix opt#这些目录的主要内容如下:contrib 目录主要包含严格来说不属于 Snort 本身的应用软件,包括 ACID、MySQL 数据库生成脚本等。doc 目录包含文档文件。etc 目录包含配置文件。规则目录包含预定义的规则文件。所有源代码都在 src 目录下。模板适用于那些准备编写自己的插件的人,这对大多数 Snort 用户来说没有意义。 编译安装编译和安装过程包括以下3个步骤:运行配置脚本。运行制作命令。运行 make install 命令。要启动 Snort 编译过程,首先进入 /opt

58、/snort-1.9.0 目录并运行配置脚本。如果您刚刚开始使用类似 GNU 的软件,您需要了解配置脚本是开源软件包的常用工具。它可用于设置参数、创建 makefile 以及检测系统上的开发工具和库。运行配置脚本时,有许多命令行选项可确定将使用哪些组件编译 Snort。例如,通过这些选项,您可以构建对 SNMP、MySQL 或 SMB 警报和许多其他东西的支持。您还可以自定义 Snort 文件的最终安装位置。您可以使用“./configure -help”命令查看可用选项,如下所示:# ./configure -helpconfigure 配置这个包以适应多种系统。用法:./configure

59、 OPTION. VAR=VALUE.要分配环境变量(例如,CC、CFLAGS.),请将它们指定为VAR=值。有关一些有用变量的描述,请参见下文。选项的默认值在括号中指定。配置:-h, -help 显示此帮助并退出-help=短显示特定于这个包的选项-help=recursive 显示所有包含的包的简短帮助-V, -version 显示版本信息并退出-q、-quiet、-silent 不打印“正在检查.”消息-cache-file=FILE 缓存测试结果在 FILE 禁用-C, -cache-file=config.cache 的 -config-cache 别名-n, -no-create

60、不创建输出文件-srcdir=DIR 在 DIR 中查找源 配置 dir 或 .安装目录:-prefix=PREFIX 在 PREFIX 中安装与体系结构无关的文件/usr/本地-exec-prefix=EPREFIX 在 EPREFIX 中安装架构相关文件字首默认情况下,make install 将安装所有文件/usr/local/bin, /usr/local/lib 等你可以指定使用 -prefix 的安装前缀,而不是 /usr/local,例如-prefix=$HOME。为了更好地控制,请使用以下选项。微调安装目录:-bindir=DIR 用户可执行文件 EPREFIX/bin-sbi

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论