实验7 基于snort的IDS配置实验.docx
《实验7 基于snort的IDS配置实验.docx》由会员分享,可在线阅读,更多相关《实验7 基于snort的IDS配置实验.docx(18页珍藏版)》请在冰豆网上搜索。
实验7基于snort的IDS配置实验
实验7基于snort的IDS配置实验
1.实验目的
通过配置和使用Snort,了解入侵检测的基本概念和方法,掌握入侵检测工具的使用方法,能够对其进行配置。
2.实验原理
2.1入侵检测基本概念
入侵检测系统(IntrusionDetectionSystem简称为IDS)工作在计算机网络系统中的关键节点上,通过实时地收集和分析计算机网络或系统中的信息,来检查是否出现违反安全策略的行为和是否存在入侵的迹象,进而达到提示入侵、预防攻击的目的。
入侵检测系统作为一种主动防护的网络安全技术,有效扩展了系统维护人员的安全管理能力,例如安全审计、监视、攻击识别和响应的能力。
通过利用入侵检测系统,可以有效地防止或减轻来自网络的威胁,它已经成为防火墙之后的又一道安全屏障,并在各种不同的环境中发挥关键作用。
1.入侵检测系统分类
根据采集数据源的不同,IDS可分为基于网络的入侵检测系统(Network-basedIDS,简称NIDS)和基于主机的入侵检测系统(Host-basedIDS,简称HIDS)。
NIDS使用监听的方式,在网络通信的原始数据包中寻找符合网络入侵模版的数据包。
NIDS的网络分析引擎放置在需要保护的网段内,独立于被保护的机器之外,不会影响这些机器的CPU、I/O与磁盘等资源的使用,也不会影响业务系统的性能。
NIDS一般保护的是整个网段。
HIDS安装在被保护的机器上,在主机系统的审计日志或系统操作中查找信息源进行智能分析和判断,例如操作系统日志、系统进程、文件访问和注册表访问等信息。
由于HIDS安装在需要保护的主机系统上,这将影响应用系统的运行效率。
HIDS对主机系统固有的日志与监视能力有很高的依赖性,它一般保护的是其所在的系统。
NIDS和HIDS各有优缺点,联合使用这两种方式可以实现更好的检测效果。
2.入侵检测系统的实现技术
入侵检测系统的实现技术可以简单的分为两大类:
基于特征的检测(Signature-based)和基于异常的检测(Anomaly-based)。
基于特征的检测技术主要包括模式匹配和协议分析两种检测方法:
模式匹配就是将收集到的信息与已知的网络入侵和系统误用模式知识库进行比较,以发现入侵行为。
这种检测方法只需收集相关的数据集合和维护一个知识库就能进行判断,检测准确率和效率也相当高。
但是,该技术需要不断进行升级以对付不断出现的攻击手法,并且不能检测未知攻击手段。
协议分析相对于模式匹配技术是一种更新的入侵检测技术。
它首先捕捉数据包,然后对数据包进行解析,包括网络协议分析和命令解析,在解析的代码中快速检测某个攻击特征是否存在。
协议分析技术大大减少了计算量,即使在高负载的高速网络上,也能逐个分析所有的数据包。
基于异常的检测技术有很多,例如采用统计模型、专家系统等技术来实现。
它首先要对系统的行为进行统计,获得系统正常使用时的统计性能,如访问次数、操作失败次数和延时等。
统计性能被用来与网络、系统的行为进行比较,当观察值在正常值范围之外时,IDS就会判断有入侵发生。
异常检测的优点是可以检测到未知入侵和复杂的入侵,缺点是误报、漏报率高。
3.入侵检测系统的部署原则
基于主机的入侵检测系统其安装部署简单,主要安装在检测的主机系统中,而基于网络的入侵检测系统复杂很多,需要考虑部署原则,以优化性能。
NIDS总的来说包括探测器和控制台两个部分:
探测器(Sensor)是专用的硬件设备,负责网络数据流的捕获、分析检测和报警等功能。
控制台(Console)是管理探测器的工具,它负责接收探测器的检测日志数据,并提供数据查询和报告生成等功能,一个控制台可以管理多个探测器。
NIDS探测器的基本部署原则是保证每个网络数据包都可以被探测器侦听和捕获。
共享式局域网是最简单的网络,它由共享式HUB连接各个主机。
在这种网络环境下,一般来说,只需要配置一个网络探测器就可以达到监控全网的目的。
对于简单的交换式网络,即交换机中存在一个能够监听所有端口的SPAN端口(即监听端口)。
在这种环境下,只要将SPAN端口设置为监听所有端口的模式,并在此端口配置一个网络探测器,就可以实现对内部网络安全的控制。
而对于复杂的交换式局域网,存在多个不同的交换机,且没有SPAN端口的网络,这时要想让一个探测器监听所有的交换机上的内容是不现实的,因此必须有多个探测器进行监听。
从另外一种角度分析,我们可以将一个复杂的交换式局域网分成多个简单的交换式网络或者共享式网络组成,只要保证所有子网的流量能被探测器捕获就可以实现对整个网络安全的控制。
2.2Snort简介
Snort最初只是一个简单的网络管理工具,后来发展成一个遍布世界的企业分布式入侵检测系统。
自从1998年Snort诞生以来,如今有几十万个探测器分布在世界各地,已经成为应用最广泛的NIDS。
它的创始者MartyRoesch最初将Snort设计为一个辅助分析网络流量的个人工具。
那时的Snort只是将二进制tcpdump数据转换成用户可读的形式,“Snort”这个名字只是随便起的。
Snort作为一个免费的、跨平台的软件包,可以用作监视小型TCP/IP网的嗅探器、日志记录、入侵探测器。
它可以运行在Linux/UNIX和Win32系统上,Snort的功能很多,如实时通讯分析和信息包记录、包装有效载荷检查、协议分析和内容查询匹配、探测缓冲溢出、秘密端口扫描、CGI攻击、SMB探测、操作系统侵入尝试、对系统日志、指定文件、Unixsocket或通过Samba的WinPopus进行实时报警。
Snort有三种主要模式:
数据包嗅探器、信息包记录器或成熟的侵入探测系统。
遵循开发/自由软件最重要的惯例,Snort支持各种形式的插件、扩充和定制,包括数据库或是XML记录、小帧探测和统计的异常探测等。
信息包有效载荷探测是Snort最有用的一个特点,这就意味着很多额外种类的入侵行为可以被探测到。
对于Snort的分析主要集中在对于其规则(rule)的分析,由于Snort采用模式匹配的方法进行检测,所以这些规则就是入侵检测的核心部分。
各种网络攻击,病毒的特征代码,都被编制成相应Snort的规则,通过检测误用,实现对外来入侵的识别。
在分析规则的基础上,通过在网上找最新的攻击方法的特征代码,尝试编制新的规则。
现在网络攻击手段很多,如DDOS攻击,网络扫描,木马攻击等。
本实验主要以PING攻击和网络扫描为例介绍Snort的检测能力。
3.实验环境
硬件:
一台安装Windows2000/XP系统的联外网的主机。
软件:
(1).ACID(AnalysisConsoleforIntrusionDatabases)基于PHP的入侵检测数据库分析控制台
acid-
(2).Adodb(ActiveDataObjectsDataBase)PHP库
(3).Windows版本的ApacheWeb服务器
apache_
(4).PHP图形库
jpgraph-
(5).Windows版本的Mysql数据库服务器
mysql-
(6).Windows版本的PHP脚本环境支持
php-
(7).Windows版本的Snort安装包
snort-2_2
(8).网络数据包截取驱动程序
(9).基于PHP的Mysql数据库管理程序
phpmyadmin-
4.实验步骤
(1)手动安装Snort。
(可选择自动安装包,见步骤2)
安装Apache
选择定制安装,安装路径修改为c:
\apache安装程序会自动建立c:
\apache2目录,继续以完成安装。
安装的时候注意,如果安装了IIS并且启动了WebServer,因为IISWebServer默认在TCP80端口监听,所以会和ApacheWebServer冲突,可以修改ApacheWebServer为其他端口。
安装PHP
解压缩php--Win32.zip至c:
\php;
拷贝php4ts.dll至WINDOWS\system32;
拷贝php.ini-dist至WINDOWS;
拷贝c:
\php\extension\php_gd2.dll至WINDOWS\
(注:
以上添加gd图形库支持)
在d.conf中添加
LoadModulephp4_module"c:
/php/sapi/php4apache2.dll"
AddTypeapplication/x-d-php.php
启动Apache服务
netstartapache2
文件,test.php文件的内容为:
phpinfo()?
>
使用:
//127php是否安装成功,应出现如图1所示。
图1PHP安装成功
安装snort
默认安装到c:
\snort
安装配置Mysql数据库
默认安装到c:
\mysql
新建my.ini复制到C:
\WINDOWS\
my.ini内容为:
[mysqld]
basedir=c:
\mysql
datadir=c:
\mysql\data
配置root口令
c:
\>cdmysql\bin
c:
\mysql\bin>mysql
mysql>setpasswordfor"root"@"localhost"=password('newPWD');
(这里newPWD为此处为用户自己设置的密码)
以root身份登陆命令为
Mysql–uroot–p
设置数据库,删除默认的账号只允许root从localhost连接(使用Phpmyadmin)
建立snort运行必须的snort库和snort_archive库
mysql>createdatabasesnort;
mysql>createdatabasesnort_archive;
使用c:
\snort\contrib目录下的create_mysql脚本建立Snort运行必须的数据表
c:
\mysql\bin\mysql-Dsnort-uroot-p\snort\contrib\create_mysql
c:
\mysql\bin\mysql-Dsnort_archive-uroot-p\snort\contrib\create_mysql
建立acid和snort用户
mysql>grantusageon*.*to"acid"@"localhost"identifiedby"acidpassword";
mysql>grantusageon*.*to"snort"@"localhost"identifiedby"snortpassword";
或者采用phpmyadmin进行操作。
为acid用户和snort用户分配相关权限
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";
或者采用phpmyadmin进行操作。
安装adodb
解压缩adodb360.zip至c:
\php\adodb目录下。
安装acid
解压缩acid-b23.tar.gz至c:
\apache2\htdocs\acid目录下
修改acid_conf.php文件
$DBlib_path="c:
\php\adodb";
$alert_dbname="snort";
$alert_host="localhost";
$alert_port="";
$alert_user="acid";
$alert_password="acidpassword";
/*ArchiveDBconnectionparameters*/
$archive_dbname="snort_archive";
$archive_host="localhost";
$archive_port="";
$archive_user="acid";
$archive_password="acidpassword";
$ChartLib_path="c:
\php\jpgraph\src";
建立acid运行必须的数据库:
27.0
按照系统提示建立。
安装jpgrapg库
解压缩jpgraph-.tar.gz至c:
\php\jpgraph;
DEFINE(“CACHE_DIR”,”/tmp/jpgraph_cache/”)(取消原来的注释)
安装winpcap
配置Snort
,需要修改的地方包括:
改为绝对路径
设置snort输出alert到mysqlserver
outputdatabase:
alert,mysql,host=localhostuser=snortpassword=snortdbname=snort
测试Snort是否正常工作:
c:
\snort\bin>snort-c"c:
\snort\etc\snort.conf"-l"c:
\snort\log"-vdeX
-X参数用于在数据链接层记录rawpacket数据
-d参数记录应用层的数据
-e参数显示/记录第二层报文头数据
-c参数用以指定snort的配置文件的路径
-v参数用于在屏幕上显示被抓到的包
测试Snort
启动Apache和mysql服务。
netstartapache2;
netstartmysql
运行ACID:
打开浏览器,地址为。
如果有图2所示,则表示ACID安装成功。
图2ACID设置成功
运行Snort:
在运行中输入命令c:
\snort\bin\snort-c"c:
\snort\etc\snort.conf"-l"c:
\snort\log"-de,如果有图3所示,说明Snort可以正常运行。
图3Snort正常运行
(2)利用安装包快速安装配置Snort。
(推荐采用)。
以上手动安装,过程比较灵活,但花费时间校长。
也可以采用自动安装包的形式进行安装。
自动安装包是一个利用WINRAR制作的自解压程序。
将手动安装的文件直接解压到相应位置,这种方法快捷高效,但是要求路径的一致。
安装过程如下:
执行snort.exe,弹出自解压界面,必须使用默认安装路径。
如图4所示:
图4默认解压到c:
\snort
解压安装
图5解压安装
解压完毕后,弹出注意事项,看完后关闭,继续安装。
提示安装MYSQL,选取默认路径c:
\mysql。
如图6所示:
图6默认安装mysql到c:
\mysql
提示安装Winpcap3.0,如果已经安装了新版本winpcap,安装过程中会提示有新版本文件,是否要覆盖。
这里要用3.0版的覆盖新版文件,否则会出现问题。
提示安装Apache。
首先填写服务器信息,选择“forallUsers”的推荐设置。
图7安装apache选择“forAllUsers,onPort80”
选择“Custom”安装方式,不采用默认安装路径,设置Apache安装路径为c:
\apache。
图.8安装apache选择自定义方式
图.9安装apache到c:
\apache
之后程序会自动解压文件,并最后开启apache和mysql服务。
测试过程同手动安装测试步骤。
(3)完善配置文件
1)打开c:
/snort/etc/snort.conf文件,查看现有配置。
2)设置snort的内、外网检测范围。
varHOME_NETany语句中的any改为自己所在的子网地址,即将snort监测的内网设置为本机所在局域网。
如本地IP为192.168.1.10,则将any改为192.168.1.0/24。
并将varEXTERNAL_NETany语句中的any改为!
192.168.1.0/24,即将snort监测的外网改为本机所在局域网以外的网络。
3)设置监测包含的规则。
找到snort.conf文件中描述规则的部分,如图10所示:
图10文件中包含的检测规则文件
前面加#表示该规则没有启用,将local.rules之前的#号去掉,其余规则保持不变。
(4)使用控制台查看检测结果
1)启动snort并打开acid检测控制台主界面,如图11所示:
图11ACID检测控制台主界面
2)点击右侧图示中TCP后的数字“80%”,将显示所有检测到的TCP协议日志详细情况,如图12所示:
图12TCP协议日志网页
TCP协议日志网页中的选项依次为:
流量类型、时间戳、源地址、目标地址以及协议。
由于snort主机所在的内网为202.112.108.0,可以看出,日志中只记录了外网IP对内网的连接(即目标地址均为内网)。
3)选择控制条中的“home”返回控制台主界面,在主界面的下部有流量分析及归类选项,如图13所示:
图13acid检测控制台主界面
4)选择“last24hours:
alertsunique”,可以看到24小时内特殊流量的分类记录和分析,如图14所示:
图1424小时内特殊流量的分类记录和分析
可以看到,表中详细记录了各类型流量的种类、在总日志中所占的比例、出现该类流量的起始和终止时间等详细分析。
在控制台主界面中还有其他功能选项,请读者自己练习使用。
(5)配置snort规则
下面我们练习添加一条规则,以对符合此规则的数据包进行检测。
1)打开c:
\snort\rules\local.rules文件,如图15所示:
2)在规则中添加一条语句,实现对内网的UDP协议相关流量进行检测,并报警:
udpids/dns-version-query。
语句如下:
alertudpanyany<>$HOME_NETany(msg:
"udpids/dns-version-query";
content:
"version";)
保存文件后,退出。
3)重启Snort和acid检测控制台,使规则生效。
(6)利用Snort检测ping攻击。
alerticmp$EXTERNAL_NETany->$HOME_NETany(msg:
"ICMPLargeICMPPacket";dsize:
>800;reference:
arachnids,246;classtype:
bad-unknown;sid:
499;rev:
4;)用于检测大的ping包,长度超过800的包即被认为是大包。
运行Snort,并且用长度超过800的大包去ping靶机。
Ping192.168.1.10-l801-t(IP地址为靶机地址)
同时打开ACID,看是否有ICMP类报警产生。
如图16所示:
图.16使用ACID查看检测结果
(7)利用Snort检测Superscan扫描。
Superscan是一款功能强大的扫描器,可以对搜集各网段主机信息。
Snort对Superscan设计了专门的规则,可以实现对Superscan的过滤。
运行Snort,打开Superscan对目标网段进行扫描。
如图17所示:
图17使用Superscan扫描网段
打开ACID,看是否有Superscan报警产生。
如图18所示:
图18使用ACID检查Superscan报警
5.实验要求:
1.掌握自动安装方法,能够熟练安装Snort。
尝试采用手的方法安装。
2.通过安装和配置Snort,针对步骤
(1)-(5)写一份完整的实验报告或实验分析。
3.尝试修改规则,使得Snort小的ping包也会产生报警。
尝试添加新的规则,实现对浏览某些网站进行报警。