前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >网络入侵检测系统之Suricata(九)--Storage实现详解

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

原创
作者头像
于顾而言SASE
发布2024-03-20 09:54:30
690
发布2024-03-20 09:54:30
举报
文章被收录于专栏:入侵检测系统入侵检测系统

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

代码语言:javascript
复制
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为其他的数据区指针。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
网络入侵防护系统
网络入侵防护系统(Network Intrusion Prevention System,NIPS),是基于腾讯安全服务内部数百条业务线的运维经验积累和大数据处理能力的结合,通过旁路部署的方式,提供了网络层 ACL (访问控制)和日志审计功能,解决云平台监管、ACL 控制、安全治理等问题,并辅助客户满足网安法,合规性要求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档