入侵检测课程设计Word格式.doc
《入侵检测课程设计Word格式.doc》由会员分享,可在线阅读,更多相关《入侵检测课程设计Word格式.doc(31页珍藏版)》请在冰点文库上搜索。
4、安装snort(Ubuntu12.04软件列表中的snort默认是2.9,之前版本的软件列表的snort版本是较低版本):
sudoapt-getinstallsnort
5、Snort–v
6、Snort–vd
7、snort–vde
alertipanyany->
anyany(msg:
"
GotanIPPacket"
;
classtype:
not-suspicious;
sid:
2000000;
rev:
1;
)
alerticmpanyany->
GotanICMPPacket"
2000001;
ICMPLargeICMPPacket"
dsize:
>
800;
reference:
arachnids,246;
bad-unknown;
sid:
2000499;
4;
前面两个规则分别在捕获任何IP数据包和ICMP数据包的时候产生一个告警。
因为它们在遇到每一个数据包的时候都触发告警,所以在数据流量很大的网络段不适合使用这些规则!
如果必要的话,请在一个小网络段或测试网络段使用这些规则。
最后一个规则是对499号签名ID(标准规则)的拷贝进行修改以放宽产生告警的门限来满足我们的测试目的(注意:
Snort.org组织将1-1,000,000的签名ID号留给“正式”规则使用,详情请查看Snort的用户使用手册)。
正常情况下你应该避免放宽告警门限,因为这样会产生很多的误告警。
1.6实验总结:
通过这次的课程设计掌握在linux下的snort工具的安装、配置、使用方法,实现捕捉Telnet、FTP、HTTP等协议的数据包。
利用snort的检测功能,完成对一些攻击的检测.加深对各种攻击软件的了解.结合课堂授课内容,全面了解snort这个著名的开源入侵检测工具的实现方法和原理.为利用第三方软件分析进一步分析数据打下基础。
二、用Snort构建实用的入侵检测系统
2.1实验目的
(1)网络数据获取与分析是网络入侵检测系统的基础。
通过实验让同学们掌握网络数据获取及数据还原的方法和实现。
(2)通过实验让同学们加深对网络数据获取原理的理解。
(3)通过实验让同学们初步了解在linux下的程序开发过程、开发环境。
2.2实验内容
(1)安装除snort以外的其它软件,如Apach、PHP、mysql、acid的安装等相关软件。
(2)完成相应的配置文件的配置,如配置数据库输出插件、制订入侵防范策略等
(3)能利用下载的检测规则,检测入侵。
(4)自已完成一条规则的编写,并进行正确性测试。
(5)完成对检测规则的压力测试。
2.3实验要求
(2)将配置文件的的改动部分存储下来,传送到系ftp服务器上。
文件名命名规则是Lab2_学号
(3)所操作的重要步骤和结果用截屏的方法和文件的方式保存和存储,并送到ftp服务器上
(4)认真完成每一个实验步骤,并做好记录。
(5)根据所做的全部实验做一个简单总结。
2.4实验准备
(6)参考教材参考资料及网上有关资料
2.5实验步骤
一、LAMP服务器配置
1、提升权限
用sudosu提升用户权限。
2、更新软件包列表。
用apt-getupdate获取最新的软件包列表(如果不执行这一部可能在出现未发现软件包的现象)
3、安装MySQL5
apt-getinstallmysql-servermysql-client
安装过程中会遇到如下图的两个界面。
要求提供一个MySQLroot用户的密码-这个密码是为用户有效的根@本地主机以及作为root@的,所以我们不会有手动指定一个MySQLroot密码后:
MySQL的“root”用户:
新密码-yourrootsqlpassword
重复密码:
<
-yourrootsqlpassword
3、安装Apache2
Apt-getinstallApache2
修改apache默认目录(不修改也可以用,这里暂时不加阐述)
安装完成重启Apache/etc/init.d/apache2restart在浏览器中输入本机ip或是localhost
显示如下午即为安装成功。
4、安装PHP5
apt-getinstallphp5libapache2-mod-php5
重启Apache
/etc/init.d/apache2restart
5、测试的PHP5/获取PHP5安装的详细信息
默认网站的文件根目录是/var/www下面。
现在,我们将在该目录中创建一个小型PHP文件(info.php的)和在浏览器中调用它。
该文件将显示很多关于我们的PHP安装,如安装的PHP版本,有用的细节。
vi/var/www/info.php
<
?
php
phpinfo();
在浏览器中输入http:
//本机ip/info.php或localhost/info.php
正如你所看到的,PHP5的工作,它通过Apache2.0的处理程序,在服务器API线。
如果你继续向下滚动,你会看到所有在PHP5中已经启用的模块。
MySQL是没有列出,这意味着我们不必在PHP5支持MySQL
6、安装需要的Mysql对php支持包
可以用命令查找:
apt-cachesearchphp5
7、获得MySQL支持在PHP5
phpMyAdmin是一个网络接口,通过它可以管理你的MySQL数据库。
安装:
apt-getinstallphpmyadmin
你会看到以下问题点确定
安装完成之后在浏览器中输入localhost查看是否成功。
如果出现notfound错误,解决方法是进入var/www/目录下给phpmyadmin加一个软连接
命令如下:
cd/var/www/
sudo ln–s/usr/share/phpmyadmin
当配置都成功了可以看到phpmyadmin的界面,下图是我建完snort时的截图可能会你们看的的不同。
安装、配置Snort
安装过程中需要进行配置,配置过程如下:
sudosu
apt-getupdate
apt-getinstallsnort-mysql
Snort-mysql软件包安装完成后,在/usr/share/doc/snort-mysql/目录下放置了一些文档,可以使用如下方法查看文档
为snort创建数据库过程
mysql–uroot–p
createdatabasesonrtdb
grantcreat,insert,select,updateonsnort.*tosnort@localhost;
setpasswordforsnort@localhost=PASSWOED(‘snortpassword’);
exit;
测试创建的数据用户:
mysql–usnort–psnortpassword
能进入则证明创建成功;
将snort-mysql附带的sql文件导入数据库:
cd/uer/share/doc/snort-mysql/
zcatcreat_mysql.gz|mysqlsnortdb–usnort–psnortpassword
将/etc/snort/db-pending-config文件删除:
rm/etc/snort/db-pending-config
配置snort
在配置文件的第50行,将其修改为我们要监控的网段
varHOME_NET10.0.2.55/24
varEXTERNAL_NET!
$HOME_NET
在配置文件的第700行,找到“outoutdatabase:
log,mysql,”一行,如果此行没有被注释掉则注释掉,按照此行格式写一个新的;
该设置使Snort将log和alert信息都写入到指定的MySQL数据库中。
在/var/log/snort/目录下创建alert文件,并更改所有者为snort,否则snort因不能写入这个文件无法启动,
cd/var/log/snort/
touchalert
chownsnortalert
设置完成后,测试配置是否正常:
snort–c/etc/snort/snort.conf
最后出现这个画面,说明配置成功了,按“Ctrl+C”键即可退出。
用如下命令查看/var/log/syslog日志文件:
cat/var/log/syslog|grepsnort|grepERROR
安装、配置acidbase软件包
apt-getinstallacidbase
此时,数据库选择MySQL数据库,如下所示:
此时输入MySQL数据库的root用户密码,如下所示:
此过程时,直接按回车键即可,让系统自动生成密码,如下所示:
配置Apache
acidbase软件包自己带了一个Apache配置文件,位于/etc/acidbase/apache.conf,修改该文件,将其包含到当前的
虚拟主机的配置文件中
Vi/etc/acidbase/apache.conf
重新加载Apache配置,并重启Apache服务:
Serviceapache2reload
Serviceapache2restart
配置acidbase
在浏览器中打开:
http:
//ip地址/acidbase/setup/,开始配置,在第一个页面上,点击“Continue”,如下图所示:
在接下来的步骤中,语言选择“simplified_chinese”,并输入路径“/usr/share/php/adodb”
在“Step2of5”界面上,输入MySQL数据库信息
在“Step3of5”界面上,输入用户名和密码,用于登陆BASE
在“Step4of5”界面上,点击“CreateBASEAG”按钮,在数据库中创建表
此时,如果你看到了如下所示界面,说明数据库表创建成功,然后点击最下方的"
step5"
将生成的配置文件复制下来:
生成的配置文件,并保存为/etc/acidbase/base_conf.php,并在配置文件的460行左右找到$BASEE_path将其注掉,并添加一行
$BASE_path="
/usr/share/acidbase"
保存退出文件后,修改文件权限
Chmodc=/etc/acidbase/base_conf.php
Chgrpwww-date/etc/acidbase/base_conf.php
此时登陆http:
//localdhost/acidbase/页面,输入用户名、密码,来查看Snort截获的入侵日志:
这个是个用ping命令测试snort是否正常工作的规则,当我ping此入侵检测系统时就会得到警告信息"
2.6实验总结:
在上次的基础上继续这次的实验,因为有了之前的基础所以对snort有了更加清楚的了解,实验进行的比较顺利。
因为以前有过LAMP的搭建的经历所以对能很好的完成实验。
但是在写入侵检测规则的时候还有有些困难,因为要想写好一个规则要对通信的协议比较清楚,还要了解入侵的手段。
因为只有具备上述要求才能写出一条有效的规则。
三、简单的基于嗅探器的入侵检测系统的设计与实现
3.1实验目的
(1)了解和掌握基于网络入侵检测系统的设计与实现原理
(2)掌握网络数据采集的机制和实现方法
(3)利用模式匹配技术和协议分析技术实现简单的检测引擎
3.2实验内容
(1)设计并实现一个简单的嗅探器
(2)针对嗅探器所捕获的数据包实现解码/译码和特征检测
3.3实验要求
(2)将源代码,传送到系ftp服务器上。
要求源代码有注释,可读性较好。
文件名命名规则是Lab3_学号
(3)将程序的执行结果通过截屏等方式记录下来,并做简单分析。
(4)认真完成每一个实验步骤,并总结、并进行现场演示和说明。
了解基于嗅探器的入侵检测系统的设计原理。
源码:
//xiutan.cpp:
定义控制台应用程序的入口点。
//
#include"
stdafx.h"
stdio.h"
winsock2.h"
#defineSIO_RCVALL_WSAIOW(IOC_VENDOR,1)//thisremovestheneedofmstcpip.h
voidStartSniffing(SOCKETSock);
//Thiswillsniffhereandthere
voidProcessPacket(unsignedchar*,int);
//Thiswilldecidehowtodigest
voidPrintIpHeader(unsignedchar*,int);
voidPrintIcmpPacket(unsignedchar*,int);
voidPrintUdpPacket(unsignedchar*,int);
voidPrintTcpPacket(unsignedchar*,int);
voidConvertToHex(unsignedchar*,unsignedint);
voidPrintData(unsignedchar*,int);
//IPHeaderStructure
typedefstructip_hdr
{
unsignedcharip_header_len:
//4-bitheaderlength(in32-bitwords)normally=5(Means20Bytesmaybe24also)
unsignedcharip_version:
//4-bitIPv4version
unsignedcharip_tos;
//IPtypeofservice
unsignedshortip_total_length;
//Totallength
unsignedshortip_id;
//Uniqueidentifier
unsignedcharip_frag_offset:
5;
//Fragmentoffsetfield
unsignedcharip_more_fragment:
unsignedcharip_dont_fragment:
unsignedcharip_reserved_zero:
unsignedcharip_frag_offset1;
//fragmentoffset
unsignedcharip_ttl;
//Timetolive
unsignedcharip_protocol;
//Protocol(TCP,UDPetc)
unsignedshortip_checksum;
//IPchecksum
unsignedintip_srcaddr;
//Sourceaddress
unsignedintip_destaddr;
//Sourceaddress
}IPV4_HDR;
//UDPHeaderStructure
typedefstructudp_hdr
unsignedshortsource_port;
//Sourceportno.
unsignedshortdest_port;
//Dest.portno.
unsignedshortudp_length;
//Udppacketlength
unsignedshortudp_checksum;
//Udpchecksum(optional)
}UDP_HDR;
//TCPHeaderStructure
typedefstructtcp_header
{
unsignedshortsource_port;
//sourceport
unsignedshortdest_port;
//destinationport
unsignedintsequence;
//sequencenumber-32bits
unsignedintacknowledge;
//acknowledgementnumber-32bits
unsignedcharns:
//NonceSumFlagAddedinRFC3540.
unsignedcharreserved_part1:
3;
//accordingtorfc
unsignedchardata_offset:
/*Thenumberof32-bitwordsintheTCPheader.
Thisindicateswherethedatabegins.
ThelengthoftheTCPheaderisalwaysamultiple
of32bits.*/
unsignedcharfin:
//FinishFlag
unsignedcharsyn:
//SynchroniseFlag
unsignedcharrst:
//ResetFlag
unsignedcharpsh:
//PushFlag
unsignedcharack:
//AcknowledgementFlag
unsignedcharurg:
//UrgentFlag
unsignedcharecn:
//ECN-EchoFlag
unsignedcharcwr:
//CongestionWindowReducedFlag
////////////////////////////////
unsignedshortwindow;
//window
unsignedshortchecksum;
//