网络入侵检测--Snort软件NIDS模式报警信息详解
Snort最有价值的地方,就是它作为NIDS网络入侵检测软件来分析监控实时流量,那么最终能够产生的报警结果,也就是我们最关注的东西,即我们使用snort需要的就是拿到报警信息,并且联动到我们其他软件模块,这才算起到了作用,没有人会傻乎乎的守着终端看有没有报警啊
那么来介绍一下,NIDS模式下产生的报警信息。
首先,我们来看一下,报警模式下运行,能够产生哪些格式的报警信息,通过哪些途径产生。命令是通过-A参数进行配置的,一共有六种方式
参数 | 作用 |
---|---|
-A fast | 快速警报模式。使用时间戳、警报消息、源和目标IP/端口以简单格式写入警报。 |
-A full | 完全警报模式。这是默认警报模式,如果未指定模式,将自动使用。 |
-A unsock | 向另一个程序可以监听的UNIX套接字发送警报。 |
-A none | 关闭警报。 |
-A console | 向控制台(屏幕)发送“快速样式”警报。 |
-A cmg | 生成“cmg样式”警报。 |
然后我们来逐一看一下产生的报警如何。
测试方法,首先在snort.conf中增加如下两行,使得操作更简单
###增加接口
config interface:enp1s0
#增加日志存储路径
config logdir:/var/log/snort
还需要配置好规则,目前我们打开了scada的规则,在snort.conf中增加
include $RULE_PATH/protocol-scada.rules
其中触发的规则就是
alert tcp $EXTERNAL_NET any -> $HOME_NET 502 (msg:"PROTOCOL-SCADA Modbus read holding registers from external source"; flow:to_server,established; modbus_func:read_holding_registers; metadata:policy max-detect-ips drop; reference:url,www.modbus.org/docs/Modbus_Application_Protocol_V1_1b.pdf; classtype:protocol-command-decode; sid:17790; rev:5;)
最后我们提供了一个pcap文件/tmp/all.pcap,作为分析样本。内部包含了一条触发上面规则的modbus协议数据
快速报警
我们来测试快速报警产生,通过执行命令
snort -c /etc/snort/rules/etc/snort.conf -A fast -r /tmp/all.pcap
然后在/var/log/snort下就能产生报警文件和记录文件
其中alert就是存储报警信息的文件,snort.log.xxxx就是记录下的报警报文的pcap文件。是不是很简单?
然后我们来看alert中的数据
[root@localhost ~]# cat /var/log/snort/alert
08/03-13:47:59.825270 [**] [1:17790:5] PROTOCOL-SCADA Modbus read holding registers from external source [**] [Classification: Generic Protocol Command Decode] [Priority: 3] {TCP} 192.168.8.1:49695 -> 192.168.8.3:502
08/03-13:48:00.836034 [**] [1:17790:5] PROTOCOL-SCADA Modbus read holding registers from external source [**] [Classification: Generic Protocol Command Decode] [Priority: 3] {TCP} 192.168.8.1:49695 -> 192.168.8.3:502
08/03-13:48:01.862030 [**] [1:17790:5] PROTOCOL-SCADA Modbus read holding registers from external source [**] [Classification: Generic Protocol Command Decode] [Priority: 3] {TCP} 192.168.8.1:49695 -> 192.168.8.3:502
以第一条为例,分开解释
字段 | 含义 |
---|---|
08/03-13:47:59.825270 | 时间戳 |
[**] | 分割符 |
[1:17790:5] | 这三部分是GID|sid|rev,分别对应了Generator ID,规则里面的sid字段和rev字段。gid可以通过gen-msg.map文件查看到含义。 |
PROTOCOL-SCADA Modbus read holding registers from external source | 规则中的msg字段 |
[**] | 分割符 |
[Classification: Generic Protocol Command Decode] | 分类:属于通用协议命令解码 |
[Priority: 3] | 优先级 |
{TCP} | tcp类型 |
192.168.8.1:49695 -> 192.168.8.3:502 | 来往地址及端口 |
所以我们通过-A fast方式可以得到如上数据。
完整报警
我们用-A full 代替前面的-A fast
snort -c /etc/snort/rules/etc/snort.conf -A full -r /tmp/all.pcap
就会得到下面的报警
[**] [1:17790:5] PROTOCOL-SCADA Modbus read holding registers from external source [**]
[Classification: Generic Protocol Command Decode] [Priority: 3]
08/03-13:47:59.825270 192.168.8.1:49695 -> 192.168.8.3:502
TCP TTL:128 TOS:0x0 ID:60237 IpLen:20 DgmLen:52 DF
***AP*** Seq: 0xA2229E72 Ack: 0x34FEC424 Win: 0x1400 TcpLen: 20
[Xref => http://www.modbus.org/docs/Modbus_Application_Protocol_V1_1b.pdf]
前三行与简单报警基本一致,只是时间放的位置变了。
后面两行就是TCP协议的一些数据,例如TTL,TOS,Seq及 Ack等
最后一行是规则中的reference字段。
套接字传输报警
我们用-A unsock 参数,执行命令
snort -c /etc/snort/rules/etc/snort.conf -A full -r /tmp/all.pcap
这个就是Snort会创建一个IPC socket。然后将报警信息发送到这个socket,其他进程可以通过监听这个本地socket,获得报警信息。
传递的socket文件是
snort_alert,位于你用的log路径下,即前面的/var/log/snort
socket API原本是为网络通讯设计的,但后来在socket的框架上发展出一种IPC机制,就是UNIX Domain Socket。虽然网络socket也可用于同一台主机的进程间通讯(通过loopback地址127.0.0.1),但是UNIX Domain Socket用于IPC更有效率:不需要经过网络协议栈,不需要打包拆包、计算校验和、维护序号和应答等,只是将应用层数据从一个进程拷贝到另一个进程。这是因为,IPC机制本质上是可靠的通讯,而网络协议是为不可靠的通讯设计的。UNIX Domain Socket也提供面向流和面向数据包两种API接口,类似于TCP和UDP,但是面向消息的UNIX Domain Socket也是可靠的,消息既不会丢失也不会顺序错乱。
值得注意的地方是,这个发送的消息,只有规则中的msg字段,即前面的“PROTOCOL-SCADA Modbus read holding registers from external source”,并无其他消息,所以感觉这个方式有些鸡肋。
关闭报警
越说越没用
可能用户就是想安静一下
……
snort -c /etc/snort/rules/etc/snort.conf -A none-r /tmp/all.pcap
控制台输出报警
这个主要是用来调试查看报警信息,直接在终端中就能看到报警信息。
snort -c /etc/snort/rules/etc/snort.conf -A cconsole -r /tmp/all.pcap
cmg模式
这个将在控制台输出结果,会输出链路层数据,及后面会有数据段内容
snort -c /etc/snort/rules/etc/snort.conf -A cmg -r /tmp/all.pcap
结果如下
08/03-13:47:59.825270 [**] [1:17790:5] PROTOCOL-SCADA Modbus read holding registers from external source [**] [Classification: Generic Protocol Command Decode] [Priority: 3] {TCP} 192.168.8.1:49695 -> 192.168.8.3:502
Stream reassembled packet
08/03-13:47:59.825270 C8:F7:50:F6:5F:D4 -> A4:BB:6D:AA:2E:45 type:0x800 len:0x42
192.168.8.1:49695 -> 192.168.8.3:502 TCP TTL:128 TOS:0x0 ID:60237 IpLen:20 DgmLen:52 DF
***AP*** Seq: 0xA2229E72 Ack: 0x34FEC424 Win: 0x1400 TcpLen: 20
41 79 00 00 00 06 01 03 00 00 00 0A Ay..........=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
最后补充一种高速处理的方式
报警存储为unified2格式
配置snort.conf,开启unified2,output unified2:filename snort.log,limit 128
通过执行命令
snort -c /etc/snort/rules/etc/snort.conf -r /tmp/all.pcap
就能够在log路径下生成结果,这个结果就不再是pcap包,而是二进制数据,查看方法是,通过命令
u2spewfoo /var/log/snort/snort.log.1637217363
然后可以通过工具Barnyard2,将数据慢慢写入到msyql中。
Barnyard2的作用是读取Snort产生的二进制事件文件并存储到MySQL中。Snort的配置文件自身含有插件,它允许将Snort报警记录到MySQL中,但这样一来,系统数据会激增。当IDS系统检测到***行为时,它会用INSERT语句向数据库中写入数据,导致更新非常慢。所以如果直接将Snort输出到数据库,在数据量增大时这种方案的效率并不高,故使用外部代理将报警输出到Barnyard2。
这里就不详解了,有兴趣的可以百度snort barnyard两个关键词
还是回到前面的话,结果是为了其他软件服务,通过这些方式,将snort作为关键模块融合到系统中,才是正道
最近发现学习,写博客也能让人上瘾,就像多年以前健身的时候一样,一下班就去健身房,周末也不会放弃。其实能让人上瘾的方式,就是你的持续有立竿见影的效果,哪怕是很微小的,熬过了前面几天,后续就会欲罢不能。
另外一个原因就是:闲的。
网络入侵检测--Snort软件NIDS模式报警信息详解相关推荐
- 网络入侵检测--Snort软件运行模式及参数详解
这边介绍一下Snort的运行参数,这里主要根据使用的方式,来推荐一些常用的组合.Snort目前有常用的三种方式, 数据包嗅探 数据包记录 NIDS网络攻击检测 数据包嗅探 分析展示就是我们常用的嗅探模 ...
- 网络入侵检测--Snort软件配置文件snort.conf详解
Snort最重要的工作模式就是NIDS,网络入侵检测,在NIDS模式下,snort.conf文件是必不可少的. 那么今天,我们来仔细阅读以下snort.conf这个文件,看一下每个部分的功能,都是配置 ...
- 网络入侵检测--Snort软件安装
作为一款开源的网络入侵检测软件,snort算是相当完善的一款,并且注册之后,能够享受到丰富的规则可供使用,作为白嫖一党,那必须 安装环境 CentOS Linux release 7.9.2009 ( ...
- 网络入侵检测--Snort软件规则编写
Snort规则编写 今天主要来讲一下Snort中的规则编写规则,还有些绕口,就是编写他们的rules的方法,可以帮助我们理解他们提供的rules和定义我们自己的rules. 首先我们来看一条规则 al ...
- 联想服务器查看告警信息,科普 THINKPAD开机错误消息及报警信息详解
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 ----------------------------------------------------------------------------- ...
- (NIDS)网络入侵检测函数接口说明
网络入侵检测系统(NIDS)函数接口说明 基本函数 1.nids_register_chksum_ctl struct nids_chksum_ctl { u_intnetaddr; u_int ...
- 网络入侵检测 Network Intrusion Detection System (NIDS)
网络入侵检测 Network Intrusion Detection System--NIDS 网络入侵检测 Network Intrusion Detection System (NIDS) 1.学 ...
- 网络安全实验-入侵检测-基于网络入侵检测系统
实验目的: 1.掌握snort IDS工作机理 2.应用snort三种方式工作 3.熟练编写snort规则 实验原理: 一.snort IDS概述 snort IDS(入侵检测系统)是一个强大的网络 ...
- 综述类_网络入侵检测技术综述
文章目录 网络入侵检测技术综述 大纲 一.入侵检测系统分类 1.基于数据来源划分 2.基于检测技术划分 二.基于传统机器学习的入侵检测 1.入侵数据处理 2.监督机器学习技术 3.无监督机器学习技术 ...
最新文章
- 【天池直播】图像系列直播第一讲--带你入坑深度学习
- Win32 GetWindowLong函数实例Demo
- 一线上nagios监控参数
- Jwt Token 的刷新机制设计
- 在线黑客帝国文字效果生成工具
- 从内存分配分析程序初始化和存储
- 是时候更换你的无线路由器(wifi暴力破解)
- 【HTML CSS JS 蝴蝶飞舞特效 绝美(附完整代码)】
- 计算机ps如何更改数字,ps数字(ps改数字详细步骤)
- 神经网络模型-ART 自适应共振网络
- 微信公众号,带参二维码/推广二维码的使用
- new relic_Datadog,SignalFX,New Relic,Wavefront –您应该选择哪个仪表板?
- register关键字
- 高通QSPR读写NV
- 假如腾讯跟360之战是一场阴谋联想到的
- 新手安装WIN7与ubuntu双系统 安装记录
- 怎样解决PowerDesigner15出现许可证过期问题?
- 坑!windows自带的远程桌面连接会限制目标设备的显卡功能,opengl 版本过低 谁之过
- 华为交换机测试吞吐量软件,TamoSoft Throughput Test v1.0 Build 34 网络吞吐量测试工具...
- spring第五版学习笔记