入侵检测系统
网络安全技术
第十章
IDS技术原理01
IDS通用模型
入侵检测通用模型
IDS通用模型
01 CIDF的体系结构
事件产生器
1
事件分析器
2
事件数据库
3
响应单元
4
02 CIDF规范语言
CIDF的规范语言文档定义了一个公共入侵标准语言(Common intrusion specification
language,CISL),各IDS使用统一的CISL来表示原始事件信息、分析结果和响应指令,从
而建立了IDS之前信息共享的基础。CISL是CIDF的最核心也是最重要的内容。
IDS通用模型
03 CIDF内部通讯
层次结构
GIDO层(GIDO layer)
消息层(Message layer)
传输层(Negotiated Transport
layer)
04 CIDF程序接口
CIDF也对各组件之间的信息传递格式、通信方法和标准API进行了标准化。在现有的IDS中,经常
用数据采集部分、分析部分、响应部分和日志来分别代替事件产生器、事件分析器、响应单元和事
件数据库这些术语。
根据检测所用数据的来源不同,可将入侵检测系统分为以下三类:
IDS类别
01 根据检测所用数据源进行分类
基于主机的入侵检测系统(HIDS)
基于网络的入侵检测系统(NIDS)
基于混合数据源的入侵检测系统(HIDS+NIDS)
IDS类别
02 根据检测分析方法进行分类
①误用检测系统(基于知识的检测)
②异常检测系统(基于行为的检测)
③误用和异常检测混合的入侵检测系统
03 根据入侵检测方式进行分类
实时检测系统 非实时检测系统
IDS分析方法
01
02
03
病毒和恶意软件(例如木马、蠕虫、病毒等)是网络安全的主要威胁之一,可
以窃取用户敏感信息、破坏系统、挖矿、勒索等。
误用检测
异常检测(anormaly detection)是指根据非正常行为(系统或用户)
和资源非正常使用情况检测出入侵行为。异常检测是一种基于行为的检测方法,
它的通用性较强,可以检测出未知的攻击模式。
异常检测
协议分析是出现最晚的入侵检测方法,它利用网络协议的高度规则性,快速识
别协议,并检测是否存在攻击,通过辨别数据包的协议类型,以便使用相应的
数据分析程序来检测数据包。
协议分析(NTA)
IDS配置与使用02
Snort简介
01 Snort的功能
网络入侵
检测系统
(IDS)
网络入侵
防御系统
(IPS)
协议分析
内容搜索
与匹配
基于规则
的检测
02 Snort的工作模式
Sniffer模式
Packet Logger模式
Network Intrusion Detection
System(NIDS)模式
Intrusion Prevention System(IPS)模式
Snort简介
03 Snort的优势
开源免费
1
灵活性强
2
广泛应用
3
04 Snort的工作流程
Snort安装与配置
1.进入Snort官网下载
网址:
下载,
推荐下载安装都选择进入官网页面的Source下默认显示的下载包,否则可能安装时候遇到问题。
2.解压安装包,命令如下:
tar -zxvf
tar -zxvf
3.在安装Snort之前,先安装daq所依赖的开发包,直接编译会出现错误,命令如下:
apt-get install flex
apt-get install bison
apt-get install libpcap-dev
Snort安装与配置
4.查看目录下文件,并对daq包进行编译,命令如下:
# 查看目录下文件
ls
# 对daq包编译
./configure && make && make install
5.安装snort所依赖的软件包,命令如下:
apt-get isnatll libpcre3-dev
apt-get install libdumbnet-dev
apt-get install zlibig-dev
6.对snort包进行编译,命令如下:
./configure -disable-open-appid && make && make install
7.查看snort是否安装成功,命令如下:
snort -h
8.配置Snort规则,从官网下载规则包。
9.下载并解压最新的规则包,然后将Snort安装目录的包用规则包进行替换。
使用Snort进行入侵检测测试
01 简单练习规则
在Snort安装目录下的rules/中进行规则配置,设置规则如下:
alert udp any any <> $HOME_NET any (msg:"udp ids/dns-version-
query";content: "version";)
02 利用Snort检测ping攻击
①在rules/文件中设置规则如下:
alert icmp $EXTERNAL_NET any -> $HOME_NET any (msg:"ICMP Large ICMP
Packet"; dsize:>800; reference:arachnids,246; classtype:bad-unknown;
sid:499; rev:4;)
②创建snort检测日志,命令如下:
mkdir /var/log/snort
使用Snort进行入侵检测测试
02 利用Snort检测ping攻击
③将Snort规则中的路径(RULE_PATH)改为Snort下的rules规则路径。
④使用Snort规则对流量进行检测,并将结果输出到snort日志中,命令如下:
snort -i eth0 -c /software/ -A fast -l
/var/log/snort/
⑤成功开启snort进行检测。
⑥使用局域网内主机对安装snort主机进行包>800的ping攻击,命令如下:
ping -l 1000
⑦在日志中查看检测结果,打开在②创建的日志。
使用Snort进行入侵检测测试
03 利用Snort检测nmap扫描
①对Snort规则进行修改,将检测的家庭网络改为所在局域网,命令如下:
ipvar HOME_NET
②在rules/下进行tcp规则配置,命令如下:
alert tcp $EXTERNAL_NET any -> $HOME_NET any (msg:"nmap
scan";sid:1000000888;)
③启动Snort进行局域网内的扫描检测
snort -i eth0 -c /software/ -A fast -l
/var/log/snort/
④使用宿主机进行局域网内的namp扫描,命令如下:
nmap -sP
⑤在var/log/snort中查看检测结果。
常见使用问题
错误信息1
注释删除1
常见使用问题
错误信息2
注释删除2
常见使用问题
错误信息3
这是因为在tcp规则的设定中,没有sid号导致的错误(注释:<100保留,100~999999为snrot发布
用,>=1000,000本地用)。
入侵检测日志分析03
日志分析
日志分析是通过检查系统生成的日志文件来识别潜在的安全事件、异常行为或系统故障的过程。在网络
安全中,日志分析尤其重要,因为它帮助管理员了解网络中的活动,识别入侵企图或攻击的痕迹。对于
Snort这样的入侵检测系统(IDS),日志分析涉及对捕获的网络流量和生成的安全事件进行审查,以
便发现可疑活动、网络攻击的模式或潜在的漏洞。这一过程可以为进一步的防御措施提供关键信息,确
保网络的安全性和稳定性。
Snort安装成功后,并不表示一切都万事大吉了,你还有许多事情要做。Snort启动后,它会在的硬盘
上记录大量的报警信息。因此,你需要工具对日志或者报警文件进行分析。不同你的需要和安全形势,
要求你使用不同的工具。你可能只要一个日志汇总,或者你的领导要求你提供一个最近10次攻击的报告。
或对于某个报警你可能需要获取更多的信息,以便做进一步的研究。
不管是出于什么目的,日志分析可以帮助你从日志中获取有用的信息,使你可以针对攻击威胁采取必要
措施。
Snort的日志格式
01 基于文本的格式
如果在启动Snort时,使用-A [fast|full|none]选项,Snort就会把报警信息保存到一个
文件中。例如如下:
[] INFO - ICQ Access []
[Classification: content:"MKD / "] [Priority: 0]
05/10-10:02: .:54835 -> :80
TCP TTL:127 TOS:0x0 ID:13690 IpLen:20 DgmLen:482 DF
AP Seq: 0x112BDD12 Ack: 0x11B38D8A Win: 0x4510
TcpLen: 20
其中的
[Classification: content:"MKD / "] [Priority: 0]
是报警的分类和优先级。
①报警文件
Snort的日志格式
01 基于文本的格式
Snort使用这个插件可以把日志数据或者报警信息以XML格式保存到本地文件和输出到一个中
心数据库,或者发送到CERT进行处理。这些数据使用SNML格式。
XML输出插件支持HTTP、HTTPS和IAP(入侵报警协议,Intrusion Alert Protocol)协
议。它的数据可以使用HEX、BASE64或者ASCII编码。
下面是XML输出插件的配置示例:
output xml: log, file=/var/log/snort/snortxml
这配置可以让Snort把产生的日志信息输出到/var/log/snort/snortxml-MMDD@HHMM命
名的文件中,其中MMDD是月、日,HHMM是时、分。
output xml: alert,protocol=https host= file=yourfile
cert= key= ca= server=
这配置使Snort使用HTTPS协议把产生的输出送到远程服务器的文件
yourfile,cert、key、ca与SSL有关,server参数可以设置连接的服务器列表。
②syslog文件
Snort的日志格式
01 基于文本的格式
取消文件中以下注释,可以使Snort向系统日志文件中日志数据:
output alert_syslog: LOG_AUTH LOG_ALERT
输出格式如下:
May 10 00:03:38 xxxxxx snort: INFO - ICQ Access [Classification:
content:"MKD / " Priority: 0]: :54352 -> :80
④XML格式
通过CSV输出插件,Snort可以使用CSV格式记录数据。它的配置非常容易,只要在
文件中加入以下的配置行:
output CSV: /your/filename
timestamp,msg,proto,src,dst
③CSV文件
Snort的日志格式
02 tcpdump格式
报文捕获库(libcap)应用广泛,许多的报文捕获程
序都是基于这个库的,例如:tcpdump和snort。
在文件中加入下面的配置行,能够把
日志以tcpdump二进制格式记录到指定的文件中:
output log_tcpdump:
Snort的日志格式
03 数据库
数据库输出插件支持MySQL、PostgreSQL、unixODBS和Oracle数据库,在文件中加入
如下:
output database: log, mysql, user=snortuser
password=snortpass dbname=snortdb host=localhost
就可以使Snort把日志数据输出到名为snortdb的MySQL数据库中,这个数据库位于本地主机,用户名
为snortuser,验证密码是snortpass。针对不同的数据库系统,mysql可以改为postgresql、
unixodbc或者oracle。
在使用数据库之前,需要做建立数据库和用户/密码等准备工作。还要为用户这是适当的权限,然后使
用contrib目录下的create_mysql、create_postgresql、建立数据库的
表。
查看Snort日志与工具
01 查看Snort日志的方法
①Wireshark ②Splunk ③ELK Stack(Elasticsearch, Logstash,
Kibana)
02 日志分析工具
直接查看
日志文件
①
使用Snort
自带的日志
查看工具
②
Barnyard2
③
Snort警报日志解读
01 日志解读
[1:1000001:0] ICMP PING NMAP
其中:
[1]:表示规则的生成器编号(GID),通常是1,代表这是Snort基本规则。
1000001:这是触发该警报的规则ID(SID),每条Snort规则都有一个唯一的SID。
0:规则的修订版本号(Rev),表示这是该规则的第一个版本。
ICMP PING NMAP:警报的描述,表示Snort检测到了使用Nmap工具执行的 ICMP ping扫
描。这表明可能有人在使用Nmap扫描目标网络的活跃主机。
①警报头信息:
②优先级:
[Priority: 3]:
其中:
Priority: 3表示这条警报的严重性较低。优先级3表示这是一个低威胁的警报,可能是探测
行为而不是实际的攻击。
Snort警报日志解读
01 日志解读
03/05-12:10: ->
其中:
03/05-12:10::表示警报触发的日期和时间(3月5日12:10:20),精确到微秒。
-> :表示警报中涉及的源IP和目标IP地址。此处表示源IP
向目标IP 发送了ICMP请求。
③时间戳和源/目标IP地址:
④ICMP相关信息:
CMP TTL:64 TOS:0x0 ID:12345 IpLen:20 DgmLen:84
TTL:64:表示 ICMP 数据包的生存时间(TTL),一般值为64。
TOS:0x0:服务类型,表示该数据包的优先级信息,这里是0x0,即无特定优先级。
ID:12345:数据包标识符。
IpLen:20:IP 头的长度,单位是字节。
DgmLen:84:数据报长度,表示整个ICMP数据包的长度为84字节。
Snort警报日志解读
01 日志解读
Type:8 Code:0 ID:56789 Seq:1 ECHO
Type:8:ICMP类型8表示“Echo Request”,即ICMP
ping请求。
Code:0:ICMP代码,通常与类型配合使用,这里为0
,表示标准的Echo Request。
ID:56789:ICMP标识符,用于区分不同的请求。
Seq:1:序列号,表示该Echo请求的序列号。
ECHO:表示这是一条ICMP Echo(ping)请求。
⑤ICMP 特殊字段:
Snort警报日志解读
02 分析解读
这条日志表明Snort检测到了一次ICMP ping扫描,特别是由Nmap工具发起的扫描行为。
Nmap是一种常用于网络探测和漏洞扫描的工具,攻击者常用它来发现网络上的活跃主机。
①检测到的事件
虽然ping扫描本身不是攻击,但它可能是攻击者探测网络的前奏。通过ping扫描,攻击者
可以找出哪些主机在线,并进一步进行漏洞扫描或攻击。
②潜在威胁
虽然优先级较低,但应密切关注这种扫描行为。如果此类扫描频繁出现,可以采取措施,如
在防火墙中阻止ICMP请求或使用防御系统对扫描源进行限制。
③建议的应对措施
谢谢观看
网络安全技术