入侵检测技术
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
入侵检测技术
一、实验目的
通过实验深入理解入侵检测系统的原理和工作方式,熟悉入侵检测系统的配置和使用。
实验具体要求如下:
3.掌握Snort的安装、配置和使用等实用技术
二、实验原理
1、入侵检测概念及其功能
入侵检测是指对入侵行为的发现、报警和响应,它通过对电脑网络或电脑系统中的假设干关键点收集信息并对其进行分析,从中发现网络或系统中是否有违反安全策略的行为和被攻击的迹象。
入侵检测系统(intrusion detection system,IDS)是完成入侵检测功能的软件和硬件的集合。
入侵检测的功能主要表达在以下几个方面:
1〕. 监视并分析用户和系统的活动。
2〕. 核查系统配置和漏洞。
3〕. 识别已知的攻击行为并报警。
4〕. 统计分析异常行为。
5〕. 评估系统关键资源和数据文件的完整性。
6〕. 操作系统的审计跟踪管理,并识别违反安全策略的用户行为。
2、入侵检测的分类
根据IDS检测对象和工作方式的不同,可以将IDS分为基于网络的IDS(简称NIDS)和基于主机的IDS(简称HIDS)。
NIDS和HIDS互为补充,两者的结合使用使得IDS有了更强的检测能力。
1〕. 基于主机的入侵检测系统。
HIDS历史最久,最早用于审计用户的活动,比方用户登录、命令操作、应用程序使用资源情况等。
HIDS主要使用主机的审计记录和日志文件作为输入,某些HIDS也会主动与主机系统进行交互以获得不存在于系统日志的信息。
HIDS所收集的信息集中在系统调用和应用层审计上,试图从日志寻找滥用和入侵事件的线索。
HIDS用于保护单台主机不受网络攻击行为的侵害,需要安装在保护的主机上。
2〕. 基于网络的入侵检测系统。
NIDS是在网络中的某一点被动地监听网络上传输的原始流量,并通过协议分析、特征、统计分析等分析手段发现当前发生的攻击行为。
NIDS通过对流量分析提取牲模式,再与已知攻击牲相匹配或与正常网络行为原形相比较来识别攻击事件。
3、入侵检测系统
1〕. 入侵检测系统的特点:
入侵检测系统(Intrusion Detection System)是对防火墙有益的补充,它对网络和主机行为
进行检测,提供对内部攻击、外部攻击和误操作的实时监控,增强了网络的安全性。
在安全防范方面,入侵检测系统可以实现事前警告、事中防护和事后取证。
入侵检测系统能够在入侵攻击行为对网络系统造成危害前,及时检测到入侵攻击的发生,并进行报警;入侵攻击发生时,入侵检测系统可以通过与防火墙联动等方式进行报警及动态防护;被入侵攻击后,入侵检测系统可以提供详细的攻击信息日志,便于取证分析。
相对于防火墙提供的静态防护而言,入侵检测系统侧重于提供动态实时检测防护,因此防火墙和入侵检测系统的结合,能够给网络带来更全面的防护。
2). 入侵检测系统的实现原理:
入侵检测系统的实现技术可以简单地分为两大类:基于特征的检测和基于异常的检测。
基于特征的检测技术主要包括模式匹配和协议分析两种主要检测方法。
模式匹配就是将已知入侵事件悼念到网络入侵和系统误用知识库中,对入侵检测系统悼念的信息和知识库中的规则进行比较,以发现入侵行为。
协议分析技术则对数据包进行协议解析后进行分析。
这种技术需要首先捕捉数据包,然后对数据包进行解析,包括网络协议分析和命令解析,即使在高负载的调整网络上,也能逐个分析所有的数据包。
基于牲的检测技术只需收集相关的数据,和所维护的知识库规则比较就能进行判断,检测准确率和效率较高。
但是,该技术需要不断进行知识库规则的升级以对付不断出现的新攻击手法,而且,它不能检测未知攻击手段。
3). 入侵检测系统的部署原则:
NIDS总的来说包括探测器和控制台两大部分。
探测器是专用的硬件设备,负责网络数据流的捕获、分析检测和报警等功能。
控制台是管理探测器的工具,它负责接收探测器的检测日志数据,并提供数据查询和报告生成等功能,一个控制台可以管理多个探测器。
HIDS安装在被保护的机器上,在主机系统的审计日志或操作中查找信息源进行智能分析和判断,例如操作系统日志、系统进程、文件访问和注册表访问等信息。
由于HIDS安装在需要保护的主机系统上,这将影响应用系统的运行效率。
HIDS对主机系统固有的日志与监视能力有很高的依赖性,它一般针对其所在的系统进行检测。
4/Snort简介及使用原理:
1). Snort是一款免费的NIDS,具有小巧灵便、易于配置、检测效率高等特性,常被称为轻量级的IDS。
Snort具有实时数据流量分析和IP数据包日志分析能力,具有跨平台特征,能够进行协议分析和对内容的搜索或匹配。
Snort能够检测不同的攻击行为,如缓冲区溢出、端口扫描和拒绝服务攻击等,并进行实时报警。
Snort可以根据用户事先定义的一些规则分析网络数据流,并根据检测结果采取一定的行动。
Snort有3种工作模式,即嗅探器、数据包记录器和NIDS。
嗅探器模式仅从网络上读取数据包并作为连续不断的数据流显示在终端上;数据包记录器模式把数据包记录到硬盘上,以备分析之用;NIDS模式功能强大,可以通过配置实现。
2). Snort的结构由四大软件模块组成:
(1)数据包嗅探模块。
负责监听网络数据包,对网络进行分析。
(2)预处理模块。
该模块用相应的插件来检查原始数据包,从中发现原始数据的"行为"。
(3)检测模块。
该模块是Snort的核心模块。
当数据包从预处理器送过来后,检测引擎依据预先设置的规则检查数据包,一旦发现数据包中的内容和某条规则相匹配,就通知报警模块。
(4)报警/日志模块。
经检测引擎检查后的Snort数据需要以某种方式输出。
如果检测引擎中的某条规则被匹配,则会触发一条报警。
3). Snort规则。
Snort的每条规则逻辑上都可以分成规则头部和规则选项。
规则头部包
括规则行为、协议、源或目的IP地址、子网掩码、源端口和目的端口;规则选项包含报警信息和异常包的信息〔特征码〕,基于特征码决定是否采取规则规定的行动。
对于每条规则来说,规则选项不是必需的,只是为了更加详细地定义应该收集或者报警的数据包。
只有匹配所有选项的数据包,Snort都会执行其规则行为。
如果许多项选择项组合在一起,它们之间是“逻辑与“的关系。
三、实验步骤
实验内容一:Windows平台下Snort的安装与配置
由于需要对网络底层进行操作,安装Snort前需要预先安装WinpCap〔WIN32平台上网络分析和捕获数据包的链接库〕。
1. 下载Windows平台下的Snort安装程序,选择安装目录为c:\Snort。
进行到选择日志文件存放方式时,为简单起见,选择不需要数据库支持或者Snort默认的MySQL和ODBC 数据库支持的方式。
(即选择"I do not plan to log to a database,or I am planning to log to one of the databases listed above.")
2. 单击“开始”菜单,选择“运行”命令,输入cmd并按Enter键,在命令行方式下输入如下命令c:\>cd c:\Snort\bin,然后输入c:\Snort\bin>snort -W。
如果Snort安装成功,系统将显示如下列图所示信息。
3. 从返回的结果可知主机上有哪个物理网卡正在工作及该网卡的详细信息。
其中第五个是具有物理地址的网卡。
输入snort -v -i5命令启用Snort。
其中,-v表示使用Verbose模式,把信息包打印在屏幕上;-i5表示监听第五个网卡。
如下列图所示:
4. 为了进一步查看Snort的运行状况,可以人为制造一些ICMP网络流量。
在局域网段中的另一台主机上使用Ping指令,探测运行Snort的主机。
5. 回到运行Snort的主机,发现Snort已经记录了这次探测的数据包,Snort在屏幕上输出了局域网中另一台主机到本主机的ICMP数据包头。
7. 配置网段内提供网络服务的IP地址,只需要把默认的$HOME_NET改成对应主机地
址即可:var DNS_SERVERS $ HOME_NET; var SMTP_SERVERS $ HOME_NET; var HTTP_SERVERS $ HOME_NET; var SQL_SERVERS $ HOME_NET; var TELNET_SERVERS $ HOME_NET; var SNMP_SERVERS $ HOME_NET 如果不需要监视某种类型的服务,可用#号将上述语句其注释掉。
8. 修改设置监测包含的规则。
在配置文件末尾,定义了与规则相关的配置,格式如下:include $RULE_PA TH/local.rules; include $RULE_PATH/bad-traffic.rules; include $RULE_PATH/exploit.rules。
其中变量$RULE_PA TH指明了规则文件存放的路径,可以在语句var RULE_PATH../rules中将变量RULE_PATH改为存放规则集的目录,如:c:\snort\rules。
9. 在Snort.conf文件中,修改配置文件Classification.conf和Reference.conf的路径:include c:\Snort\etc\classification.conf; include c:\Snort\etc\reference.config。
其中,Classification.conf文件保存的是和规则的警报级别相关的配置,Reference.conf文件保存了提供更多警报相关信息的链接。
实验内容二:Windows平台下Snort的使用
1. Snort嗅探器模式。
检测Snort安装是否成功时,用到的就是Snort嗅探器模式。
输入命令如下:snort -v -i5使Snort只将IP和TCP/UDP/ICMP的包头信息输出到屏幕上。
如果要看到应用层的数据,可以输入如下命令:snort -v -d -i5。
如果需要输出更详细的信息,输入命令:snort -v -d -e -i5可以显示数据链路层的信息。
2. 数据包记录器模式。
上面的命令只是在屏幕上输出,如果要记录在LOG文件上,需要预先建立一个Log目录。
输入下面的命令启用数据包记录器模式:snort -dve -i5 -l c:\Snort\log -h 192.168.1.0/24 -K ascii。
其中,-l选项指定了存放日志的文件夹;-h指定目标主机,这里检测对象是局域网段内的所有主机,如不指定-h,则默认检测本机;-K指定了记录的格式,默认是Tcpdump格式,此处使用ASCII码。
3. 网络IDS模式。
Snort最重要的用途还是作为基于误用检测技术的NIDS。
输入下面的命令启动IDS模式:snort -i5 -dev -l./log -h 192.168.1.0/24 -K ascii -c c:\Snort/etc/snort.conf。
相比数据包记录器模式中使用的命令,该命令只增加了一个选项-c,用于告诉Snort使用Snort.conf中的规则集文件。
Snort会对每个包和规则集进行匹配,如符合规则就采取规则所指定的动作。
4. 下面将通过对运行了Snort的目标主机进行有意攻击,来观察Snort检测入侵的能力。
首先,向目标主机发送ICMP长数据包来观测Snort的反映,ICMP长数据包是有潜在危险的,一般会被视为入侵;然后,使用网络端口扫描工具Nmap对目标主机进行扫描,观察Snort的检测情况。
具体操作步骤如下:
(2)在目标主机中打开Log文件夹,此时可以发现在Log的根目录下自动生成了一个名为Alert的文件。
打开文件并观察其内容,Snort警报中记录了刚刚发送的ICMP长数据包,每条记录包括警报的类型和数据包的包头。
发送的ICMP长数据包之所以出现在警报中,是因为它的特征和Snort预先定义的规则相符。
警报如下列图所示:
(3)在Snort的安装目录下打开Rules文件夹,打开Icmp.rules文件,可以发现和该攻击对应的规则如下列图所示:
(4)执行端口扫描的检测。
把Snort.conf文件中相应端口配置部分的内容修改为:preprocessor sfportscan:proto{all}\ memcap{10000000}\ sense_level{medium}\ logfile{portscan}。
其中,proto指定了需要检测的协议类型,包括TCP、UDP、ICMP和IP,all表示检测所有的协议;sense_level指定检测的灵敏度,灵敏度高可以增加检测率,但有可能会同时增加误报率,Snort的默认选项是Low;logfile指定检测结果的输出文件名,该文件将创建在Log目录下。
(5)在局域网的另一台主机上运行Nmap,对目标主机进行SYN扫描,在命令行方式下输入如下命令:nmap -sS 192.168.1.100如下图,扫描探测到了两个开放端口139和455。
(6)在目标主机上查看记录端口扫描检测结果的文件Portscan。
可以看出,Snort准确识别并分析记录了端口扫描攻击相关的信息,如攻击者的IP地址,扫描的范围从21号端口到38037号端口,攻击者扫描到2个开放的端口:139和455。
Portscan文件中记录的并不是单条的网络数据包记录,而是Snort的端口模块对数据包和其他特性综合分析的结果,如在单位时间内来自同一IP的警报信息或TCP数据包的统计特征等。
(7)打开Alarm文件。
发现在Alarm文件里增加了与端口扫描相关的警告。
Alarm文件中记录的是单个数据包和规则匹配的结果;在Rules文件夹中打开检测端口扫描的规则集,可以找到与端口扫描警报相对应的规则:alert tcp $EXTERNAL_NET any -> $HOME_NET any (msg:"SCAN XMAS";flow:stateless; flags:SRAFPU,12;reference:arachnids,144;classtype:attempted-recon;sid:625;rev:7)
实验内容三:编写Snort规则
1. snort使用一种简单的,轻量级的规则描述语言,这种语言灵活而强大。
在开发snort 规则时要雇几个简单的原则:
(1)大多数snort规则都写在一个单行上,或都在多行之间的行尾用/分隔。
(2)snort被分成两个逻辑部分:规则头和规则项。
规则头包含规则的动作、协议、源和目标IP地址与网络掩码,以及源和目标端口信息;规则选项部分包含报警消息内容和要检查的包的部分。
(3)例如:alert tcp any any -> 192.168.1.0/24 111(content:"|00 01 86 a5|";msg:"mountd access";)。
第一个括号前的部分是规则头(rule header),包含的括号内的部分是规则选项(rule options)。
规则选项部分中冒号前的单词称为选项关键字(option keywords)。
注意,不是所有规则都必须包含规则选项部分,选项部分只是为了使对要悼念或报警,或丢弃的包的定义更加严格。
组成一个规则的所有元素对于指定的要采取的行动都必须是真的。
当多个元素放在一起时,可以认为它们组成一个逻辑与语句。
同时,snort规则库文件中的不同规则可以认为组成一个大的逻辑或语句。
2. 编写一个规则,通过捕捉关键字Search记录打开Google网页的动作,并将符合规则的数据包输出到Alert文件中。
(1)在Snort的Rules文件夹下创建Myrule文件,在Myrule文件中输入如下内容:alert tcp $EXTERNAL_NET any -> any 80(content:"search";nocase;msg:"Google Search Query";)
(3)以IDS模式启动Snort,打开浏览器,输入google 到google页面。
到Log文件夹下查看Alert文件,如下列图所示,可以发现规则中的字符串已经被记录了下来,即Snort 成功地检测到载入Google网页的动作,所定义的规则起到了预想的作用。
3. 尝试定义几个更为实用的规则,并在使用中检验它们的效果。
(1)在Myrule中添加如下3条规则:alert icmp $EXTERNAL_NET any -> $HOME_NET
any (dsize:0;itype:8;msg:"NMAP PING SCAN";)
alert tcp $EXTERNAL_NET any -> $HOME_NET any (flags:SF;msg:"NMAP SYN FIN SCAN";)
aler tcp $EXTERNAL_NET any -> $HOME_NET any (flags:A;ack:0;msg:"NMAP TCP PING";)
(2)运行Snort,在局域网另一台主机上运行Nmap,对主机进行端口扫描。
首先使用Nmap 的-sP选项进行ping扫描,然后使用-sS选项的SYN扫描,最后使用-sA选项进行ACK扫描。
(3)扫描完成后,回到主机查看Alert文件。
四、思考题
思考题一:
入侵检测的作用是什么?入侵检测系统与防火墙有什么区别?试分析两者在防止端口扫描方法上的异同。
思考题二:
入侵检测的原理是什么?常用的入侵检测技术有哪两种?使用不同检测方法的入侵检测系统主要会在哪个模块上有差异?
思考题三:
Snort最为突出的优势在于它的灵活、高效的软件结构,它使用了多维的规则链表对规则进行管理。
参考相关资料,分析Snort源码并总结其高层框架。