Snort入侵检测系统实验小组成员:09283012092830251.实验概述Snort是一套开放源代码的网络入侵预防软件与网络入侵检测软件。Snort使用了以侦测签章(signature-based)与通讯协定的侦测方法。Snort有三种工作模式:嗅探器、数据包记录器、网络入侵检测系统。嗅探器模式仅仅是从网络上读取数据包并作为连续不断的流显示在终端上。数据包记录器模式把数据包记录到硬盘上。网路入侵检测模式是最复杂的,而且是可配置的。我们可以让snort分析网络数据流以匹配用户定义的一些规则,并根据检测结果采取一定的动作。Snort最重要的用途还是作为网络入侵检测系统(NIDS)。本次实验任务主要有:(1)在虚拟机中的ubuntu上安装Snort。(2)描述Snort规则并进行检测。2.实验环境1.主机CPU:Pentium双核T4300@2.10GHz2.Vmware版本:VMwareWorkstation3.Linux发行版:Ubuntu11.044.Linux内核:Linux2.6.383.实验过程由于Ubuntu是Debian系的Linux,安装软件非常简单,而且Ubuntu在中国科技大学有镜像,在教育网和科技网下载速度非常快(2~6M/s),就省掉了出国下载安装包的麻烦,只需要一个命令即可在几十秒钟内安装好所有软件。具体实验步骤如下:1、这里使用Ubuntu默认命令行软件包管理器apt来进行安装。以下是代码片段:$sudoapt-getinstalllibpcap0.8-devlibmysqlclient15-devmysql-client-5.1mysql-server-5.1bisonflexapache2libapache2-mod-php5php5-gdphp5-mysqllibphp-adodbphp-pearpcregrepsnortsnort-rules-default需要注意的是在安装MySQL数据库时会弹出设置MySQL根用户口令的界面,临时设置其为“test”。2、在MySQL数据库中为Snort建立数据库。Ubuntu软件仓库中有一个默认的软件包snort-mysql提供辅助功能,用软件包管理器下载安装这个软件包。以下是代码片段:$sudoapt-getinstallsnort-mysql3、安装好之后查看帮助文档:$less/usr/share/doc/snort-mysql/README-database.Debian根据帮助文档中的指令,在MySQL中建立Snort的数据库用户和数据库。所使用的命令如下:以下是代码片段:$mysql–uroot–p登陆进入mysql的界面之后,根据上面文件中的配置方法对mysql进行配置:以下是代码片段:mysqlCREATEDATABASEsnort;mysqlgrantCREATE,INSERT,SELECT,UPDATEonsnort.*tosnort@localhost;mysqlgrantCREATE,INSERT,SELECT,UPDATEonsnort.*tosnort;mysqlSETPASSWORDFORsnort@localhost=PASSWORD('snort-db');mysqlexit以上命令的功能是在MySQL数据库中建立一个snort数据库,并建立一个snort用户来管理这个数据库,设置snort用户的口令为snort-db。然后根据README-database.Debian中的指示建立snort数据库的结构。以下是代码片段:$cd/usr/share/doc/snort-mysql$zcatcreate_mysql.gzmysql-usnort-Dsnort-psnort-db这样就为snort在MySQL中建立了数据库的结构,其中包括各个snort需要使用的表。设置snort把log文件输出到MySQL数据库中4、修改Snort的配置文件:/etc/snort/snort.conf以下是代码片段:$sudovim/etc/snort/snort.conf在配置文件中将HOME_NET有关项注释掉,然后将HOME_NET设置为本机IP所在网络,将EXTERNAL_NET相关项注释掉,设置其为非本机网络,如下所示:以下是代码片段:#varHOME_NETanyvarHOME_NET192.168.0.0/16#varEXTERNAL_NETanyvarEXTERNAL_NET!$HOME_NET将outputdatabase相关项注释掉,将日志输出设置到MySQL数据库中,如下所示:以下是代码片段:outputdatabase:log,mysql,user=snortpassword=snort-dbdbname=snorthost=localhost#outputdatabase:log,mysql这样,snort就不再向/var/log/snort目录下的文件写记录了,转而将记录存放在MySQL的snort数据库中。5、测试一下Snort工作是否正常:以下是代码片段:$sudosnort-c/etc/snort/snort.conf如果出现一个用ASCII字符画出的小猪,那么Snort工作就正常了,可以使用Ctrl-C退出;如果Snort异常退出,就需要查明以上配置的正确性了。6、测试Web服务器Apache和PHP是否工作正常,配置apache的php模块,添加msql和gd的扩展。以下是代码片段:$sudovim/etc/php5/apache2/php.iniextension=msql.soextension=gd.so重新启动apache以下是代码片段:$/etc/init.d/apache2restart7、在/var/目录下新建一个文本文件test.php以下是代码片段:$sudovim/var/输入内容:以下是代码片段:?phpphpinfo();?8、然后在浏览器中输入,如果配置正确的话,就会出现PHPINFO的经典界面,就标志着LAMP工作正常。安装和配置acid-base很简单,使用Ubuntu软件包管理器下载安装即可:以下是代码片段:$sudoapt-getinstallacidbase安装过程中需要输入acidbase选择使用的数据库,这里选MySQL,根用户口令test,和acid-base的口令(貌似也可以跳过不设置)。将acidbase从安装目录中拷贝到目录中,也可以直接在apache中建立一个虚拟目录指向安装目录,这里拷贝过来主要是为了安全性考虑。sudocp–R/usr/share/acidbase//var/因为acidbase目录下的base_conf.php原本是一个符号链接指向/etc/acidbase/下的base_conf.php,为了保证权限可控制,我们要删除这个链接并新建base_conf.php文件。以下是代码片段:$rmbase_conf.php$touchbase_conf.php暂时将/var/目录权限改为所有人可写,主要是为了配置acidbase所用。以下是代码片段:$sudochmod757acidbase/9、现在就可以开始配置acid-base了,在浏览器地址栏中输入,就会转入安装界面,然后就点击continue一步步地进行安装:(1)选择语言为english,adodb的路径为:/usr/share/php/adodb;(2)选择数据库为MySQL,数据库名为snort,数据库主机为localhost,数据库用户名为snort的口令为snort-db;(3)设置acidbase系统管理员用户名和口令,设置系统管理员用户名为admin,口令为test。然后一路继续下去,就能安装完成了。(4)安装完成后就可以进入登录界面,输入用户名和口令,进入acidbase系统。(5)这里需要将acidbase目录的权限改回去以确保安全性,然后在后台启动snort,就表明snort入侵检测系统的安装完成并正常启动了:以下是代码片段:$sudochmod775acidbase/$sudosnort-c/etc/snort/snort.conf-ieth0–D10、检查入侵检测系统工作状况,更改入侵检测规则。正常情况下在一个不安全的网络中,登录acidbase后一会儿就能发现网络攻击。如果没有发现网络攻击,可以添加更严格的规则使得正常的网络连接也可能被报攻击,以测试SnortIDS的工作正确性,比如在/etc/snort/rules/web-misc.rules的最后添加下面的话:以下是代码片段:$sudovi/etc/snort/rules/web-misc.rulesalerttcpany:1024-$HTTP_SERVER500:或者为:$sudovi/etc/snort/rules/web-misc.rulesalerttcp$EXTERNAL_NETany-$HOME_NET80这一行的意思是:对从任何地址小于1024端口向本机500以上端口发送的tcp数据包都报警。杀死Snort的后台进程并重新启动,就应该能检测到正常的包也被当作攻击了。(第二行为任何一个来自于非本机的IP地址的HTTP的TCP连接都会发生警报)。11、重新启动Snort入侵检测系统以下是代码片段:$sudokill`pgrepsnort`$sudosnort-c/etc/snort/snort.conf12、打开浏览器,在地址栏输入,出现BASE的界面。开启另外一台连接了互联网的计算机(即本机),在地址栏输入虚拟机中(ubuntu)的IP地址,之后出现下图所示界面,证明其他计算机成功访问了本机。13、随后在BASE界面上点击左侧的“-Today’salerts”的“listing”选项,可以看到snort已经查看到了外部机的访问并列出了所有的访问信息。四、实验总结通过这次实验,我体会到了Snort是一种轻量级的网络入侵预防和检测软件,安装比较简便,而且提供的检测也很全面。同时,还支持手动添加规则,而且规则的编写也比较简单。由于初次接触Snort,在配置和产生实验结果的过程中也遇到了一些问题。(1)在实验最初设置Snort时不成功,不能成功出猪。不能够查出原因,最后以重装的方法进行解决。(2)在写入规则后启动Snort出错。在asid-base的配置中出现了一些错误,根据提示进行了相应修改也都解决了。至于后来拦截规则的编写,通过查找资料也掌握了比较简单的规则编写方法。这次实验在让自己学到知识的同时,也培养了发现问题和解决问题的能力。由于ubuntu版本的问题在所有的配置都完成时可能会有依旧不能检测的问题,请将防火墙关闭.