基于Snort的入侵检测系统31446

上传人:无*** 文档编号:152246206 上传时间:2022-09-15 格式:DOC 页数:53 大小:210KB
收藏 版权申诉 举报 下载
基于Snort的入侵检测系统31446_第1页
第1页 / 共53页
基于Snort的入侵检测系统31446_第2页
第2页 / 共53页
基于Snort的入侵检测系统31446_第3页
第3页 / 共53页
资源描述:

《基于Snort的入侵检测系统31446》由会员分享,可在线阅读,更多相关《基于Snort的入侵检测系统31446(53页珍藏版)》请在装配图网上搜索。

1、.基于Snort的入侵检测系统用Snort,Apache,MySQL,PHP与ACID构建高级IDS第一章 入侵检测系统与Snort介绍在当今的企业应用环境中,安全是所有网络面临的大问题。黑客和入侵者已成功的入侵了一些大公司的网络与。目前已经存在一些保护网络架构与通信安全的方法,例如防火墙、虚拟专用网(VPN)、数据加密等。入侵检测是最近几年出现的相对较新的网络安全技术。利用入侵检测技术,我们可以从已知的攻击类型中发现是否有人正在试图攻击你的网络或者主机。利用入侵监测系统收集的信息,我们可以加固自己的系统,与用作其他合法用途。目前市场中也有很多弱点检测工具,包括商品化的和开放源码形式的,可以用

2、来评估网络中存在的不同类型的安全漏洞。一个全面的安全系统包括很多种工具:l 防火墙:用来阻止进入与走出网络的信息流。防火墙在商业化产品和开放源码产品中都有很多。最著名的商业化防火墙产品有Checkpoint (.checkpoint.), Cisco (.cisco.)与Netscreen(.netscreen.)。最著名的开放源码防火墙是Netfilter/Iptables(.netfilter.org)。l 入侵检测系统(IDS):用来发现是否有人正在侵入或者试图侵入你的网络。最著名的IDS是Snort,可以在.snort.org下载。l 弱点评估工具:用来发现并堵住网络中的安全漏洞。弱点

3、评估工具收集的信息可以指导我们设置恰当的防火墙规则,以挡住恶意的互联网用户。现在有许多弱点评估工具,比如Nmap(.nmap.org/)和Nessus(.nessus.org/).以上这些工具可以配合使用,交互信息。一些产品将这些功能捆绑在一起,形成一个完整的系统。Snort是一个开放源码的网络入侵检测系统(NIDS),可以免费得到。NIDS是用来检测网络上的信息流的入侵检测系统(IDS)。IDS也包括安装在特定的主机上并检测攻击目标是主机的行为的系统。IDS迄今为止还是一门相当新的技术,而Snort在IDS中处于领先的地位。本书由入侵检测介绍与相关概念入手,你将学习如何安装与管理Snort以

4、与与Snort协同工作的其他产品。这些产品包括MySQL数据库(.mysql.org)、入侵数据库分析管理工具ACID(.cert.org/kb/acid)。Snort能够将日志数据(例如告警和其他日志消息)记录到数据库中。MySQL用作存储所有这些数据的数据库引擎。利用ACID与Apache (.apache.)Web服务器,我们可以分析这些数据。Snort、Apache、MySQL与ACID的共同协作,使我们可以将入侵检测数据记录到数据库,然后用web界面察看和分析这些数据。此书的组织结构使读者能够跟着随后的章节一步一步的建立一个完整的入侵检测系统。安装与整合各种工具的步骤将在如下的章节逐

5、步介绍:第二章将介绍编译与安装Snort的基本知识。在这一章中,你将能够用基本安装与默认规则建立一个能够工作的IDS,同时能够建立可以记录入侵活动的日志文件。第三章介绍Snort规则的有关知识,Snort规则的组成与如何根据你的系统环境与需要建立自己的规则。建立良好的规则是构建入侵检测系统的关键,因此本章非常重要。本章同时也介绍Snort不同版本间规则的不同。第四章介绍input与output插件。插件与Snort一同编译,并用来调整检测引擎的输入和输出部分。Input插件用在实际检测过程发生前准备好捕获的数据包。Output插件用来将数据数据格式化,以用于特定的目的,例如一种output插件

6、可以将输出的检测信息转换成SNMP trap信息,而另外一种output插件可以将信息转换成数据库信息。这一章将详细介绍如何配置与使用这些插件。第五章介绍MySQL数据库与Snort的共同工作。MySQL插件使Snort能够将日志数据记录到数据库以便随后的分析。在这一章中,你将了解如何在MySQL中建立数据库,如何配置数据库插件,以与将日志数据记录到数据库中。第六章介绍ACID,以与如何用ACID取得你在第五章建立的数据库中的信息,并用Apache服务器显示它。ACID一种提供丰富的数据分析能力的重要工具,你可以用它来取得攻击频率、攻击类别、察看这些攻击方法的相关资源等等。ACID用PHP脚本

7、语言、图形显示库(GD library)和PHPLOT(一种用来绘制图表的工具)来工作,可以分析SQL中的数据并绘制图表。第七章主要介绍可以和Snort一起工作的其他一些有用的工具。在读完此书后,你将建立一个完整的,具有多个组件的系统,如图1-1所示。在图中你可以看到,Snort捕获并分析数据,然后用output插件将数据储存在MySQL数据库中。Apache服务器在ACID,PHP、GD library与PHP包的帮助下使连接到服务器的用户能够通过浏览器显示数据。用户可以在网页上应用不同的查询来分析、备份、删除数据或者显示图表。基本上,你可以将Snort、MySQL、Apache、PHP、A

8、CID、GD库以与ACID都安装到一台计算机上,而实际上在读完本书后,你可以建立一个类似于如图1-2所示得更加贴近实际应用的系统。在企业中,人们通常使用多个Snort探测器,在每个路由器或者防火墙后面都放置探测器。在这种情况下,你可以用一个集中的数据库来收集所有探测器的信息,并在这个数据库服务器上运行Apache Web服务器,如图1-3所示。1 1 什么是入侵检测?入侵检测是指用来检测针对网络与主机的可疑活动的一系列技术和方法。入侵检测系统基本可以分为两大类:基于特征的入侵检测系统和异常行为检测系统。入侵者常具有用软件可以检测到的特征,如病毒。入侵检测系统将检测包含已知入侵行为特征或者异常于

9、IP协议的数据包。基于一系列的特征与规则,入侵检测系统能够发现并记录可疑行为并产生告警。基于异常的入侵检测系统通常是分析数据包中协议头部的异常,在某些情况下这种方式要比基于特征的入侵检测系统要更好一些。通常情况下,入侵检测系统在网络上捕获数据包与规则比对或者检测其中的异常。Snort基本上是一个基于规则的IDS,但是input插件可以分析协议头部异常。Snort的规则存储在文本文件中,并可以用文本编辑器修改。规则以类别分组。不同类别的规则存储在不同的文件中。最后,这些文件被一个叫做snort.conf的主配置文件引用。Snort在启动时读取这些规则,并建立部数据结构或链表以用这些规则来捕获数据

10、。发现入侵特征并利用规则捕获它们是一项具有技巧性的工作,因为在实时检测中你应用越多的规则,那么你将需要越多的处理能力,所以用尽量少的规则来捕获尽量多的特征是非常重要的。Snort已经预先定义了许多入侵检测规则,并且你可以自由添加自定义的规则。同时,你也可以移除一些建规则以防止错误告警。111 一些定义在详细了解入侵检测与Snort之前,你需要了解一些网络安全相关的定义,这些定义将在这本书的随后章节中重复应用。对这些名词的基本了解对于理解其他更加复杂的安全概念是非常必要的。1111 IDS入侵检测系统或IDS是一种用来检测入侵行为的软件、硬件或者两者的结合。Snort是大众可以获得的开放源码的I

11、DS。IDS的实际能力依赖于组件的复杂度与精巧性。实体的IDS是硬件和软件的结合,很多公司可以提供与决方案。如前面提到的,IDS可以采用特征分析技术、异常检测技术,或者两者同时应用。1112 网络IDS或NIDSNIDS是用来捕获在网络介质上传播的数据并与特征数据库比对的入侵检测系统。跟据数据包与特征数据库的匹配情况,IDS产生告警或者将日志记录到文件或数据库中。Snort主要是作为NIDS来使用的。1113 主机IDS或HIDS面向主机的入侵检测系统或称HIDS作为一个代理安装在一台主机上,这种入侵检测系统可以分析系统与应用程序日志来检测入侵行为。其中一些HIDS是被动状态的,只有当某些事情

12、发生了才会通知你,另外一些是主动状态的,可以嗅探网络中针对某一主机的通信状况并实时产生告警。1114 特征特征是数据包中包含信息的特点。特征用来检测一种或多种攻击行为。例如,目标是你的web服务的包中如果出现“scripts/iisadmin”,可能意味着一个入侵尝试。根据攻击行为本质的不同,特征数据可能会出现在数据包中的不同位置。例如,你可能会在IP、传输层头(TCP或UDP头)与/或应用层头或载荷中发现攻击特征。你将在本书的后面更多的了解攻击特征。通常IDS依靠特征来发现入侵行为。在发现新的入侵特征时,某些商业化的IDS需要从厂商那里得到更新的特征库。另外一些IDS,比如Snort,你可以

13、自己更新特征库。1115 告警告警是任何一种对入侵行为的通知。当IDS检测到入侵者,它将用告警来通知安全管理员。告警的形式可以使弹出窗口、终端显示与发送e-mail等等。告警同时也被存储到日志文件或者数据库中,以便供安全专家察看。在本书的后面,你将得到关于告警的详细信息。Snort的告警由output插件控制,并可以产生多种形式的报警。Snort也可以将同一个告警发送到不同的目标,例如,将告警发送到数据库的同时,产生SNMP trap信息。一些插件可以修改防火墙配置,使入侵者在防火墙或者路由器上被控制。1116 日志日志信息通常存放在文件中。默认情况下,Snort将这些信息存放在/var/lo

14、g/snort目录下,但是也可以在启动Snort时用命令行开关来改变这个目录。日志信息可以存储为文本格式或者二进制格式,二进制格式的文件可以供Snort或者Tcpdump随后访问,现在也有一个叫做Barnyard的新工具可以分析Snort产生的二进制日志文件。将日志存放为二进制文件可以有更高的效率,因为这种格式开销相对较低。将Snort应用在高速网络环境中,将日志存放为二进制文件是非常必要的。1117 误告警误告警是错误的将非入侵行为报告为入侵行为的告警。例如,部主机的错误配置有时会产生触发规则,从而产生误告警。某些路由器,例如Linksys家用路由器,会产生一些信息,导致UpnP相关的告警。

15、为了避免误告警,你要修改和调试默认规则,在某些情况下,你也许需要停止一些规则的使用,以避免误告警。1118 探测器运行入侵检测系统的机器也叫做探测器,因为它用来“探测”网络中的活动。在本书的后面部分,如果用到探测器这个词,那么它是指运行Snort的计算机或者其他设备。112 IDS应该放在网络中的什么位置?根据你的网络拓扑结构的不同,你应该在一个或多个位置放置IDS。IDS放置的位置也要取决于你想检测的入侵行为的种类:部入侵、外部入侵,或者两个都要检测。例如,如果你想仅仅检测外部入侵活动,并且你只有一个路由器接到Internet,那么放置IDS的最佳位置也许紧靠着路由器或者防火墙的部网络接口。

16、如果你有多条接入Internet的借口,也许你希望在每个入口处放置一台IDS。有时你也希望能够检测来自部的威胁,那么可以在每个网段都放置一台IDS。在很多情况下,你并不需要在所有网段都实施入侵检测,你可以仅仅在敏感区域放置IDS。要知道,越多的IDS就意味着越多的工作量和维护费用。因此IDS的部署要取决于你的安全策略,也就是你想防什么样的入侵。图1-4表示通常放置IDS的典型位置。正如你在图1-4中看到的那样,通常你应该在每个路由器和防火墙的后面放置IDS,在你的网络中包含非军事化区(DMZ)的情况下,在DMZ中也可以放置IDS。要注意的是,DMZ中的IDS告警策略不应像专用网络中那样严格。1

17、13 蜜罐(Honey Pots)蜜罐是一种以故意暴露已知弱点来愚弄黑客的系统。当黑客发现蜜罐时,通常会在它上面耗费一些时间,在此期间,你可以记录黑客的行为,从中找出黑客的活动情况和所使用的技术。一旦你了解了这些技术,你可以利用你得到的信息来加固你真正的服务器。现在有很多种构建和放置蜜罐的方法。在蜜罐上应该运行一些公开的服务,这些服务包括Telnet服务(端口23),服务(端口80),FTP服务(端口21)等等。你应该将蜜罐放在你紧靠你应用服务器的某个位置,这样黑客容易错误的将蜜罐当成真正的应用服务器。例如,如果你的应用服务器的IP地址势192.168.10.21和192.168.10.23,

18、那么你可以将你的蜜罐的IP地址设为192.168.10.22,同时设置你的防火墙和路由器,使黑客对服务器某些端口的访问重定向到蜜罐上面,那么入侵者就会把蜜罐当成是真正的服务器。你应当仔细的考虑告警产生机制,以使你的蜜罐受到威胁的时候可以立刻得到信息。将日志存放在其他机器上是个好主意,这样即使黑客侵入了蜜罐,也无法删除日志文件。那么什么时候你应该安装蜜罐呢?那要根据你的情况来决定:n 如果你的有足够的资源用来追踪黑客,那么你应该建立一个蜜罐。所谓资源包括硬件以与人力。如果你没有足够的资源,那么安置蜜罐就没有什么必要,要知道获取你不会用到的信息是没有什么意义的。n 仅仅当你可以以某种方式来用蜜罐取

19、得的信息的时候,蜜罐才是有用的。n 如果你想收集有关行为的证据来起诉黑客,那么你也可以用到蜜罐。理想的情况下,蜜罐应该看起来像一个真实的系统,你可以制作一些假的数据文件,假的账户等等,使黑客信以为真,这样才能使黑客在上面逗留足够长的时间,从而你可以记录更多的活动。你可以在蜜罐项目:/project.honeynet.org/上面取得更多的信息,可以找到一些你感兴趣的资料,是你能够对蜜罐有进一步的了解。你也可以去另外一个蜜罐.citi.umich.edu/u/provos/honeyd/了解他们的开放源码的密罐的相关信息。其他一些可以取得更多信息的地方是:南佛罗里达蜜罐项目:相关白皮书:114

20、安全区域和信任等级一段时间以前,人们将网络划分为两大类区域:安全区域和非安全区域。某些时候这种划分也就意味着网络是在路由器或防火墙的部或者外部。现在典型的网络通常根据不同的安全策略等级和信任等级划分为多个区域。例如,公司的财务部门拥有非常高的安全等级,在这个区域中仅仅允许对少数服务的操作,不允许Internet服务;而在DMZ或称非军事化区中,网络是向Internet开放的,此区域的信任等级与财务部门迥然不同。根据信任等级和安全策略的不同,你应该在不同的区域中应用不同的入侵检测规则和策略。对安全等级要求不同的网络在物理上是分离的。你可以在对安全要求不同的每个区域都安装一套具有不同规则的IDS来

21、检测可疑的网络活动。例如,在财务部门的网络中没有web服务器,指向80端口的数据包将被纪录为入侵行为,而这样的规则不能用在DMZ中,因为DMZ中的web服务器是对每个人开放的。12 IDS 策略在你在网络中安装IDS之前,你必须有一个能够检测入侵者并做出相应动作的策略。一个策略必须能够指示一系列的规则以与这些规则如何应用。IDS策略应当包含以下的容,并且你可以根据你的要求添加更多的容:谁来察看IDS信息?IDS提供给你对入侵行为产生告警信息的机制。告警系统或者是简单的文本文件形式,或者更加复杂,也许集成到类似于HpOpenView这样的网管软件或MySQL这样的数据库中。在你的系统中需要有人负

22、责来监视入侵行为和制定策略。入侵行为可以通过弹出窗口或web页面实时监视。在这种情况下,操作者必须要了解告警的意义所在以与告警信息中事件的安全等级。谁来管理IDS,维护日志等等?对于所有的系统,都需要建立一个日常维护体制,IDS也一样。谁来处理安全事件?如果没有安全事件处理机制,也就根本没有必要安装IDS。根据安全事件的安全等级的需要,某些情况可能需要政府的介入。事件处理程序是什么样的?策略应当规定一些事件响应机制,根据涉与安全等级的高低向不同的管理层汇报。例行报告:总结前一天、上一周、或者上一个月所发生的相关事情。特征库的升级:黑客总是不断的创造新的攻击方法。如果IDS了解攻击的特征,就能够

23、检测到攻击。Snort规则用攻击特征库来检测攻击。因为攻击的特征经常在改变,你也必须为你的IDS规则更新特征库。你可以定期直接在Snort上取得特征库的更新,也可以在一种新的攻击方式被发现时自己更新。每个项目都需要文档系统。IDS策略应当描述当攻击被检测到时应当记录什么样的文档。文档可以包括简单的日志或者对入侵行为的完整纪录。你也可以采用多种方式来记录数据。例行报告也属于文档的组成部分。基于你的IDS策略,你可以清楚的知道你的网络到底需要多少IDS探测器和其他资源,更精确的计算IDS的成本和费用。13 Snort的部件Snort在逻辑上可以分成多个部件,这些部件共同工作,来检测特定的功绩,并产

24、生符合特定要求的输出格式。一个基于Snort的IDS包含下面的主要部件:l 包解码器l 预处理器l 探测引擎l 日志和告警系统l 输出模块图1-5显示了这些部件的关系。任何来自Internet的包到了包解码器,然后被送到输出模块,在这里或者被丢弃,或者产生日志或告警。在这个部分中,我们将简要介绍这些部件。在你通读这本书并建立一些规则后,你将对这些部件以与它们之间怎样相互作用更加熟悉。131 包解码器包解码器从不同的网络接口中获取包并准备预处理或者送到探测引擎。网络接口可能是以太网、SLIP、PPP等等。132 预处理器预处理器是Snort在探测引擎做出一些操作来发现数据包是否用来入侵之前排列或

25、者修改数据包的组件或者插件。一些预处理器也可以通过发现数据部异常来执行一些探测工作,并产生告警。预处理器的工作对于任何IDS的探测引擎依据规则分析数据都是非常重要的。黑客有很多愚弄IDS的技术。比如,你建立这样一条规则,用来在包中发现包含“scripts/iisadmin”的入侵特征,如果你将字符匹配过于严格的限制,那么黑客只需要做一些细小的变通,就能很轻易的耍弄你。例如:“scripts/./iisadmin”“scripts/examples/./iisadmin”“scripts/.iisadmin”为了使问题复杂化,黑客也会在字符中嵌入16位URI字符或者Unicode字符,这对web

26、服务器来说是同样合法的,要注意web服务器能够理解所有这些字符,并将它们处理成为类似于“scripts/iisadmin”这样的字符。如果IDS严格匹配某一字符串,就可能不会探测到这种类型的攻击。预处理器可以将字符重新排列,以使IDS能够探测得到。预处理器也或来包分片的组装。当一个大的数据流传向主机的时候,通常数据包会被分割。例如,以太网中默认的最大数据包大小是1500字节,这个数值由网络接口的MTU(Maximus Transfer Unit)值来确定。这就意味着如果你发送的数据如果大于1500字节,它将会被分割成多个数据包,以使每个数据包的大小都小于或等于1500字节。接收方系统能够将这些

27、小的分片重新组装,还原成原始的数据包。在IDS上,在可以对数据包进行特征分析之前,也需要重新组装数据包。例如,可能入侵特征的一般在一个数据包分片上,而另外一半在别的分片上面。为了使探测引擎能够准确的分析特征,就需要组装所有的分片。黑客也用数据分片来对抗入侵检测系统。预处理器用来对抗这些攻击。Snort的预处理器能够组装数据分片,解码 URI,重新组装TCP流等等。这些功能是IDS中非常重要的部分。133 探测引擎探测引擎是Snort中最重要的部分,它的作用是探测数据包中是否包含着入侵行为。探测引擎通过Snort规则来达到目的。规则被读入到部的数据结构或者链表中,并与所有的数据包比对。如果一个数

28、据包与某一规则匹配,就会有相应的动作(记录日志或告警等)产生,否则数据包就会被丢弃。探测引擎是Snort中时间相关的组件,根据你的机器的处理能力和你所定义的规则的多少,探测引擎会消耗不同的时间来对不同的数据包做出响应。在Snort工作在NIDS模式的时候,如果网络中数据流量过大,有时可能会因为来不与响应而丢弃一些包。探测引擎的负载取决于以下因素:l 规则的数量l 运行Snort的机器的处理能力l 运行Snort的机器的部总线速度l 网络的负载当你在设计NIDS的时候,你应该考虑所有的相关因素。你需要了解探测系统可以剖析数据包并把规则应用在高的不同部分,这些部分可能是:l 包的IP头l 包的传输

29、层头,包括TCP、UDP或其他传输层协议头,也可以是ICMP头。l 应用层头。应用层头包括DNS头,FTP头,SNMP头,SMTP头等等还有很多。有时你可以用一些间接的方法来获得应用头信息,比如位偏移等等。l 包载荷。这意味着你可以建立这样一种规则,用探测引擎来寻找传输的数据中的字符。在不同版本的Snort中,探测引擎由不同的工作方式。在所有1.x版的Snort中,一旦探测引擎将数据包匹配到某个规则的时候,就会停止进一步的过程,然后根据规则产生告警或者记录日志,这就意味着即使如果包匹配多条规则,仅仅第一个规则被应用,并不再进行其他的匹配,这样做有好处,但是除了下面的情况:如果包匹配的第一个规则

30、是低优先级的,就只产生低优先级的告警,即使这个包也匹配高优先级的后面其他规则。这个问题在第二版的Snort中得到了修正:包先对所有的规则进行匹配,然后再产生告警,在对所有的规则进行匹配之后,选择最高优先级的规则告警。第2版Snort的探测引擎是完全重写的,从而比先前版本的快了许多。在写这本书的时候,Snort 2.0还没有开始发行,早些时候的测试显示新的引擎比老的引擎要快将近18倍。134 日志和告警系统依据在包中所找到的东西,一个包可以用来记录行为或者产生告警。日志可以存为简单的文本文件、tcpdump格式文件或者其他的形式。在默认情况下,所有的日志文件都存放在/var/log/snort目

31、录中。你可以在命令行中用-l选项来修改日志和告警存放的位置。更多的命令行选项将在下一章中讨论。这些选项可以用来修改日志和告警的类型和细节等等。135 输出模块输出模块或插件可以根据你指定的保存日志和告警系统产生的输出信息的方式来执行不同的动作。基本上这些模块用来控制日志和告警系统产生的输出信息的格式。根据配置,输出模块可以做下列事情:l 简单的在/var/log/snort/alerts文件或其他文件中记录日志l 发送SNMP trapl 将日志记录到类似于MySQL或Oracle的数据库中。你将在这本书的后面了解更多的关于使用MySQL的信息l 产生XML输出l 修改路由其或者防火墙的配置l

32、 向Windows主机发送SMB消息其他一些工具可以用来发送如e-mail信息或者web页面浏览等格式的告警,在后面的章节中你将了解更多的信息。表1-1是IDS各种部件的汇总。表1-1 IDS的部件名称描述包解码器为处理过程准备包预处理器或输入插件分析协议头部,规格化头部,探测头部异常,包分片组装,TCP流组装探测引擎将包与规则比对日志和告警系统产生告警和日志输出模块将告警和日志输出到最终目标14 关于交换机根据你用的交换机的不同,你会有多种方式将Snort的机器安装在交换机端口上。一些交换机,比如CISCO,允许你复制所有的通信到你连接Snort机器的那个端口上,这样的端口通常指的是Span

33、ning端口。安装Snort的最佳位置是直接连到路由其或者防火墙后面,这样Snort可以在数据进入交换机或HUB之前捕获所有的Internet数据流。例如,你的防火墙有连接Internet的T1线路,并用交换机连接部网络,典型的连接方案如图1-6所示:如果你的交换机有Spanning端口,你可以像图1-7所示的那样将IDS与器连接到spanning端口上,这样IDS可以看到所有的与Internet的通信以与部通信。你也可以将IDS连接到防火墙与交换之间的HUB上,这样所有的进入和流出的通信对于IDS也是可见的,此方案如图1-8所示。但是要注意,如果IDS按图1-8安置,那么IDS将不能得到部通

34、信的数据包,只能来见与Internet之间的通信。这种方案对于部网络是可信的,而预想的攻击来自外部是非常有用的。15 跟踪TCP数据流Snort新增加了一种叫做Stream4的预处理器,这种预处理器能够同时处理数千并发的数据流。关于它的配置将在第四章中讨论。它可以重新组装TCP数据流,并进行状态检测。这就意味着你可以组装一个特定的TCP会话,并从利用多个TCP包进行攻击的方式中找出异常。你也可以查找流向或(和)流出某个服务器端口的数据包。16 Snort支持的平台Snort支持多种硬件平台和操作系统。目前Snort支持下列操作系统: Linux OpenBSD NetBSD Solaris (

35、Sparc或者i386) HP-UX AIX IRIX MacOS Windows你可以到Snort的.snort.org查询Snort当前支持的平台的列表。17 如何保护IDS自身有一个关键问题是,如何保护运行IDS的系统?如果IDS本身的安全受到了威胁,你收到的告警可能是错误的,也许就根本收不到告警。入侵者也许会在做出实际的攻击之间先让IDS失效。有许多方式来保护你的系统,从通用的建议到一些复杂的方法,下面会提到一些方法:l 首先你可以做的事情是不要再你运行IDS探测器的机器上运行任何服务。网络服务是用来探寻系统最普遍的方式。l 新的威胁出现后,厂商会发布相应的补丁,只是一个连续不断,永无

36、休止的过程。你的IDS应该安装从厂商那里得到的最新的补丁。比如,如果你的Snort在Window机器上运行,你应该安装所有微软发布的最新的安全补丁。l 配置你的IDS机器,使其不会对ping(ICMP echo)做出回应。l 如果你在Linux机器上运行IDS,请用netfileter/iptables来阻止任何不必要的数据,这时Snort仍然可以看到所有的数据包。l 如果你的IDS机器仅仅用来做入侵检测,那么除非完全有必要,不要在上面进行任何其他的活动以与设立其他用户账号。除了这些通常的方法之外,Snort也可以在一些特殊方法下应用。下面有两种特别的技术来防止Snort遭到攻击。171 在隐

37、秘端口(Stealth Interface)上运行Snort你可以在隐秘端口上运行Snort,这种端口仅仅监听进入数据包而不向外部发送任何的数据包。在隐秘端口上我们用一种特殊的电缆,在你运行Snort的主机上,将端口的1针和2针短路,3针和6针连到对端。你可以到Snort的FAQ页面/.snort.org/docs/faq.html寻找这种方法的更多信息。172 在没有IP地址的接口上运行Snort你也可以在一个没有配置IP地址的接口上运行Snort。例如在Linux机器上,你可以用“ifconfig eth0 up”这样的命令来激活没有配置IP地址的接口eth0。这种方法的好处是,因为Sno

38、rt主机没有IP地址,因此没有人可以访问它。你可以在eth1上配置IP地址用来访问这个探测器。见图1-9。在Windows系统上,你可以用一个不绑定TCP/IP协议的接口,这样就不会在这个接口上出现IP地址了。不要忘记同时也要禁用其他协议和服务。在某些情况下,当接口不配置IP地址的时候,你会遇到wincap(Windows用来捕获包的库)不可用的提示,如果遇到这样的情况,你可以用下面的方法:l 在你想做隐秘端口的网络接口上配置TCP/IP协议,同时禁用其他一切协议和服务。l 启用DHCP客户端。l 禁用DHCP服务器。这样就会使网络接口没有IP地址,网络接口仍然可以绑定TCP/IP协议。18

39、相关资源1. 入侵检测 FAQ : .sans.org/newlook/resources/IDFAQ/ID_FAQ.htm2. 蜜罐项目::/project.honeynet.org/3. Snort FAQ : .snort.org/docs/faq.html4. Honeyd 蜜罐: .citi.umich.edu/u/provos/honeyd/5. Winpcap : :/winpcap.polito.it/6. Cisco systems : .cisco.7. Checkpoint : .checkpoint.8. Netscreen :.netscreen.9. Netfilt

40、er : .netfilter.org10. Snort :.snort.org11. Nmap工具: .nmap.org12. Nessus : .nessus.org13. MySQL 数据库:.mysql.org14. ACID: .cert.org/kb/acid15. Apache web 服务器: .apache.org第二章 安装Snort并开始初步工作Snort可以仅仅安装为守护进程或者一个包括很多其他工具的完整系统。如果你仅仅安装Snort,你可以得到入侵数据的文本文件或二进制文件,然后可以用文本编辑器或其它类似于Barnyard的工具察看,本书的后面将对此做出描述。在简单安

41、装的情况下,你也可以让告警信息以SNMP trap的形式发送到类似于HP OpenView或者OpenNMS之类的网管系统上。告警信息也可以以SMB弹出窗口的形式发送到Windows机器上。如果你与其它工具一起安装,你可以做一些更加复杂的操作,比如将Snort数据发送到数据库并通过Web界面来分析。分析工具能够让你对捕获的数据有更加直观的认识,而不用对晦涩的日志文件耗费大量时间。其它一些可以用到的工具列在下面,它们中的没有特都有特定的任务。一个综合的Snort系统用这些工具来提供具有后台数据库Web用户界面。MySQL用来Snort纪录告警日志。也可以用类似于Oracle的数据库,但在Snor

42、t环境中MySQL更加常用。事实上,Snort可以用任何ODBC兼容的数据库。l Apache用作web服务器l PHP用作web服务器和MySQL数据库之间的接口。l ACID是用来Web界面来分析Snort数据的PHP软件包。l GD库被ACID用来生成图表l PHPLOT用来在ACID的web界面将数据表现为图表形式。为了是PHPLOT工作,GD库必须要正确配置。l ADODB被ACID用来连接MySQL数据库。21 Snort 安装方案Snort的安装方式要取决于运行环境,下面列举了一些典型的安装方案以供参考,你可以根据你的网络情况进行选择。211 测试安装简单安装只包括一个Snort

43、探测器。Snort将数据记录到文本文件中。日志文件供Snort管理员随后察看。由于这种方式在实际应用中分析日志的成本比较高因此仅适合测试环境。要用这种方式安装Snort,你可以在.snort.org取得编译好的版本。对RedHat Linux来说,你可以下载RPM包。对Windows系统,你可以下载可执行文件安装到你的系统上。212 安装单探测器的应用IDS单探测器的Snort可应用安装适合只有一条Internet线路的小型网络。将探测器放在路由器或者防火墙的后面,以检测进入系统的入侵者。不过要是你对所有的Internet流量感兴趣,你也可以将传感器放在防火墙的外面。在这种安装方式中,你可以从

44、Snort.snort.org下载编译好的版本,也可以下载源代码根据自己的要求编译,以取得自己需要的特征,这种要求在编译好的版本中是做不到的。Snort的编译步骤将在本章详细讨论。在应用系统安装中,也可以让Snort实现自动启动和关闭,这样Snort在系统启动是可以自动启动。如果你在Linux中安装编译好的版本,RPM包会帮你做到这一点。在Windows系统中,你可以将Snort作为服务来启动或者放在启动组的批处理文件中。Windows相关的问题将在第8章涉与。日志将纪录为文本文件或者二进制文件,并用类似于SnortSnarf的工具分析数据。SnortSnarf将在第6章中详细讨论。213 单

45、探测器与网管系统的整合在应用系统中,你可以将Snort配置成向网管系统发送trap。在企业应用中,有很多种网管系统在应用。最常见的商业网管系统公司有惠普、IBM、Computer Associates等。Snort利用SNMP trap整合到网管系统中。当你看完本章的Snort编译步骤后,就会了解Snort是怎样提供SNMP能力的。第4章将介绍更多的关于配置SNMP trap目标、community名称等更多的信息。214 带有数据库和web界面的单探测器Snort最通常的用法是与数据库的整合。数据库用来记录日志,并可以随后通过web界面访问。这种安装的典型设置包含3个基本的部件:Snort

46、探测器数据库服务器web服务器Snort将日志记录到数据库中,你可以通过连接到它的web浏览器察看这些数据。这种方案可以参见第1章的图1-1。所有3个部件也可以安装在同一个系统上,如第1章的图1-2所示。Snort可以用不同类型的数据库,如MySQL,PostgresSQL,Oracle,Microsoft SQL Server和其他ODBC兼容的数据库。PHP用来在数据库中获取数据,并产生页面。这样的安装提供给你一个易于管理的功能全面的IDS,并具有友好的用户界面。为了使你能够用数据库记录日志,你必须给Snort提供数据库的用户名称、密码、数据库名称和数据库服务器的地址。在单探测器方案中,如

47、果数据库服务器就安装在运行传感器的机器上,你可以用“localhost”作为主机名。你在编译Snort时就要选择记录数据库的功能,这一点将在本章的后面详细描述。Snort使用数据库的配置将在第4、5、6章讨论。215 用集中数据库管理多个Snort探测器在分布式环境中,你可能需要在多个位置安装Snort探测器。管理所有这些探测器并分别分析它们收集的数据是一项艰难的任务。在企业应用中,有一些方法可以将Snort设置和安装成分布式的IDS。其中一种方法是将多个探测器连接到同一个中心数据库,如图1-3所示。所有探测器产生的数据都存储在这个数据库中。同时运行一个类似于Apache的web服务器。然后用

48、户可以用web浏览器察看这些数据并加以分析。但要了解这种配置存在一些实际问题:l 所有的探测器在启动Snort的时候必须能够访问到数据库,如果不能,Snort就终止进程。l 数据库必须保证让探测器所有的时间都能访问,否则,数据将丢失。l 如果探测器和数据库服务器之间有防火墙,你要打开相应的端口,有时这样做会与防火墙的安全策略不匹配或者违背安全策略。在探测器不能直接访问数据库服务器的时候,有一些变通的方法。探测器可以配置为将文件存储在本地,然后用类似于SCP的工具定期将这些文件上传到中央数据库服务器。SCP用SSH协议来进行安全文件传输的工具。防火墙管理员要放行SSH端口的通信。你可以用Snor

49、t本身,Barnyard或其他一些工具从日志文件中提取数据并将它们放到数据库中,你可以在以后用web界面来察看这些数据。这种方式的唯一问题是数据库中的数据并非严格的“实时”数据。延迟的大小要看你用SCP上传数据到中心数据库服务器的频率。这种方式如图2-1所示。要注意,中心数据库服务器必须要运行SSH服务器以能够用SCP来上传数据。如第一章中提到的那样,这本书的最终目的是帮助你安装Snort并让所有的软件包可以协同工作。当你通读此书后,你将了解这些部件之间是如何相互作用,共同工作形成一个完整的入侵检测系统的。本书中涉与的这些软件都可以这本书的:/authors.phpktr./rhman/中获得

50、源代码。你也可以发现这个上的一些脚本可以帮助你轻松的在一个新系统上安装这些软件包。事实上,用这本书提到的这个上的一些脚本,你可以以root身份用仅仅几个命令行就建立一个可用的IDS。如果你用的Snort的版本比本书涉与的要新,你可以在.argusnetsec./downloads下载支持新版本Snort的最新版的脚本。这本书将详细介绍这些部件在RedHat Linux 7.3机器上的安装,但是在其他版本的Linux或者其他平台上的过程与之类似。为了方便本书介绍,所有的部件都安装在/opt目录下面。但是如果用编译好的软件包,安装位置可能有所不同。当你用本书上或者从本书的取得的脚本,文件将被安装在

51、这个目录下面。在本章中,你将了解如何将Snort作为一个独立的产品安装,在后面的章节中,将介绍其他一些部件。你可以得到二进制形式或者源代码形式的Snort。对于大多数安装来说,编译好的二进制软件包是非常好的。如前面提与的,如果你想为Snort定制一些特性,你需要下载源代码版的Snort自行编译。例如,有些人喜欢SMB告警,但另外一些人可能认为它们不安全。如果你需要不支持SMB告警的Snort,那么你需要自己编译它。这对于一些如SNMP trap、MySQL等其他特性也是一样的。另外一个自己编译Snort理由是你需要了解正在开发中的代码。本章将指导你一步一步的安装Snort。基本的安装过程是非常

52、简单的,而且Snort已经提供给你包含大多数已知攻击特征的预定义的规则。当然,自定义安装还是要费一些工夫的。22 安装Snort在这一部分,你将了解如何安装编译好的Snort和如何自己编译和安装。安装编译好的RPM包非常简单,仅需要几步。但是如果你的Snort是源代码形式的,是需要一些时间来了解和安装的。221 用RPM包安装Snort用RPM包安装Snort包括下面的步骤。2211 下载从Snort的(.snort.org)下载最新版的Snort。在写本书的时候,最新版的二进制文件是snort-1.9.0-1snort.i386.rpm。2212 安装运行下面的命令来安装Snort的二进制文

53、件:rpm -install snort-1.9.0-1snort.i386.rpm这个命令会产生下面的动作:n 创建/etc/snort目录,其中会存放Snort的规则文件和配置文件。n 创建/var/log/snort目录,Snort的日志文件将会存放在这里。n 创建/usr/share/doc/snort-1.9.0目录来存放Snort的文档文件,在这个目录中,你会看到类似于FAQ,README的文件和其他一些文件。n 在/usr/sbin目录中创建一个叫做snort-plain的文件,这是Snort的守护进程。创建文件/etc/rc.d/init.d/snortd文件,这是启动和关闭脚

54、本。在RedHat Linux中,它与/etc/init.d/snortd等价。到这里基本安装就完成了,你可以开始使用Snort。这个版本的Snort并没有将对数据库的支持编译进去,你只能用/var/log/snort目录下面的日志文件。2213 Snort的启动,停止和重启用下面的命令手工启动Snort:/etc/init.d/snortd start这个命令将启动Snort守护进程,运行“ps ef”命令,你可以看到类似于下面的输出:root 15999 1 0 18:31 ? 00:00:01 /usr/sbin/snort -A fast -b -l /var/log/snort -d

55、 -D -i eth0 -c /etc/snort/snort.conf注意每次你重启机器,你都要手工启动Snort。你可以通过创建文件的方式让这个过程自动执行,这将在本章的后面讨论。用下面的命令停止Snort:/etc/init.d/snortd stop用下面的命令重新启动Snort:/etc/init.d/snortd restart222 用源代码安装Snort为了能够用源代码安装Snort,你必须先构造它。你可以用下面介绍的步骤来构造出可执行文件snort。首先从Snort(.snort.org)获得最新版的Snort。在写这本书的时候,最新版的Snort是1.9.0,下载文件的名称

56、是snort-1.9.0.tar.gz,下载后可以保存在/opt目录中。注意在你读这本书的时候可能会是更新的版本,安装方法也类似。2221 解压缩下载后第一步要把源代码解压缩,用下面的命令来执行:tar zxvf snort-1.9.0.tar.gz这样会创建/opt/snort-1.9.0目录。确定你将文件下载到/opt目录,并且你在这个目录运行tar命令。如果是其他版本的Snort,目录名称可能会有所不同,目录名称会反映版本号。解压缩后你可以运行tree命令来观察tar命令建立的目录树,如下所示是/opt/snort-1.9.0的目录树:rootconformix opt# tree -d

57、 snort-1.9.0snort-1.9.0|- contrib|- doc|- etc|- rules|- src| |- detection-plugins| |- output-plugins| |- preprocessors| - win32| |- WIN32-Code| |- WIN32-Includes| | |- NET| | |- NETINET| | |- libnet| | |- mysql| | - rpc| |- WIN32-Libraries| | |- libnet| | - mysql| - WIN32-Prj- templates21 directorie

58、srootconformix opt#这些目录中的主要容如下所示:contrib目录主要包括并非严格输入Snort自身组成部分的应用软件,这些软件包括ACID,MySQL数据库生成脚本和其他。doc目录包含文档文件。etc目录包含配置文件。rules目录包含预先定义的规则文件。所有的源代码在src目录下面。templates是为那些准备自己写插件的人准备的,这对大多数Snort用户没有意义。2222 编译和安装编译和安装过程包括下列3个步骤:1 运行configure脚本。2 运行make命令。3 运行make install命令。开始Snort的编译过程,首先去/opt/snort-1.9.

59、0目录并运行configure脚本。如果你刚刚开始接触GNU类的软件,你需要了解configure脚本是开放源码软件包通用的工具,它可以用来设置参数,创建makefile,检测开发工具和你系统中的库文件。运行configure脚本的时候,有许多命令行选项,这些选项决定Snort编译时将带有那些组件。比如,用这些选项,你可以构建对SNMP、MySQL或SMB告警的支持以与其他很多事情。你同样也可以定制Snort文件的最终安装位置。你可以用“./configure help”命令来察看可用的选项,如下所示:# ./configure -helpconfigure configures this p

60、ackage to adapt to many kinds of systems.Usage: ./configure OPTION. VAR=VALUE.To assign environment variables (e.g., CC, CFLAGS.), specify them asVAR=VALUE. See below for descriptions of some of the useful variables.Defaults for the options are specified in brackets.Configuration: -h, -help display

61、this help and exit -help=short display options specific to this package -help=recursive display the short help of all the included packages -V, -version display version information and exit -q, -quiet, -silent do not print checking. messages -cache-file=FILE cache test results in FILE disabled -C, -

62、config-cache alias for -cache-file=config.cache -n, -no-create do not create output files -srcdir=DIR find the sources in DIR configure dir or .Installation directories: -prefix=PREFIX install architecture-independent files in PREFIX /usr/local -exec-prefix=EPREFIX install architecture-dependent files in EPREFIX PREFIXBy default, make install will install all the files in/usr/local/bin, /usr/local/lib etc. You can specifyan installation prefix other than /usr/local using -prefix,for instance -prefix=$HOME.For better control, use the options below.Fin

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!