《入侵检测与防御原理及实践(微课版)》 课件 CH4 开源入侵检测系统Snort2_第1页
《入侵检测与防御原理及实践(微课版)》 课件 CH4 开源入侵检测系统Snort2_第2页
《入侵检测与防御原理及实践(微课版)》 课件 CH4 开源入侵检测系统Snort2_第3页
《入侵检测与防御原理及实践(微课版)》 课件 CH4 开源入侵检测系统Snort2_第4页
《入侵检测与防御原理及实践(微课版)》 课件 CH4 开源入侵检测系统Snort2_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

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

文档简介

开源入侵检测系统Snort2目录Snort的体系结构Snort的的部署方式Snort的工作模式Snort2的安装与配置Snort2的命令行参数Snort2的预处理器Snort的体系结构1Snort是著名的开源、跨平台、轻量级的网络入侵检测系统,遵循公共通用许可证GPL,采用易于扩展的模块化体系结构。Snort最早是由程序员MartyRoesch在1998年用C语言开发的基于libpcap/winpcap/npcap的数据包嗅探器和日志记录工具。Snort采用基于规则的网络信息搜索机制,对数据包进行内容的模式匹配,从中发现入侵和探测行为。Snort能对网络流量进行实时捕获,对协议进行分析,可以自定义规则库、预处理器及输出插件等扩充其功能,如果有与规则库匹配的非法流量和可疑数据,可以记录到日志文件,并实时报警。Snort简介包解码器、预处理器、检测引擎、报警输出是SNORT系统的基本模块,以插件形式存在,有很强的可扩展性SNORT的体系结构(1)包捕获器:SNORT本身没有捕获数据包的模块,只能借助Linux的捕包函数库Libpcap或Windows的Winpcap直接从网卡获得数据包,并将捕获的数据包传递给包解码器。(2)包解码器:用于将包捕获器传递过来的原始数据包进行解码,并将解码后的数据包存放到SNORT定义的结构体中,方便后续的预处理器和检测引擎处理。(3)预处理器:用于将包解码器解码后的数据包进行预处理操作,使之规范化,方便检测引擎的检测。另外,预处理器也可以检测数据包是否有明显的错误,如果有则直接报警输出。预处理器是插件形式存在的,SNORT中内置了一些常用的预处理器,用户可以根据需要有选择地使用,也可根据添加自定义的预处理器。(4)检测引擎:是SNORT系统最核心的模块,通过规则库判断经过解码和预处理之后的数据包是否存在入侵行为。需在SNORT启动前提前配置好规则库。(5)报警输出:若数据包被检测出错误或非法,则由此模块进行记录并报警。报警信息可以日志文件形式的保存,也可以保存在MYSQL、ORACLE等数据库系统中。用户也可以定制输出插件,将检测后的数据进行直观展示。(6)规则库:是检测引擎对数据包判断是否非法的依据,在SNORT启动时会对系统中的规则进行初始化,初始化好的规则被加载到一个三维链表中。(7)日志文件或数据库:用于记录报警信息。SNORT的体系结构Snort支持以内联(Inline)模式配置为IPS做阻断,只不过功能较弱。最常见的部署方式还是作为IDS来使用,与现有设备形成异构,实现网络流量的交叉检查。Snort作为IDS部署时,应将其以并联的方式挂接在所关注流量必经的链路上。可以将Snort部署在防火墙两侧,具体有以下3种部署方案。(1)部署防火墙外(2)部署在防火墙内(3)防火墙内外分别部署SNORT的部署方式Snort有嗅探器、数据包记录器和入侵检测3种工作模式。嗅探器模式:相当于Wireshark、tcpdump这样的数据包捕获工具,用户可以实时查看网络接口流量。数据包记录器模式:将抓取的数据包存储到本地硬盘中,文件名为snort.log.timestamp。用户可以使用Wireshark等软件或者snort-r功能分析该流量文件。入侵检测模式:最核心的模式,将捕获的数据包与检测规则进行模式匹配,当发现数据包匹配上某条规则,就会执行这条规则中所定义的动作。SNORT的工作模式SNORT2的关键文件SNORT的工作流程模块名源文件名称说明主模块SNORT.c主控模块plugbase.c完成插件的注册、初始化解码模块decode.c解码函数预处理模块preprocessors保存预处理插件规则处理模块rules.c完成所有与规则相关的工作parser.c完成—些辅助工作日志模块log.c完成与日志记录有关的功能SNORT的启动流程(1)调用初始化函数SnortInit(),完成命令行解析、输出模块注册、预处理模块注册、规则选项模块构建、加载动态插件等操作。(2)利用GetPacketSource()函数获取数据源,确定需要进行捕获数据报文的网卡,或者存储数据报文的文件;注册控制处理器,初始化进程文件和权限。SNORT的工作流程(3)调用函数SetPktProcessor()获取数据包,判断数据来源并标注对应的解码函数。(4)调用封装了Libpcap的DAQ函数库的DAQ_Start()函数,启动抓包流程。利用PacketLoop()函数循环抓包。SNORT能调用不同的解码函数对捕获的数据包进行解析,根据检测规则对异常协议进行识别与报警。数据包的处理过程SNORT的工作流程利用捕包库函数捕获到数据链路层的所有流量,包解码器按照数据包的类型逐层向上调用相应的解码函数解码。解码完毕后,识别出相应的协议类型,该过程是在数据链路层完成的。接下来调用网络层解码函数,对数据链路层解码完毕后的数据包做相似的解码工作。调用传输层解码函数对数据包进行最后的解码,并把解码后的数据包存放到系统定义好的数据结构中供预处理器来处理。Snort2的安装与配置2Snort2目前最高版本为2.9.20,有源码版和Windows版Snort2的安装安装完成后还需要安装Npcap,并对配置文件snort.conf进行编辑。Snort2的安装在WindowsXp/2003/Vista/2008上可以使用WinpcapWin7及以后上可以使用npcap,64bit,要匹配可以用snort-V查看Snort的版本和位数,也可以用snort-W可以查看版本、位数、可用接口等,还可以确定捕包函数库与Snort是否匹配。Snort2的安装配置snort.conf文件1)设置网络变量2)配置解码器3)配置基础检测引擎4)配置动态加载库5)配置预处理器6)配置输出插件7)自定义规则集8)自定义预处理器和解码器规则集9)自定义共享对象规则集Snort的配置1.设置网络相关变量IP变量ipvarHOME_NETanyipvarEXTERNAL_NETanyipvarDNS_SERVERS$HOME_NETipvarSMTP_SERVERS$HOME_NETipvarHTTP_SERVERS$HOME_NETipvarSQL_SERVERS$HOME_NETipvarTELNET_SERVERS$HOME_NETipvarSSH_SERVERS$HOME_NETipvarFTP_SERVERS$HOME_NETipvarSIP_SERVERS$HOME_NET Snort的配置(Snort.conf)1.设置网络相关变量端口变量portvarHTTP_PORTS[80,81,311,383,……portvarSHELLCODE_PORTS!80portvarORACLE_PORTS1024:portvarSSH_PORTS22portvarFTP_PORTS[21,2100,3535]portvarSIP_PORTS[5060,5061,5600]portvarFILE_DATA_PORTS[$HTTP_PORTS,110,143]portvarGTP_PORTS[2123,2152,3386]ipvarAIM_SERVERS[/23,/23,/24,……Snort的配置(Snort.conf)1.设置网络相关变量规则文件的路径(可以是相对路径,建议用绝对路径)104行:(105和106也可以先注释点)varRULE_PATHD:\snort\rules 规则路径varSO_RULE_PATHD:\snort\so_rules 共享函数库规则路径varPREPROC_RULE_PATHD:\snort\preproc_rules 预处理器规则路径注释掉113和114行#varWHITE_LIST_PATHD:\snort\rules 允许列表地址#varBLACK_LIST_PATHD:\snort\rules 屏蔽列表地址Snort的配置(Snort.conf)4.配置动态加载库可动态加载的模块改247行和250行dynamicpreprocessordirectoryD:\snort\lib\snort_dynamicpreprocessor 动态预处理器库路径dynamicengineD:\snort\lib\snort_dynamicengine\sf_engine.dll 基本预处理器引擎路径注释掉253行#dynamicdetectiondirectory/usr/local/lib/snort_dynamicrules 动态规则库路径Snort的配置(Snort.conf)5.配置预处理器用于将包解码器解码后的数据包进行预处理操作,使之规范化,方便检测引擎的检测。也可以检测数据包是否有明显的错误,如果有则直接报警输出。预处理器是插件形式存在的,源文件名都是以spp_开头的,SNORT中内置了一些常用的预处理器,如:IP分片重组(frag2)、TCP流重组(stream4)、各种应用层解码等。用户可以根据需要有选择地使用,通常采用默认值,也可根据添加自定义的预处理器。常见分类:模拟TCP/IP堆栈功能的插件:如IP分片重组、TCP流重组插件。各种解码插件:如HTTP解码插件、Unicode解码插件、RPC解码插件、Telnet协商插件等。规则匹配无法进行攻击检测时所用的检测插件:如端口扫描插件、Spade异常入侵检测插件、Bo检测插件、Arp欺骗检测插件等。Snort的配置(Snort.conf)6.配置输出插件在报文匹配某条规则需要输出时,调用相应的输出插件。它们的源文件名都以spo_开头,这些插件分为日志和警告两种类型放入两个列表中,在规则匹配过程中和匹配结束之后调用,以便记录日志和警告。输出方式1)输出到unified2文件:outputunified2:filenamesnort.log,limit128U2boat:用于将Unified2文件转换为不同格式的工具。U2SpewFoo:用于将Unified2文件的内容转储到stdout的轻量级工具。2)输出到syslog:outputalert_syslog:LOG_AUTHLOG_ALERT3)输出到pcap文件:outputlog_tcpdump:tcpdump.log4)输出到数据库:outputdatabase:alert,mysql,host=localhostuser=snortpassword=snorttestdbname=snortencoding=hexdetail=full Snort的配置(Snort.conf)7.定制snort规则集是检测引擎对数据包判断是否非法的依据,在SNORT启动时会对系统中的规则进行初始化,初始化好的规则被加载到一个三维链表中。#include<被包含文件的完整路径和文件名>include$RULE_PATH/local.rulesalerticmpanyany->anyany(msg:"TestingICMPalert";sid:1000001;)Snort的配置(Snort.conf)Snort的使用3嗅探器:从网络上读取数据包并作为连续不断的流显示在终端上。snort–v-i4:输出IP和TCP/UDP/ICMP的包头信息snort–vd-i4:输出IP和TCP/UDP/ICMP的包头信息和应用层的数据snort–vde-i4:输出数据链路层、IP和TCP/UDP/ICMP的包头信息以及应用层的数据数据包记录器:把数据包记录到硬盘上的log目录中(log目录必须存在)snort–dev–l./logsnort–dev–l./log-h/24网络入侵检测系统:此模式最复杂,且是可配置的,可以让Snort分析网络数据流以匹配用户定义的规则,并根据检测结果采取一定的动作。snort–dev–l./log

-h/24–csnort.conf为了提高性能,建议不要使用ve这两个参数Snort2的命令行参数c:\snort\bin>snort[options]<filters>主要snort参数介绍-A<alert>:设置<alert>的模式是full、fast,还是none;full模式是记录标准的alert模式到alert文件中;fast模式只写入时间戳、messages、IPs、ports到文件中,none模式关闭报警。-a:显示ARP包。-b:把LOG的信息包记录为TCPDUMP格式,所有信息包都被记录为二进制形式,这个选项对于fast记录模式比较好,因为它不需要花费包的信息转化为文本的时间。Snort在100Mbps网络中使用“b”比较好。-c<cf>:使用配置文件<cf>,这个规则文件是告诉系统什么样的信息要LOG,或者要报警,或者通过。-C:在信息包信息使用ASCII码来显示,而不是hexdump。Snort的命令行参数主要snort参数介绍-d:解码应用层-D:把Snort以守护进程的方法来运行,默认情况下alert记录发送到/var/log/snort.alert文件中去。-e:显示第二层(数据链路层)的包头信息。-F<bpf>:从<bpf>文件中读BPF过滤器(filters),这里的filters是标准的BPF格式过滤器。-h<hn>:设置网络地址,如一个C类IP地址,使用这个选项,可限制数据进出的方向。-i<if>:使用网络接口参数<if>。-l <ld>:LOG信息包记录到<ld>目录中去。-M<wkstn>:发送WinPopup信息到包含<wkstn>文件中存在的工作站列表中去,这选项需要Samba的支持,wkstn文件很简单,每一行只要添加包含在SMB中的主机名即可(注意不需要两个斜杠\\)。Snort的命令行参数主要snort参数介绍-n<cnt>:指定在处理<cnt>个数据包后退出。-N:关闭Log记录,但ALERT功能仍旧正常。-o:改变所采用的记录文件,如正常情况下采用Alert→Pass→Log,而采用此选项是这样的顺序:Pass→Alert→Log,其中Pass是那些允许通过的规则而不记录和报警,ALERT是不允许通过的规则,LOG指LOG记录。-p:关闭杂乱模式嗅探方式,一般用来更安全的调试网络-r<tf>:读取tcpdump方式产生的文件<tf>,这个方法用来得到一个Shadow(ShadowIDS产生)文件,因为这些文件不能用一般的EDIT来编辑查看。-sLOG:报警的记录到syslog中去,在LINUX机器上,这些警告信息会出现在/var/log/secure,在其它平台上将出现在/var/log/message中。Snort的命令行参数主要snort参数介绍-S<n=v>:设置变量值,这可以用来在命令行定义Snortrules文件中的变量,如要在Snortrules文件中定义变量HOME_NET,可以在命令行中给它预定义值。-v:使用为verbose模式,把信息包打印在console中,这个选项使用后会使速度很慢,这样结果在记录多的是时候会出现丢包现象。-V:显示SNORT版本并退出。-?:显示帮助信息。-W:显示可用接口以上这些参数大多可组合进行使用。Snort的命令行参数Snort入侵检测实例1.实现快速嗅探在命令行输出检测到的IP/TCP/UDP/ICMP数据。如果想要把数据的包头信息在命令行显示,可以使用:

snort-v-i4命令行中会打印出如下的信息:11/25-21:14:34.2352489:8080->:3635TCPTTL:52TOS:0x0ID:32998IpLen:20DgmLen:40DF***A****Seq:0xBAFF71D6Ack:0xAA0A104DWin:0x7ETcpLen:20Snort的命令行参数Snort入侵检测实例1.实现快速嗅探如果打开-d开关,将显示HEX和ASCII形式的应用数据(OSI模型的第七层),命令如下:snort-vd-i4命令行中会打印出如下的信息:11/25-22:53:33.081641->ICMPTTL:128TOS:0x0ID:41593IpLen:20DgmLen:60Type:8Code:0ID:1Seq:44ECHO6162636465666768696A6B6C6D6E6F70abcdefghijklmnop71727374757677616263646566676869qrstuvwabcdefghiSnort的命令行参数Snort入侵检测实例2.实现记录数据包确认log目录已经存在,再使用下面的命令:snort-de-ld:\snort\log-i4-KASCII注意:这里少了-v选项,这意味着Snort将不在屏幕上显示输出信息。命令的前部分使Snort进入探测模式,它在d:\snort\log目录下为每个用户发起的连接创建文件。每个文件中包含的是以ASCII格式显示的流量信息。Snort的命令行参数Snort入侵检测实例2.实现记录数据包确认log目录已经存在,再使用下面的命令:snort-ld:\snort\log-b-i4进入数据包记录界面,同时在log目录下会生成一个名如snort.log.xxxxxxxxxx的日志文件,所有的网络流量将以二进制的形式记录下来,并以PCAP的格式写入到该日志文件中。这样做的优点:(1)允许利用开放源码或者商业的探测器程序进行浏览,例如,Wireshark等。(2)允许重放Snort或者探测程序。(3)速度快,基本上Snort可以得到所有的流量并写入到文件。可用snort-de-rd:\snort\log\snort.log.xxxxxxxxxx重新读入到Snort,用于解码Snort的命令行参数高性能的配置方式在一个高数据流量(如大于100Mb/s)的网络环境下运行s

温馨提示

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

评论

0/150

提交评论