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模式报警信息详解相关推荐

  1. 网络入侵检测--Snort软件运行模式及参数详解

    这边介绍一下Snort的运行参数,这里主要根据使用的方式,来推荐一些常用的组合.Snort目前有常用的三种方式, 数据包嗅探 数据包记录 NIDS网络攻击检测 数据包嗅探 分析展示就是我们常用的嗅探模 ...

  2. 网络入侵检测--Snort软件配置文件snort.conf详解

    Snort最重要的工作模式就是NIDS,网络入侵检测,在NIDS模式下,snort.conf文件是必不可少的. 那么今天,我们来仔细阅读以下snort.conf这个文件,看一下每个部分的功能,都是配置 ...

  3. 网络入侵检测--Snort软件安装

    作为一款开源的网络入侵检测软件,snort算是相当完善的一款,并且注册之后,能够享受到丰富的规则可供使用,作为白嫖一党,那必须 安装环境 CentOS Linux release 7.9.2009 ( ...

  4. 网络入侵检测--Snort软件规则编写

    Snort规则编写 今天主要来讲一下Snort中的规则编写规则,还有些绕口,就是编写他们的rules的方法,可以帮助我们理解他们提供的rules和定义我们自己的rules. 首先我们来看一条规则 al ...

  5. 联想服务器查看告警信息,科普 THINKPAD开机错误消息及报警信息详解

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 ----------------------------------------------------------------------------- ...

  6. (NIDS)网络入侵检测函数接口说明

     网络入侵检测系统(NIDS)函数接口说明 基本函数 1.nids_register_chksum_ctl struct nids_chksum_ctl { u_intnetaddr; u_int ...

  7. 网络入侵检测 Network Intrusion Detection System (NIDS)

    网络入侵检测 Network Intrusion Detection System--NIDS 网络入侵检测 Network Intrusion Detection System (NIDS) 1.学 ...

  8. 网络安全实验-入侵检测-基于网络入侵检测系统

     实验目的: 1.掌握snort IDS工作机理 2.应用snort三种方式工作 3.熟练编写snort规则 实验原理: 一.snort IDS概述 snort IDS(入侵检测系统)是一个强大的网络 ...

  9. 综述类_网络入侵检测技术综述

    文章目录 网络入侵检测技术综述 大纲 一.入侵检测系统分类 1.基于数据来源划分 2.基于检测技术划分 二.基于传统机器学习的入侵检测 1.入侵数据处理 2.监督机器学习技术 3.无监督机器学习技术 ...

最新文章

  1. 【天池直播】图像系列直播第一讲--带你入坑深度学习
  2. Win32 GetWindowLong函数实例Demo
  3. 一线上nagios监控参数
  4. Jwt Token 的刷新机制设计
  5. 在线黑客帝国文字效果生成工具
  6. 从内存分配分析程序初始化和存储
  7. 是时候更换你的无线路由器(wifi暴力破解)
  8. 【HTML CSS JS 蝴蝶飞舞特效 绝美(附完整代码)】
  9. 计算机ps如何更改数字,ps数字(ps改数字详细步骤)
  10. 神经网络模型-ART 自适应共振网络
  11. 微信公众号,带参二维码/推广二维码的使用
  12. new relic_Datadog,SignalFX,New Relic,Wavefront –您应该选择哪个仪表板?
  13. register关键字
  14. 高通QSPR读写NV
  15. 假如腾讯跟360之战是一场阴谋联想到的
  16. 新手安装WIN7与ubuntu双系统 安装记录
  17. 怎样解决PowerDesigner15出现许可证过期问题?
  18. 坑!windows自带的远程桌面连接会限制目标设备的显卡功能,opengl 版本过低 谁之过
  19. 华为交换机测试吞吐量软件,TamoSoft Throughput Test v1.0 Build 34 网络吞吐量测试工具...
  20. spring第五版学习笔记

热门文章

  1. php 去除字符前空格,php怎样去除字符串前后的空格
  2. VC++ 繁星音乐播放器
  3. 百度提示:违法违规网页,建议关闭的解决方案
  4. 计算机网络的性能指标图片,计算机网络的性能指标
  5. Python遗传算法求解函数极值
  6. Win极速文件搜索Listary
  7. 视频教程-ThreeJS 3D高级教程-JavaScript
  8. 关于java实例方法可以访问类变量的一种解释
  9. 关于CrystalReportsy 9(水晶报表9)在VS2017上的使用
  10. 天地图<——>高德地图互转坐标 工具类