gpt4 book ai didi

c++ - auditd 实时事件处理 C/C++

转载 作者:太空宇宙 更新时间:2023-11-04 04:24:28 24 4
gpt4 key购买 nike

我正在尝试用 C/C++ 编写一个进程来实时分析 auditd 事件。

目前,我正在使用 af_unix 插件从 Unix 套接字(默认情况下为 /var/run/audisp_events)读取审计事件。

我尝试使用 select()recv() 像这样使用来自套接字的事件:

select(FD_SETSIZE, &set, NULL, NULL, NULL);
recv(sockfd, message, size, MSG_DONTWAIT);

然后发送到 auparse 回调以解析类似于此 example 的缓冲区:

auparse_feed(au, buf, (size_t)len);
auparse_flush_feed(au);

这里的问题是 auditd 事件可以是多记录事件(如 SYSCALL)并且使用 recv() 只消耗部分记录而不是全部,所以在解析回调中,我没有所有的信息。

然后我尝试使用 getline() 一次消费一条记录,但我仍然无法判断该记录是一条记录事件还是多条记录事件。

阅读 auditd 文档后 here , 我找到了这个:
EOE 触发记录多记录事件的结束。
我可以使用它来知道何时停止消费(因为 getline() 是一个阻塞操作)但是 EOE 事件只存在于多记录事件中。

我的问题是:

  • 使用 af_unix 插件是实时使用 auditd 事件的最佳方式吗?
  • 有没有办法从记录信息中知道这是一个多记录事件?如果不是,是否有关于哪些事件是多记录事件的文档?

最佳答案

您应该为此使用 Audit Dispatcher (audisp) 插件。

这里有一些资源:

一个事件的记录数,调用auparse_get_num_records .

关于c++ - auditd 实时事件处理 C/C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43086333/

24 4 0
文章推荐: php - 在 php 中动态创建复选框时,如何并排对齐它们?
文章推荐: python - 为什么 Keras fit_generator() 在实际 "training"之前加载
文章推荐: javascript - 为什么
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com