《Snort的配置与使用..ppt》由会员分享,可在线阅读,更多相关《Snort的配置与使用..ppt(115页珍藏版)》请在金锄头文库上搜索。
1、第六章 Snort的配置与使用,入侵检测技术,本章内容,Snort的安装与配置 Snort的总体结构分析 Snort的使用 Snort的规则 使用Snort构建入侵检测系统实例,6.1 Snort的安装与配置,3,一、Snort简介,snort 是一个用C语言编写的开放源代码的软件 Snort是一个跨平台的,轻量级的网络入侵软件,基于libpcap的数据包嗅探器和日志记录工具 Snort采用基于规则的网络信息搜索机制,对数据包进行内容的模式匹配,从中发现入侵和探测行为。 Martin Roesch Snort Team Snort 2.9.7.6,1. Snort的组成 数据包解码器 检测引擎
2、 日志和报警子系统,2. Snort的工作模式(3种) 嗅探器 数据包记录器 网络入侵检测系统,4. Snort的工作模式(3种) 嗅探器嗅探器模式仅仅是从网络上读取数据包并作为连续不断的流显示在终端上。 ./snort v ./snort vd ./snort vde 数据包记录器数据包记录器模式把数据包记录到硬盘上。 ./snort dev l ./log,网络入侵检测系统网络入侵检测模式是最复杂的,而且是可配置的。用户可以让Snort分析网络数据流以匹配用户定义的一些规则,并根据检测结果采取一定的动作。 ./snot dev l ./log c snort.conf,二、Snort软件的
3、下载,下载snort http:/www.snort.org 入侵检测的核心部分 下载winpcap或者libpcap http:/winpcap.polito.it/ http:/www.tcpdump.org 网络数据包截取驱动程序,用于从网卡中抓取数据包,辅助软件: Acid(Analysis Console for Intrusion Databases ) 基于PHP的入侵检测数据库分析控制台 ADOdb(ADOdb Database Abstraction Library) Adodb库为PHP提供了统一的数据库连接函数 Apache Windows版本的Apache Web 服务
4、器 Jpgraph PHP所用图形库 Mysql Windows版本的Mysql数据库, 用于存储snrot的日志,报警,权限等信息 PHP Windows中PHP脚本的支持环境,三、 Windows环境下Snort的安装,ACID+snort的入侵检测系统 1. 搭建apache+PHP的运行环境 2. 安装snort和Winpcap 3. 安装MySQL 4. 安装ADOdb 5. 安装Jpgraph 6. 安装和配置ACID 7. 配置和启动snort,几点说明,1. 在snort中有一脚本create_mysql,用于建立所有必要的表。 C:mysqlbinmysql u root p
5、 (Mysql)create database snort; (Mysql)quit (c:mysqlbin)Mysql D snort u root p C:snortcontribcreate_mysql,为用户分配权限 (mysql)grant usage on *.* to acidloacalhost identified by “acidPwd”; (mysql)grant select,insert,update,delete,create,alter on snort.* to acidlocalhost;,需要了解的Mysql命令: 显示数据库列表: show databas
6、es; 显示库中的数据表: use mysql; show tables; 建库与删库: create database 库名; drop database 库名;,激活和配置ACID 解压缩acid至apache安装目录的htdocsacid目录下 修改htdocsacid下的acid_conf.php文件 DBlib_path = C:phpadodb; $DBtype=”mysql”; $alert_dbname = snort; $alert_host = localhost; $alert_port = 3306; $alert_user = acid; $alert_passwor
7、d = acidpwd;,/* Archive DB connection parameters */ $archive_dbname = snort_archive; $archive_host = localhost; $archive_port = 3306; $archive_user = acid; $archive_password = acidpwd; $ChartLib_path=”C:phpjpgraphsrc”;,http:/127.0.0.1:50080/acid/acid_db_setup.php,配置并启动snort 打开C:snortetcsnort.conf文件,
8、将文件中的下列语句: include classification.config include reference.config 修改为绝对路径: include C:snortetcclassfication.config include C:snortetcreference. config 在该文件的最后加入下面语句: 目的:将日志记录到数据库中 output database: alert,mysql,host=localhost user=snort password=snortpwd dbname=snort encoding=hex detail=full,进入命令行方式,输入
9、下面的命令: C:snortbinsnort c “C:snortetcsnort.conf” l “C:snortlog” d e X X参数:用于在数据链接层记录rawpacket数据;d参数:记录应用层的数据;e参数:显示记录第二层报文头数据;c参数:用以指定snort的配置文件的路径;i参数:指定监视的网络适配器的编号。 上面的命令将启动snort,如果snort正常运行,系统最后将显示如下图所示,四、Snort的配置,配置snort.conf文件 设置网络相关变量; 配置预处理器; 配置输出插件; 定制snort规则集。,设置网络相关变量 Snort.conf中的主要环境变量有: v
10、ar HOME_NET any 本地网络 var EXTERNAL_NET any 外地网络 var DNS_SERVER $HOME_NET var HTTP_SERVER $HOME_NET var SQL_SERVER $HOME_NET var TELNET_SERVER $HOME_NET var SNMP_SERVER $HOME_NET,var HTTP_PORTS 80 var ORACLE_PORTS 1521 var RULE_PATH ./rules 本地规则路径,配置预处理器 是在基于规则的模式匹配之前运行的模块,通常为规则匹配进行一些前期的处理。如:IP分片重组(fr
11、ag2)、TCP流重组(stream4) 、各种应用层解码等。根据需要配置,通常采用默认值.,配置输出插件 主要在报文匹配某条规则需要输出时,调用相应的输出插件。根据snort.conf说明进行相应配置。 例: output database :log, mysql, user=westfox dbname=detector host=localhost password password=t123 port=1234 output database: alert, mysql, host=localhost user=snort password=snorttest dbname=snort
12、 encoding=hex detail=full,定制snort规则集 #include include $RULE_PATH/local.rules,6.2 Snort的总体结构分析,Snort的模块结构 插件机制 Snort的总体流程 入侵检测流程,Snort分析,32,一、Snort总体结构分析,Snort的模块组成及其相互关系,二、Snort的插件机制,优点 增强可扩展性 简化编码工作 使代码功能内聚,模块行强,程序相对易读 插件模块包括预处理插件、处理插件和输出插件3种,它们通常对应规则中的一个或几个关键字,规则匹配中遇到这些关键字时就会激活相应的插件,以完成相应的功能。,1预处理
13、插件 它们的源文件名都是以spp_开头的,在规则匹配(误用检测)之前运行,完成的功能主要分为以下几类。 模拟TCP/IP堆栈功能的插件:如IP碎片重组、TCP流重组插件。 各种解码插件:如HTTP解码插件、Unicode解码插件、RPC解码插件、Telnet协商插件等。 规则匹配无法进行攻击检测时所用的检测插件:如端口扫描插件、Spade异常入侵检测插件、Bo检测插件、Arp欺骗检测插件等。,2处理插件 它们的源文件名都以sp_开头,在规则匹配阶段的ParseRuleOptions中被调用,辅助完成基于规则的匹配检测过程。每个规则处理函数通常对应规则选项中的一个关键字,实现对这个关键字的解释或
14、辅助解释。 这些插件的主要功能如下。 协议各字段的检查,如TCPFlag,IcmpType,IcmpCode,Ttl,IpId,TcpAck,TcpSeq,Dsize,IpOption,Rpc,IcmpId,IcmpSeq,IpTos,FragBits,TcpWin,IpProto和 IpSame等。 一些辅助功能,如Respond,Priority,PatternMatch,Session,React,Reference等,这些插件分别完成响应(关闭连接)、严重级别、模式匹配(内容)、会话记录、攻击响应(高级的响应机制)、攻击参考信息等功能。,3输出插件 它们的源文件名都以spo_开头,这些
15、插件分为日志和警告两种类型放入两个列表中,在规则匹配过程中和匹配结束之后调用,以便记录日志和警告。,以一个HTTP解码预处理器插件为例来解释插件的内部结构: 每个插件都有一个安装函数,名称为SetupXXX(),如Spp_http_decode.c:SetupHttpDecode()。 在解释规则文件时,如果检测到相应的关键字,系统就会使用规则文件中这些关键字后的字符串作为参数来调用相应的初始化函数。 在检测过程中,一旦规则匹配成功,就会触发处理函数的执行,预处理器就会在预处理过程中对数据报调用相应处理函数进行处理。,三、Snort的总体流程,四、入侵检测流程,规则解析流程 规则匹配流程,入侵
16、检测流程规则解析流程,Snort规则内存表示逻辑图,入侵检测流程规则匹配流程,Snort规则匹配检测流程,6.3 Snort的使用,Snort的命令行 高性能的配置方式,一、Snort的命令行,Snort命令参数及作用 c:snortoptions 主要snort参数介绍 -A 设置的模式是full、fast,还是none;full模式是记录标准的alert模式到alert文件中;fast模式只写入时间戳、messages、IPs、ports到文件中,none模式关闭报警。 -a 显示ARP包。,-b 把LOG的信息包记录为TCPDUMP格式,所有信息包都被记录为二进制形式,这个选项对于fast记录模式比较好,因为它不需要花费包的信息转化为文本的时间。Snort在100Mbps网络中使用“b”比较好。 -c 使用配置文件,这个规则文件是告诉系统什么样的信息要LOG,或者要报警,或者通过。 -C 在信息包信息使用ASCII码来显示,而不是hexdump。,-d 解码应用层 -D 把Snort以守护进程的方法来运行,默认情