实验报告
实验内容:
(1) 在Windows平台建立基于Snort的IDS。
(2) 在本地计算机中添加UDP检测规则,在另外一台计算机启动和本地计算机的UDP连接请求,查看UDP协议流量的日志记录,分析变化结果,提交实验报告。
(3) 自己编写检测规则文件mytelnet.rules,用于记录对内网的Telnet连接企图,并发出下面的警告:External net attempt to access internal telnet sever,将此规则文件添加到设置文件中,并通过实验观察规则是否生效,整理步骤和实验结果提交报告。
实验步骤:
(1)在Windows平台建立基于Snort的IDS。
要在windows下建立snort的IDS需要的软件有:Snort_2_8_4_1_Installer.exe;WinPcap_3_0.exe。
安装软件:
首先安装WinPcap_3_0.exe,安装过程略。根据界面提示进行操作即可 然后安装Snort_2_8_4_1_Installer.exe。安装过程略。根据界面提示进行操作即可。
Snort安装成功的标志是见下图:
其中红线所划得那个字段是我做实验使用的网卡。
配置snort。
安装完成后首先设置环境变量PCAP_FRAMES。在“我的电脑”的“属性”菜单的“高级”选项卡中的“环境变量”选项中的“adminstrator用户变量”(此账户为当前登入账户即可,不一定要“adminstrator”,如果要设置此环境变量对任何账户有效,可以在“系统变量”中新建此环境变量)中新建环境变量“PCAP_FRAMES”,其值设置为“MAX”。具体见图:
要使此环境变量生效需要重启电脑或者注销账户重新登入。 然后利用cmd命令cd C:\\snort\\bin进入snort可执行目录bin下。
利用命令snort -v和snort snort -dev -l ../log -c ../etc/snort.conf进行调试,利用上述两个命令提供的报错信息逐步修改snort.conf文件和rules文件夹下的相关规则文件。
先用snort -v命令。 Snort -v命令使snort工作在嗅探器模式。Snort能从网络上读出数据包然后显示在你的控制台上。
我第一次使用此命令的效果如图:
从图中我们可以发现,虽然看似运行正常,但是没有抓到一个数据包。经过查资料发现,snort默认选择的网卡是编号为1的接口,它并不判断此卡是否为当前使用的。我红线划得正是它默认选择的接口,是我电脑上的1394网络适配器。我们应该用-i选项来选择我们所要使用的网卡。结合snort -W命令中得到的信息。我把snort -v 命令修改为 snort -i 2 - v这样就运行正常了。效果图如下:
然后使用snort snort -dev -l ../log -c ../etc/snort.conf命令调试,更好的应该使用snort snort -i 2 -dev -l ../log -c ../etc/snort.conf。
snort snort -dev -l ../log -c ../etc/snort.conf snort.conf是snort的配置文件。 此命令含义是:
snort会对每个包和规则集进行匹配,发现这样的包与规则匹配就采取相应的行动。Snort会把行动的相关信息与包信息输出到../log目录。 刚开始使用此命令使得到如下一些错误。 错误1:
此错误说明snort无法找到动态引擎的动态库libsf_engine.so。而*.so文件时linux下的动态库文件,这说明此软件是从linux下移植到windows下的,我们只要找到相应的*.dll文件的路径在snort.conf文件中替换掉即可。替换结果如图: 替换前:
替换后:
注:这里我更改的路径是在E盘。由于我重装了几次snort,我最终做实验的时候snort是安装在c盘根目录下的。而在snort.conf文件中的路径也是至C盘而不是E盘。
一系列在规则文件中的类似错误,修改方法为在相应的文件找到相应的行注释掉即可。 错误报告:
修改的部分举例(以前两错误为例):
经过上述两步调试后,snort配置基本完成。 (2) 在本地计算机中添加UDP检测规则。
我用的udp规则为:
alert udp any any <> $HOME_NET ids/dns-version-query\";content:\"|0100|\";sid:2458;)
any
(msg:\"udp
它的含义是:对任意ip任意端口到任意ip(HOME_NET值为any)任意端口的数据段包含0x0100字段的udp包产生警告,输出警告信息为“udp ids/dns-version-query” 。
我把此内容保存成udp.rules文件放入..\\rules文件夹。并在snort.conf中包含规则文件处加入如下语句:
Include $RULE_PATH\ules 效果如图(红线划出的为新加语句):
注:snort.conf文件中的路径分隔符为\"/\",这个一般在linux的表示方法。为了系统正常运行,我把所有\"/\"改为\"\\\"。 添加完毕后测试效果:
利用命令
Snort -i 2 -dev -l ..\\log -c ..\\etc\\snort.conf 测试。
运行后不仅在cmd命令行下显示了所有包的内容,而且对满足规则要求的数据包的警告信息写入了alert.ids文件。
文件局部内容效果图如下:
(3)自己编写检测规则文件mytelnet.rules,用于记录对内网的Telnet连接企图,并发出下面的警告:External net attempt to access internal telnet sever。
Telnet服务的端口为23,利用这个信息,我编写的规则如下:
alert tcp any any -> 59..130.76/23 23 (msg: \"External net attempt to access internal telnet sever\";sid:2460;)
上述规则仅为实验而写,实际中我们一般写成如下形式:
alert tcp $EXTERNAL_NET any -> $HOME_NET 23 (msg: \"External net attempt to access internal telnet sever\";sid:2460;)
这样可以通过定义变量EXTERNAL_NET和变量HOME_NET来设置内段,达到真正记录对内网的Telnet连接企图的效果。
我把上述语句存成mytelnet.rules文件放入..\\rules文件夹,并在snort.conf文件中添加语句
include $RULE_PATH\\mytelnet.rules
然后打开本机telnet服务。
利用命令snort -i 2 -l ..\\log -c ..\\etc\\snort.conf运行,在59..130.242这台机子上对本机进行Telnet连接。最后有相应的警告信息写入alert.ids。 警告信息效果如图:
实验心得:
通过这个实验,我对入侵检测系统的相关内容有了更深入的了解,对入侵检测系统在个人电脑上的运行情况也有了简单的接触。通过在windows下安装snort 和修改其配置文件(snort.conf),并利用它完成实验,对snort的配置和使用有了较深刻的理解和体会。另外,我还通过学习snort规则编写的语法,能利用此语法写出简单但正确的规则。在实验中效果良好。其实我觉得snort规则编写的语法比较简单,但是要写出实用的规则,还是要对网络协议有深入的理解。