snort入侵检测系统DOC.docx
《snort入侵检测系统DOC.docx》由会员分享,可在线阅读,更多相关《snort入侵检测系统DOC.docx(35页珍藏版)》请在冰豆网上搜索。
snort入侵检测系统DOC
甘肃政法学院
入侵检测课程设计
题目snort入侵检测系统
学院专业
2011级班
学号:
姓名:
指导教师:
成绩:
_________________
完成时间:
2013年12月
Snort入侵检测系统
一、课程设计目的
(1)通过实验深入理解入侵检测系统的原理和工作方式。
(2)熟悉入侵检测工具snort在Windows操作系统中的安装和配置方法
二.课程设计的原理
入侵检测系统(IntrusionDetectionSystem,简称IDS)是一种从计算机网络或计算机系统中的若干关键点收集入侵者攻击时所留下的痕迹,如异常网络数据包与试图登录的失败记录等信息,通过分析发现是否有来自于外部或内部的违反安全策略的行为或被攻击的迹象。
全国的很多企业或团体都很重视自己内部保密文件的泄露与盗取,但网络传输方式有的就存在着漏洞,很多的黑客就是通过一个企业或团体的所拥有的网站通过这些漏洞来拿到这个企业的服务器,竟而获得它的内部保密文件,但是安全部门也通过电脑审计功能或其它的各种方式来对于入侵公司的“人员”获得他们入侵的记录,做出相应的法律措施,来保证每一个企业或团体的文件安全。
随着网络技术的快速发展,网络入侵行为也越来越严重,本论文主要讨论snort入侵检测系统。
Snort是一个免费的IDS(入侵监测系统)软件。
它的一些源代码是从著名tcpdump软件发展而来的。
它是一个基于libpcap包的网络监控软件,可以作为一个十分有效的网络入侵监测系统。
Snort首先根据远端的ip地址建立目录,然后将检测到的包以tcpdump的二进制格式记录或者以自身的解码形式存储到这些目录中.这样一来,你就可以使用snort来监测或过滤你所需要的包.
三、入侵检测系统的起源和发展
随着网络的普及,每个人都通过不同的方式来访问网络,尤其是在B/S模式的网络结构中,比如很多的公司机密资料、广大人群的购物交易、安全部门为人们了解国家所发布的文章都是通过网络来传输,有很多的“不良分子”在利益的驱使下,通过攻击web的漏洞,来获取的自己所要的东西,已达到自己不可告人的目的。
Snort是一个轻量级的入侵检测系统,它具有截取网络数据报文,进行网络数据实时分析、报警,以及日志的能力。
snort的报文截取代码是基于libpcap库的,继承了libpcap库的平台兼容性。
它能够进行协议分析,内容搜索/匹配,能够用来检测各种攻击和探测,例如:
缓冲区溢出、隐秘端口扫描、CGI攻击、SMB探测、OS指纹特征检测等等。
snort使用一种灵活的规则语言来描述网络数据报文,因此可以对新的攻击作出快速地翻译。
snort具有实时报警能力。
可以将报警信息写到syslog、指定的文件、UNIX套接字或者使用WinPopup消息。
snort具有良好的扩展能力。
它支持插件体系,可以通过其定义的接口,很方便地加入新的功能。
snort还能够记录网络数据,其日志文件可以是tcpdump格式,也可以是解码的ASCII格式。
而且,Snort对硬件没有特殊的要求,对Snort来说,硬件系统的处理器频率越高越好,不同网络使用的网卡和硬盘空间大小会制约Snort捕捉数据包和存储数据包的功能。
主要来说,Snort作为一个基于网络的入侵检测系统(NIDS),在基于共享网络上检测原始的网络传输数据,通过分析捕获的数据包,匹配入侵行为的特征或者从网络活动的角度检测异常行为,进而采取入侵的告警或记录。
从检测模式而言,Snort属于是误用检测,即对已知攻击的特征模式进行匹配。
从本质上来说,Snort是基于规则检测的入侵检测工具,即针对每一种入侵行为,都提炼出它的特征值并按照规范写成检验规则,从而形成一个规则数据库。
其次将捕获得数据包按照规则库逐一匹配,若匹配成功,则认为该入侵行为成立。
同时snort还是一个自由、简洁、快速、易于扩展的入侵检测系统,已经被移植到了各种UNIX平台和Win98,Win2000上。
它也是目前安全领域中,最活跃的开放源码工程之一。
在Snort.org上几乎每天都提供了最新的规则库以供下载,由于snort本身是自由的源码开放工程所以在使用snort时除了必要的硬件外软件上基本上不需要有任何额外的开销。
这相对于少则上千多则上万的商业入侵检测系统来说,无疑是最好的替代产品之一。
Snort入侵系统概述
Snort作为一个基于网络的入侵检测系统(NIDS),在基于共享网络上检测原始的网络传输数据,通过分析捕获的数据包,匹配入侵行为的特征或者从网络活动的角度检测异常行为,进而采取入侵的告警或记录。
从检测模式而言,Snort属于是误用检测,即对已知攻击的特征模式进行匹配。
从本质上来说,Snort是基于规则检测的入侵检测工具,即针对每一种入侵行为,都提炼出它的特征值并按照规范写成检验规则,从而形成一个规则数据库。
其次将捕获得数据包按照规则库逐一匹配,若匹配成功,则认为该入侵行为成立。
Snort系统的特点
1)Snort是一个轻量级的入侵检测系统它虽然功能强大,但是代码却极为简洁、短小,其源代码压缩包不到2兆。
2)Snort的可移植性很好
Snort的跨平台性能极佳,目前已经支持Linux,Solaris,BSD,IRIX,HP-UX,windows等系统。
采用插入式检测引擎,可以作为标准的网络入侵检测系统、主机入侵检测系统使用;与Netfilter结合使用,可以作为网关IDS(GatewayIDS)等系统指纹识别工具结合使用,可以作为基于目标的IDS(Target—basedIDS)。
3)Snort的功能非常强大
Snort具有实时流量分析和日志IP网络数据包的能力。
能够快速地检测网络攻击,及时地发出报警。
Snort的报警机制很丰富,例如:
syslog、用户指定的文件、一个UNIX套接字,还有使用SAMBA协议向Windows客户程序发出WinPopup消息。
利用XML插件,Snort可以使用SNML(简单网络标记语言,simplenetworkmarkuplanguage)把日志存放到一个文件或者适时报警。
Snort能够进行协议分析,内容的搜索/匹配。
现在Snort能够分析的协议有TCP,UDP,ICMP等。
将来,可能提供对ARP、ICRP、GRE、OSPF、RIP、IPXIPX等协议的支持。
它能够检测多种方式的攻击和探测,例如:
缓冲区溢出、秘密端口扫描、CGI攻击、SMB探测、探测操作系统指纹特征的企图等等。
Snort的日志格式既可以是Tcpdump式的二进制格式,也可以解码成ASCH字符形式,更加便于用户尤其是新手检查。
使用数据库输出插件,Snort可以把日志记入数据库,当前支持的数据库包括:
Postagresql、MySQL、oraCle、任何UNIXODBC数据库等。
使用TCP流插件(TcpStream),Snort可以对TCP包进行重组。
Snort能够对IP包的内容进行匹配,但是对于TCP攻击,如果攻击者使用一个程序,每次发送只有一个字节的TCP包,完全可以避开Snort的模式匹配。
而被攻击的主机的TCP协议栈会重组这些数据,将其送给在目标端口上监听的进程,从而使攻击包逃过Snort的监视。
使用TCP流插件,可以对TCP包进行缓冲,然后进行匹配,使Snort具备了对付上面这种攻击的能力。
使用SPADE(StatisticalPacketAnomalyDetectionEngine)插件,Snort能够报告非正常的可疑包,从而对端口扫描进行有效的检测。
4)扩展性能较好,对于新的攻击威胁反应迅速
作为一个轻量级的网络入侵检测系统,Snort有足够的扩展能力。
它使用一种简单的规则描述语言。
最基本的规则只是包含四个域:
处理动作、协议、方向、注意的端口。
还有一些功能选项可以组合使用,实现更为复杂的功能。
Snort支持插件,可以使用具有特定功能的报告、检测子系统插件对其功能进行扩展。
Snort当前支持的插件包括:
数据库日志输出插件、碎数据包检测插件、端口扫描检测插件、HTTPURINormalization插件、XML插件等。
同时,它支持多种格式的特征码规则输入方式,如数据库、XML等。
Snort的规则语言非常简单,能够对新的网络攻击做出很快的反应。
发现新的攻击后,可以很快根据其特征码,写出检测规则。
因为其规则语言简单,所以很容易上手,节省人员的培训费用。
5)多用途性
Snort系统不但可以作为入侵检测系统,还可以作为数据包嗅探器、数据包记录器使用。
6)遵循公共通用许可证GPL
Snort遵循GPL,所以任何企业、个人、组织都可以免费使用它作为自己的入侵检测系统。
但是,Snort系统也有很大的局限性,其系统结构决定了其检测规则只能使用落后的简单模式匹配技术,适应目前不断出现的新的攻击方式的能力有限:
并且它在网络数据流量很大的时候容易产生漏报和误报,这对于目前的宽带潮流是一个很大的缺点。
四、Windows下Snort的集成式安装
(1)安装Snort和Wincap包
Snort安装1
Snort安装2
Snort安装3
Snort安装4
(2)Winpcap的安装界面
Winpcap安装1
Winpcap安装2
Winpcap安装3
Winpcap安装4
2.安装AppServ
启动AppServ安装文件后,出现如图所示的设置服务器信息界面:
在ServerName中输入域名localhost:
Administrator'sEmailAddress中输入邮箱地址:
1298785661@监听端口设为8080。
点击next,进入下一界面:
在出现的界面中输入密码(123):
"CharacterSetsandCollations"选择"GB2312SimplifiedChinese",
先将C:
\Appserv\php5目录下的php.ini-dist文件改名为php.Ini,然后启动Apache和MySql。
点击finish。
在控制面板—》管理—》服务中查看服务,确保Apache和MySql已启动。
安装完成后可以查看Apache和MySql是不是可以正常运行。
Mysql正常运行
在浏览器中输入http:
//localhost:
8080/
Apache运行成功
(2)测试AppServ
首先查看"控制面板"/"管理"/"服务",确保Apache和MySQL已经启动,然后,在浏览器中输入http:
//localhost:
8080/phpinfo.php,(下图)
可以了解php的一些信息。
最后打开浏览器,输入http:
//localhost:
8080/phpMyAdmin/index.php下图)输入用户名root和密码,可以浏览数据库内容。
(3)配置AppServ
第一步,编辑Apache服务器配置文件。
打开C:
\AppServ\Apache2.2\conf文件中的httpd.conf,检查相应的一些值
进入Apache服务器配置文件
需要检查一下一些值:
LoadModulephp5_moduleC:
/AppServ\php5\php5apache2_2.dll
ServerNamelocalhost:
8080
DocumentRoot"C:
/AppServ/www"
第二步,编辑phpMyAdmin中的关键文件。
打开C:
\AppServ\www\phpMyAdmin\libraries目录下的config.default.php文件。
设置phpMyadmin的URL,$cfg['PmaAbsoluteUri']='http:
//localhost:
8080/phpmyadmin/'
$cfg['blowfish_secret']='123'
$cfg['DefaultLang']='zh-gb2312'
$cfg['DefaultCharset']='gb2312'
$cfg['Servers'][$i]['auth_type']='cookie'
第三步,为安全起见,还必须删除Mysql安装后默认的any@%、any@localhost和root@%帐号。
deletefromdbwhereuser=''andhost='%'
deletefromtables_privwhereuser=''andhost='%'
deletefromcolumns_privwhereuser=''andhost='%'
deletefromuserwhereuser=''andhost='localhost'
deletefromdbwhereuser=''andhost='localhost'
deletefromtables_privwhereuser=''andhost='localhost'
deletefromcolumns_privwhereuser=''andhost='localhost'
deletefromuserwhereuser='root'andhost='%'
deletefromdbwhereuser='root'and'host'='%'
deletefromtables_privwhereuser='root'andhost='%'
deletefromcolumns_privwhereuser='root'and'host'='%'
注意,上面的''是两个单引号而不是一个双引号。
这样只允许root从localhost连接。
第四步,配置php.ini。
打开C:
\WINDOWS|php.ini文件。
修改后的值如下图:
1
2
3
第五步,对Mysql进行修改。
首先需要建立Snort运行必需的Snort库和Snort_archive库:
Cretedatabasesnort;
Createdatabasesnort_archive
1)使用C:
\AppServ\Snort\schemas目录下的create_MySQL脚本建立Snort运行必需的数据表。
在snort数据库中运行创建的表然后再把创建表的语句进行修改。
运行创建表
修改前
修改后
\
创建成功
2)可以通过MySQL提示符下运行SQL语句showtables来检验配置的正确性。
首先进入snort数据库。
如下图
第七步,必须在Appache服务器主机上建立ACID和Snort用户,并且设置权限和密码
mysql>grantusageon*.*to"acid"@"localhost"identifiedby"acidtest";
mysql>grantusageon*.*to"snort"@"localhost"identifiedby"snorttest";
mysql>grantselect,insert,update,delete,createon*.*to"snort"@"localhost"identifiedby"snorttest";
mysql>grantselect,insert,update,delete,create,alteronsnort.*to"acid"@"localhost";
mysql>grantselect,insertonsnort.*to"snort"@"localhost";
mysql>grantselect,insert,update,delete,create,alteronsnort_archive.*to"acid"@"localhost";
mysql>setpasswordfor"snort"@"locahost"=password('123');
mysql>setpasswordfor"acid"@"locahost"=password('123');
设置权限和密码
安装Adodb,jpGraph和ACID
移动文件adodbjpgraphacid得到:
Adodb生成目录:
C:
\AppServ\php5\adodb
jpgraph生成目录:
C:
\AppServ\php5\jpgraph
acid生成目录:
C:
\AppServ\www\acid
修改C:
\AppServ\www\acid中的acid-conf.php文件
1)移动文件adodb到C:
\AppServ\php5目录下,如图3.2.1—3.2.2所示。
2)移动文件jpgraph到C:
\AppServ\php5目录下,如图3.3.3—3.3.4所示。
3)移动文件acid到C:
\AppServ\www\目录下,如图3.3.5—3.3.6所示。
4)修改C:
\AppServ\www\acid中的acid-conf.php文件
$alert_dbname="snort";
$alert_host="localhost";
$alert_port="";
$alert_user="acid";
$alert_password="123";
/*ArchiveDBconnectionparameters*/
$archive_dbname="snort_archive";
$archive_host="localhost";
$archive_port="";
$archive_user="acid";
$archive_password="123";
在mysql命令端输入如下命令,如果显示OK表示已配置好在
最后在浏览器中输入http:
//localhost:
8080/acid/acid_db_setup.php出现如下界面:
说明成功。
3.3配置Snort
1)将主配置文件snort.conf的相对路径改为绝对路径进行调整,修改C:
\snort\etc\snort.conf主要改绝对路径:
修改后:
includec:
\Snort\etc\classification.config
includec:
\Snort\etc\reference.config
修改前:
修改后:
dynamicpreprocessordirectoryC:
\snort\lib\snort_dynamicpreprocessor\
#pathtobasepreprocessorengine
dynamicengineC:
\snort\snort_dynamicengine\sf_engine.dll
设置snort输出alert到mysqlserver
1>把“#varHOME_NET10.1.1.0/24”改成“varHOME_NET192.168.0.4/24”你自己LAN内的地址,把前面的#号去掉。
2>把“varRULE_PATH../rules”改成“varRULE_PATH/etc/snort”
3>把“#outputdatabase:
log,mysql,user=rootpassword=testdbname=dbhost=localhost”改成“outputdatabase:
log,mysql,user=rootpassword=123dbname=snorthost=localhost”把前面的#号去掉。
4>把“#include$RULE_PATH/web-attacks.rules
#include$RULE_PATH/backdoor.rules
#include$RULE_PATH/shellcode.rules
#include$RULE_PATH/policy.rules
#include$RULE_PATH/porn.rule
s#include$RULE_PATH/info.rules
#include$RULE_PATH/icmp-info.rulesinclude$RULE_PATH/virus.rules
#include$RULE_PATH/chat.rules#include$RULE_PATH/multimedia.rules
#include$RULE_PATH/p2p.rules”前面的#号删除。
修改完毕后,保存退出。
(5)、系统测试
1)、phpMyAdmin测试
Snort系统全部安装完以后,用户将可以使用root、acid、snort3个账户ID登录phpMyAdmin。
这3个用户能否顺利登陆关系到整个snort系统能否顺利运行,因此必须进行检测。
登陆时先后输入3个用户名和密码,输入网址http:
//localhost:
8080/phpMyAdmin/index.php如图:
2)、命令行界面测试
用户可以使用如下命令测试snort是否正常工作:
首先进入bin目录。
cd C:
\snort\bin然后使用以下命令。
snort-c"C:
\snort\etc\snort.conf"-1"C:
\snort\log"-d-e-X
重新启动snort后,经过一系列初始化,如果看到“小猪”,就标志着snort已经正常启动了。
然后用另外一台主机ping本机,snort即可监控到如下图的情况:
snort成功捕捉数据包,
输入网址:
http:
//localhost:
8080/acid/acid_main.php出现以下截图,表示运行成功。
2、Windows下Snort的使用
IDScenter是一款Windows平台下基于Snort的界面工具。
它虽然简化了Snort的的使用,但我们仍然必须掌握Snort和网络的相关知识。
他不但具有省去了敲代码的繁琐工作,而且提供了管理功能。
主要特点有:
①支持Snort的2.0,1.9,1.8,1.7。
②支持Snort服务模式。
③Snort配置向导,包括设置Snort变量,配置预处理插件,输出插件,指定规则集。
④规则编辑器,支持Snort2.0的所有规则选项,还可以从文件和web站点导入现存的规则集⑤监视,允许监视多达10报警文件和MySQL数据库信息。
⑥日志回收功能,允许根据指定的时间表压缩和备份日志文件。
⑦集成的日志查看器,可查看文件日志,XML日志和HTML日志。
1.安装snort界面工具IDScenter
安装到默认路径。
表示安装成功。
五、结束语
在信息快速发展的时代,网络安全也变的尤为重要,但关于网络安全的人才是非常的匮乏,特别是在2011年CSDN,天涯等大型数据库泄露后,每个公司和安全部门都更加需要这方面的人才,可想而知从事入侵检测这方面人员的就业是非常的有前景,学习入侵检测当然没有也不是高不可攀的,只要确定这个方向,持之以恒,不断进行试验和研究,终将成为一名高手,通过黑客可以看出,学习入侵检测系统,也与学历无关,很多高水平的黑客也都连大学都没上过。
从事网络安全工作,也势必