入侵检测实验.doc
《入侵检测实验.doc》由会员分享,可在线阅读,更多相关《入侵检测实验.doc(17页珍藏版)》请在冰点文库上搜索。
入侵检测实验
(一)实验人
04软件工(程信息技术) 04381084 姚瑞鹏
04软件工(程信息技术) 04381083 姚斌
04软件工(程信息技术) 04381086 钟俊方
04软件工(程信息技术) 04381090 郭睿
(二)实验目的
1.理解入侵检测的作用和检测原理
2.理解误用检测和异常检测的区别
3.掌握Snort的安装、配置和使用等实用的技术
(三)实验设备与环境
2台安装WindowsXP的PC机,在其中一台主机上安装Windows平台下的Snort2.4.5软件,一台Windows平台下的安装Nmap软件,通过Switch相连。
实验环境的网络拓扑如下图所示。
交换机
局域网
路由器
互联网
防火墙
服务器1
192.168.200.1
192.168.200.2
服务器2
(四)实验内容与步骤
1.Windows平台下Snort的安装与配置
由于需要对网络底层进行操作,安装Snort需要预先安装WinpCap(WIN32平台上网络分析和捕获数据包的链接库),如图所示:
1)安装Snort,双击安装程序进行安装,选择安装目录为D:
\Snort。
2)进行到选择日志文件存放方式时,为简单起见,选择不需要数据库支持或者Snort默认的MySQL和ODBC数据库支持的方式,如图所示:
3)单击“开始”按钮,选择“运行”,输入cmd,在命令行方式下输入下面的命令:
C:
\>cdD:
\Snort\bin
D:
\Snort\bin>snort–W
如果Snort安装成功,系统将显示出如图所示的信息。
4)从返回的结果可知主机上有哪个物理网卡正在工作及该网卡的详细信息,上图显示的两张物理地址的网卡。
这里我们实用第2张网卡监听。
输入snort–v–i2命令,-v表示使用Verbose模式,把信息包打印在屏幕上,-i2表示监听第二个网卡。
5)我们在另一台主机上安装Nmap软件,如图所示:
为了进一步查看Snort的运行状况,可以人为制造一些ICMP网络流量。
如图所示,在局域网段中的另一台主机(192.168.200.2)上使用Ping指令,探测运行Snort的主机。
6)回到运行Snort的主机(192.168.200.1),发现Snort已经记录了这次探测的数据包,如图所示。
Snort在屏幕上输出了从192.168.200.2到192.168.200.1的ICMP数据包头。
7)打开D:
\Snort\etc\snort.conf,设置Snort的内网和外网检测范围。
将Snort.conf文件中的varHOME_NETany语句中的Any改为自己所在的子网地址,即将Snort监测的内网设置为本机所在的局域网。
将Any改为192.168.1.0/24。
将varHOME_NETany语句中的HOME_NET的值改为本地网络的标识,即192.168.1.0/24。
如图所示:
8)配置网段内提供网络服务的IP地址,只需要把默认的$HOME_NET改成对应主机地址即可。
varDNS_SERVERS$HOME_NETvarSMTP_SERVERS$HOME_NET
varHTTP_SERVERS$HOME_NET
varSQL_SERVERS$HOME_NET
varTELNET_SERVERS$HOME_NET
varSNMP_SERVERS$HOME_NET
如果不需要监视某种类型的服务,可以用#号将其注释掉。
9)修改设置监测包含的规则。
在配置文件末尾,定义了与规则相关的配置,格式如下:
include$RULE_PATH/local.rules
include$RULE_PATH/bad-traffic.rules
include$RULE_PATH/exploit.rules
变量$RULE_PATH指明了规则文件存放的路径,可以在语句varRULE_PATH../rules中将变量RULE_PATH改为存放规则集的目录,如D:
\snort\rules。
可以到http:
//www.snort.org/pub-bin/downloads.cgi上下载最新的规则集,将其解压存放到规则默认路径下。
如图所示:
10)在Snort.conf中,修改配置文件Classification.conf和Reference.conf的路径:
IncludeD:
\Snort\etc\classification.conf
IncludeD:
\Snort\etc\reference.config
其中Classification.conf保存的是和规则的警报级别相关的配置,Reference.conf保存了提供更多警告相关信息的链接。
如下图所示:
2.Windows平台下Snort的使用
1)Snort嗅探器模式。
检测Snort安装是否成功时,用到的就是Snort嗅探器模式,输入命令:
snort–v–i2,使Snort只将IP和TCP/UDP/ICMP的包头信息输出到屏幕上。
如果要看到应用层的数据,可以输入命令:
snort–v–d–i2。
如图所示:
2)数据包记录器模式。
上面的命令只是在屏幕上输出,如果要记录在LOG文件上,需要预先建立一个Log目录,输入下面的命令启用数据包记录器模式:
snort–dve–i2-ld:
\Snort\log-h192.168.1.0/24–Kascii
其中-l选项指定了存放日志的文件夹;-h指定目标主机,这里检测对象是局域网段内的所有主机,如不指定-h,则默认检测本机;选项-K指定了记录的格式,默认是Tcpdump格式,此处使用ASCII码。
在命令行窗口运行了该指令后,打开保存日志的目录。
在Log目录下自动生成了许多文件夹和文件,文件夹是以数据包目的主机的IP地址命名,每个文件夹下记录的日志就是和该外部主机相关的网络流量。
打开其中任一个,使用记事本查看日志文件,会发现文件的内容和嗅探器模式下的屏幕输出类似,如图所示。
3)网络IDS模式。
Snort最重要的用途还是作为基于误用检测技术的NIDS,输入下面的命令启动IDS模式:
snort–i2-dev-ld:
\snort\log-h192.168.1.0/24–Kascii-cd:
/Snort/etc/snort.conf
相比数据包记录器模式中使用的命令,只增加了一个选项-c,这个选项将告诉Snort使用Snort.conf中的规则集文件。
Snort会对每个包和规则集进行匹配,如符合规则就采取规则所指定的动作。
下面将通过对运行了Snort的目标主机进行有意的攻击来观察Snort检测入侵的能力。
首先向目标主机发送长度过大的ICMP包来观测Snort的反映,长度过大的ICMP包是有潜在危险的,一般会被视为入侵。
然后,使用网络端口扫描工具Nmap对目标主机进行扫描,观察Snort的检测情况。
(1)在安装好Snort的目标主机的命令行方式下输入上面的指令,使Snort工作在IDS模式。
如下图所示:
(2)在局域网的另一台主机(192.168.200.2)上向目标主机发送数据包,输入下面的命令:
ping–l45678192.168.200.1
(3)在目标主机中打开Log文件夹,此时可以发现在Log的根目录下自动生成了一个名为Alert的文件。
使用Notepad打开该文件并观察其内容,如图所示,Snort警报中记录下了刚才发送的ICMP长数据包,其中每条记录包括警报的类型和数据包的包头。
发送的ICMP数据包之所以出现在警报中,是因为它的特征和Snort预先定义的规则相符。
(4)在Snort的安装目录下打开Rules文件夹,用Notepad打开Icmp.rules,可以发现和该攻击对应的规则如图所示,完整的内容如下:
alerticmp$EXTERNAL_NETany->$HOME_NETany(msg:
"ICMPLargeICMPPacket";dsize:
>800;reference:
arachnids,246;classtype:
bad-unknown;sid:
499;rev:
4;)
(5)执行端口扫描的检测。
把Snort.conf文件中相应端口配置部分的内容修改为如图所示的值。
其中,Proto指定了需要检测的协议类型,包括TCP、UDP、ICMP和IP,All表示检测所有的协议;Sense_level指定检测的灵敏度,灵敏度高可以增加检测率,但有可能会同时增加误报率,Snort的默认选项是Low;Logfile指定检测结果的输出文件名,该文件将创建在Log目录下。
(6)在192.168.200.2上运行Nmap,对目标主机(192.168.200.1)进行SYN扫描,在命令行方式下输入命令:
nmap–sS192.168.200.1。
(7)如图所示,扫描探测到了两个开放端口139和445。
(8)在目标主机上查看记录端口扫描检测结果的文件Portscan。
可以看出,Snort准确地识别并分析记录了端口扫描攻击相关的信息,如攻击者的IP地址是192.168.200.2,扫描的范围从21号端口到38037号端口,攻击者扫描到2个开放的端口:
139和445。
Portscan文件中记录的并不是单条的网络数据包记录,而是Snort的端口扫描模块对数据包和其他特性综合分析的结果,如在单位时间内来自同一IP的警报信息或TCP数据包的统计特征等。
(9)打开Alarm文件。
如图所示,发现在Alarm文件里增加了和端口扫描相关的警告。
Alarm文件中记录的是单个数据包和规则匹配的结果。
(10)在Rules文件夹中打开检测端口扫描的规则集,可以找到和端口扫描的警报相对应的规则。
alerttcp$EXTERNAL_NETany->$HOME_NETany(msg:
"SCANXMAS";flow:
stateless;flags:
SRAFPU,12;reference:
arachnids,144;classtype:
attempted-recon;sid:
625;rev:
7;)
3.编写Snort规则
1)编写第一个规则,通过捕捉关键字“search”记录打开Google网页的动作,并将符合规则的数据包输出到Alert文件中。
(1)在Snort的Rules文件夹下创建Myrule文件,在Myrule文件中输入如图所示的内容。
(2)在Snort.conf中添加新建的规则文件。
在Sonrt.conf的规则区域中(也可在文件末)添加下面的语句:
include$RULE_PATH/myrule.rules
(3)按照上节介绍的方法以IDS模式启动Snort。
(4)打开网络浏览器,输入并单击确认按钮。
到Log文件夹下查看Alert文件,如图所示。
可以发现规则中的字符串已经被记录了下来,也就是说Snort成功地检测到载入Google网页的动作,所定义的规则起到了预想的作用。
2)接下来,尝试定义几个更为实用的规则,并在使用中检验它们的效果。
(1)在Myrule中添加如下3条规则,如图所示。
alerticmp$EXTERNAL_NETany->$HOME_NETany(dsize:
0;itype:
8;msg:
"NMAPPINGSCAN";)
alerttcp$EXTERNAL_NET->$HOME_NETany(flags:
SF;msg:
"NMAPSYNFINSCAN";)
alerttcp$EXTERNAL_NET->$HOME_NETany(flags:
A;ack:
0;msg:
"NMAPTCPPING";)
(2)运行Snort。
(3)在192.168.200.2这台主机上运行Nmap,对192.168.200.1主机进行端口扫描。
首先使用Nmap的-sP选项进行Ping扫描,然后使用-sS选项进行SYN扫描,最后使用-sA选项进行ACK扫描。
(4)扫描完成后,回到192.168.200.1主机查看Alert文件,如图所示。