1.掌握snort IDS工作机理
2.应用snort三种方式工作
一.snort IDS概述
snort IDS(入侵检测系统)是一个强大的网络入侵检测系统。它具有实时数据流量分析和记录IP网络数据包的能力,能够进行协议分析,对网络数据包内容进行搜索/匹配。它能够检测各种不同的攻击方式,对攻击进行实时报警。此外,snort是开源的入侵检测系统,并具有很好的扩展性和可移植性。
二.snort IDS体系结构
snort IDS体系结构如图10-1-1所示。
如上图所示,snort的结构由4大软件模块组成,它们分别是:
(1)数据包嗅探模块——负责监听网络数据包,对网络进行分析;
(2)预处理模块——该模块用相应的插件来检查原始数据包,从中发现原始数据的“行为”,如端口扫描,IP碎片等,数据包经过预处理后才传到检测引擎;
(3)检测模块——该模块是snort的核心模块。当数据包从预处理器送过来后,检测引擎依据预先设置的规则检查数据包,一旦发现数据包中的内容和某条规则相匹配,就通知报警模块;
(4)报警/日志模块——经检测引擎检查后的snort数据需要以某种方式输出。如果检测引擎中的某条规则被匹配,则会触发一条报警,这条报警信息会通过网络、UNIX socket、Windows Popup(SMB)、SNMP协议的trap命令传送给日志文件,甚至可以将报警传送给第三方插件(如SnortSam),另外报警信息也可以记入SQL数据库。
三.snort三种工作方式
snort拥有三大基本功能:嗅探器、数据包记录器和入侵检测。嗅探器模式仅从网络上读取数据包并作为连续不断的流显示在终端上,常用命令snort -dev。数据包记录器模式是把数据包记录到硬盘上,常用命令snort -b。网络入侵检测模式是最复杂的,而且是可配置的。我们可以让Snort分析网络数据流以匹配用户定义的一些规则,并根据检测结果采取一定的动作。
四.snort规则
snort规则定义
snort使用一种简单的规则描述语言,这种描述语言易于扩展,功能也比较强大。snort规则是基于文本的,规则文件按照不同的组进行分类,比如,文件ftp.rules包含了FTP攻击内容。
本任务主机A、B为一组,C、D为一组,E、F为一组。
首先使用“快照X”恢复Linux系统环境。
一.snort数据包嗅探
1.启动snort
进入实验平台,单击工具栏“控制台”按钮,进入IDS工作目录,运行snort对网络接口eth0进行监听,要求如下:
(1)仅捕获同组主机发出的icmp回显请求数据包。
(2)采用详细模式在终端显示数据包链路层、应用层信息。
(3)对捕获信息进行日志记录,日志目录/var/log/snort。
由于在恢复快照后,IP地址会出现问题,所以我们重新配置IP地址为:172.16.0.118
运行snort对网络接口eth0进行监听
snort命令__snort -ieth0 devt icmp and src 172.l6.0.119 -1 /var/1og/snor
本机执行上述命令,同组主机对当前主机进行ping探测,根据snort捕获信息填写表10-1-1。
值得说明的是,由于机房电脑都恢复了相同的快照,所以虚拟机写入的MAC地址都是相同的。
数据帧源MAC |
0:C:29:1:D1:7B |
数据帧目的MAC |
0:C:29:1:D1:7B |
IP上层协议类型 |
ICMP |
数据包源IP |
172.16.0.119 |
数据包目的IP |
172.16.0.118 |
数据包总长度 |
0x62 |
IP报文头长度 |
20 |
ICMP报文头长度 |
8 |
ICMP负载长度 |
56 |
ICMP类型/代码 |
8/0 |
2.查看snort日志记录。「说明」 默认snort日志记录最后一级目录会以触发数据包的源IP命名。可使用组合键Ctrl+C停止snort运行。
二.snort数据包记录
(1)对网络接口eth0进行监听,仅捕获同组主机发出的Telnet请求数据包,并将捕获数据包以二进制方式进行存储到日志文件中/var/log/snort/snort.log)。
snort命令 snort -i eth0 -b tcp and src 172.16.0.118 and dst port 23
(2)当前主机执行上述命令,同组主机telnet远程登录当前主机(账号guest,密码guestpass)。
(3)停止snort捕获(Ctrl+C),读取snort.log文件,查看数据包内容
snort命令 snort -r /var/1og/snort/snort.log.1559614316
三.简单报警规则
(1)在snort规则集目录ids/rules下新建snort规则集文件new.rules,对来自外部主机的、目标为当前主机80/tcp端口的请求数据包进行报警,报警消息自定义。
snort命令 alert tcp any any -> 172.16.0.118 80 (msg: “warning”;)
根据规则完成表10-1-2的填写。
snort规则动作 |
报警 |
规则头协议 |
TCP |
规则头源信息 |
任意IP任意端口 |
规则头目的信息 |
172.16.0.118 80 |
方向操作 |
当前主机为接收端 |
报警消息 |
warning |
(2)编辑snort.conf配置文件,使其包含new.rules规则集文件,具体操作如下:使用vim(或vi)编辑器打开snort.conf,切换至编辑模式,在最后添加新行包含规则集文件new.rules。
添加包含new.rules规则集文件语句include $RULES_PATH/new.rules
(3)以入侵检测方式启动snort,进行监听。
启动snort的命令 snort -c snort.conf
以入侵检测方式启动snort,同组主机访问当前主机Web服务。
根据报警日志(/var/log/snort/alert)完成表10-1-3的填写。
报警名称 |
warning |
数据包源IP |
172.16.0.119 |
数据包目的IP |
172.16.0.118 |
数据包源端口号 |
47996 |
数据包目的端口号 |
80 |
本任务主机A、B为一组,C、D为一组,E、F为一组。
一.字符串匹配
说明:FTP服务接收来自客户端的ftp请求(目标端口21/tcp)后,在应答数据包中将告诉客户端自己所使用的FTP软件及版本号,Fedora core5所使用的FTP服务器软件是vsFTPd 2.0.4。换句话说,当网络中传输的数据包含有“vsFTPd”字样的内容时,极大的可能性是一个ftp用户在远程登录Linux下的FTP服务器。通过入侵检测系统对网络数据包进行匹配,发现含有“vsFTPd”字样的数据包,并记录其后续的若干数据包,因为若FTP会话是以明文方式进行的话,那么这些数据包中会有用户登录所使用的用户名及口令。
(1)在snort规则集目录/opt/ExpNIC/NetAD-Lib/Tools/ids/rules下新建snort规则集文件new2.rules,对网络中由vsFTPd参与的通信进行报警,在FTP服务器声明身份后第一时间内捕获FTP客户端登录用户名及登录口令。
(2)利用activate/dynamic规则对实现。
snort规则 activate tcp any 21 -> any any (activates: 81; content: “vsFTPd”; msg: “FTP User Login”;) dynamic tcp any any -> 21 (activated_by:81; count:10; msg: “User Name and PASSWORD”;)
(3)编辑snort.conf配置文件,使其包含new2.rules规则集文件。
(4)以入侵检测方式启动snort,进行监听。需要特别说明的是:网络传输数据中的FTP用户名及口令数据是应用层(ISO七层协议)数据,默认情况下snort不显示和记录应用层数据,所以此处在启动snort时应指定其抓取、记录应用层数据。
启动snort的命令 snort -d -c snort.conf
同组主机远程FTP登录,登录过程如图所示。
「注」 用户名:guest,密码:guestpass。查看报警日志提取出FTP客户端登录时所使用的用户名及登录口令。
二.端口扫描攻击检测
(1)修改snort配置文件snort.conf启动端口扫描预处理器,以入侵检测方式启动snort,对来自外部的端口扫描行为进行检测。
预处理描述: preprocessor protscan: 172.16.0.0/24 4 3 /var/log/snort/portscan.log
(2)同组主机使用Nmap(/opt/ExpNIC/NetAD-Lab/Tools/portscan/namp)对当前主机进行TCP端口扫描操作
待端口扫描完成,查看portscan.log报警日志,回答下面问题。
portscan.log日志记录格式描述: 日期 时间 攻击源IP:源端口 -> 目的主机IP:扫描端口 SYN ******S*
默认情况下,Nmap在进行目标主机TCP端口扫描时,扫描顺序: 无序(有序/无序)。
这一次的实验总体来说并不是很难。IP配置文件里有一个自动分配IP地址的语句一直没注意到,导致我们指定的IP一直不能用,从而浪费了不少时间,注释该语句后实验就比较顺利了,不过可能是机房机器的问题,丢包率还是比较严重的。
实验主要内容是学习snort语句。snort预置的规则动作有5种,实验中用到的,log:按照自己配置的格式记录包;alert:动作选项alert将按照配置的格式记录包,然后进行报警;dynamic:保持在一种潜伏状态,直到activate类型的规则将其触发,之后它将像log动作一样记录数据包。activate:当被规则触发时生成报警,并启动相关的dynamic类型规则,常常用在检测复杂的攻击,或对数据进行归类的工作上。