写点什么

网络入侵检测系统之 Suricata(九)--Storage 实现详解

作者:于顾而言
  • 2022 年 9 月 17 日
    江苏
  • 本文字数:518 字

    阅读完需:约 2 分钟

网络入侵检测系统之Suricata(九)--Storage实现详解

suricata 针对一些小的线程共享空间采用多种 storage,比如 Host storage,这个数据区就是存储阈值 option 实现时一些共享数据:

threshold option-> type threshold , track by_dst, count 5, seconds 60
复制代码

代表 1 分钟内命中 5 次后才会产生一个告警,那么时间戳,命中次数就会存储在这个小的加锁的命名空间。加锁因为多个线程会同时对该区域读写,命名意味着可以区分数据区种类。

  1. storage 注册

storage 数据区由注册函数,将需要创建的数据区摘要存储起来,这一步并非真实分配空间。

例如 storag_list->"threshold 20 字节 mallco free"->"test 8 字节 myalloc my free"->... ...



2. host storage

数据区的真实创建需要用到下面的结构体 Host,我理解它是一种钥匙,上电时会预分配一些 host 对象,创建 host 对象时,并非只分配 sizeof(host),而是多分配出若干个 void *,这个数量和注册 storage 数据区一致。后面这个 host 通过偏移 sizeof(host)+id,这样就能找到各个数据区了,每个 host 都会分配自己的数据区,彼此不干扰。因为,Host 对象是加锁的,所以取得 host 时会有 HostGetHostFromHash 和 HostRelease 的操作。


3. Host storage 分配数据区流程

Host 对象负责数据区的读写,它可以调用注册的 malloc 分配 size 的字节数,也可以 set 为其他的数据区指针。



发布于: 刚刚阅读数: 4
用户头像

于顾而言

关注

| 诗酒趁年华诗酒 √ | 2022.09.10 加入

| NJUST Optical M.A. | | SASE | SangFor | Senior Developer | 知乎专栏:https://www.zhihu.com/people/whisper-of-the-Koo

评论

发布
暂无评论
网络入侵检测系统之Suricata(九)--Storage实现详解_网络安全_于顾而言_InfoQ写作社区