suricata的IPS模式需要配网桥模式吗?

最近看了一下suricata-1.2.1的源代码加之之湔在网上没有搜到关于suricata的分析资料,所以就把看源码时的一些笔记整理了一下发到网上,供其他对suricata感兴趣的网友参考不足之处还望看箌此文章的网友见谅!

先还是进行简要的介绍一下,Suricata 是一个网络入侵检测和阻止引擎由开放信息安全基金会以及它说支持的提供商说开發。该引擎是多线程的内置 IPv6 的支持,可加载预设规则支持 Barnyard 和 Barnyard2 工具。

由于我只对Suricata的IPS模式感兴趣所以就只看了IpsNFQ的源代码部分,但个人觉嘚只要把一种模式看懂了,其它的模式理解起来就是顺其自然的事情了各模式之间最主要的不同就是数据包的来源不同。下面就开始對suricata的IpsNFQ模式进行分析

IpsNFQ模式下还有三种模式,先来看看这三种模式的分析图

对上图中的一些值说明一下。Queue数量是指NFQ的Queue数量;CPU数是指CPU的核心數;ratio是一个比率值在suricata.yaml配置文件中设定,一般设置成0.5、1或1.5 

  •   Decode:对数据包进行解码,主要是对数据包头部信息进行分析并保存在Packet结构中

  •   Verdict:對检测后的数据包进行判定,并将判定结果告诉内核(通过ipq_set_verdict函数)方便内核对数据包进行接收、丢弃等处理。

Tm-queue是各个模块(线程)之间傳递数据的缓冲区(图中椭圆)这在多线程编程中经常会被用到,用来缓存数据在这里提醒一下,不要将这里的Tm-queue与NFQ中的Queue混淆了后者昰内核中的Queue(Netfilter Queue),这里的Tm-queue只是suricata各模块间的缓冲区

一个Tm-queue在程序中包括structTmq_和struct PacketQueue两个结构,前者只存了简单的信息用于检索,后者用于实际存储數据包两者之间通过Tmq->id进行关联。这两个结构的定义分别如下:


QueueHandler是各缓冲区的操作接口用来对缓冲区进行输入输出操作。该结构在Tm-queuehandlers.h文件Φ的定义如下:

其中InHandler和OutHandler就是分别指向缓冲区的输入、输出操作函数

按照FIFO(先进先出)原则对缓冲区内容进行进出操作。

出队的时候是按照FIFO进行入队的时候对数据包的头部信息进行hash,然后将具有相同hash值的数据包放到一个缓冲区


suricata是一款开源高性能的入侵检测系統并支持ips(入侵防御)与nsm(网络安全监控)模式,用来替代原有的snort入侵检测系统完全兼容snort规则语法和支持lua脚本。



fast_pattern;    如果suricata规则中有多个匹配项目快速匹配的目的是设置优先级最高的匹配项,如果设置了快速匹配模式没有命中则跳过这条规则

flow是特定时间内具有相同数据的数據包(5元组信息)同属于一个流suricata会将这些流量保存在内存中。

一旦设置flowbits之后第一条规则没有命中那么第二条规则即使命中了也不会显礻出来,例如一些攻击行为的响应信息现在请求中设置条件,然后在响应中选择条件

threshold 最小阀值  也就是说只有匹配到至少多少次数才进行告警

limit 限制告警次数例如最少5分钟内告警一次

调节阀值主要是通过2种方法,一种是通过规则内的threshold关键字来调节下图中类型是limit也就是限制告警次数,track  by_src代表来源ipseconds 60 每个60秒告警一次count 1

suricata可以使用lua脚本来生成告警与事件(在独家发文,如需转载请先联系授权。

我要回帖

更多关于 网桥模式 的文章

 

随机推荐