天天看点

开源IDS/IPS-suricata框架之分组流水线模型

1 分组流水线模型

稍微有些过时的“auto”运行模式示例。

2 初始化

Suricata具有多种运行模式,每种模式都会初始化与操作关联的线程,队列和管道。这些模式通常与所选择的捕获设备(比如一个抓包接口eth0)、IDS或IPS有关。捕获设备有:pcap、pcap文件、nfqueue、ipfw,或者一个专有的捕获设备。启动时只选择一种运行模式,-i选项用于pcap设备,-r选项用于pcap文件,-q用于nfqueue。

模块用于封装具有生命周期回调(比如,init、deinit)的某个主要功能。分组流水线模型中每个线程都是模块的实例,这些线程由runmodes.c文件定义的runmode初始化。runmode也初始化用于在模块和队列之间移动数据包的队列和数据包处理程序。

初始化用于在模块和队列之间移动数据包的队列和数据包处理程序。 在runmode初始化所有步骤完成后,线程被标记为可运行。

管理线程用于执行数据包管道之外的任务。 管理线程的更多细节应该放在这里。

3 流水线模型基本组成

本文介绍重点pcap设备runmode。

3.1 捕获模块(Capture Module)

pcap设备使用提供的,诸如“eth0”这样的名称初始化。设备一旦初始化,它就会开始收集数据包并传递给Suricata。然后,Suricata会对数据做一层薄封装,使它与链接类型解码器兼容。

3.2 解码模块(Decode Module)

解码是获取缓冲区数据,并将其转换为Suricata所支持的数据结构的过程。这些缓冲区被传递到指定的连接类型解码器。当前支持的连接类型如下:LINKTYPE_LINUX_SLL、LINKTYPE_ETHERNET、LINKTYPE_PPP、LINKTYPE_RAW。

3.3 流模块(Stream Module)

3.4 探测模块(Detect Module)

探测模块负责多个复杂的任务:加载所有的规则,初始化探测插件,创建数据包路由的探测组,最后使用所有应用的规则检测数据包。

文章译自:https://redmine.openinfosecfoundation.org/projects/suricata/wiki/Packet_Pipeline

翻译权译者所有,转发请注明出处,谢谢。

继续阅读