获取内核中套接字事件的通知

伊坦奈姆

我需要为本地 tcp-connections/Unix-domain-connections 找到以最有效的方式启动连接的客户端进程。

我目前有一个在驱动程序中实现的解决方案,它拦截接受和连接系统调用,匹配它们,并找出客户端进程。

现在我尝试在没有我自己的驱动程序的情况下实现相同的目标

我尝试过的不同方法:

  • 拦截适当的系统调用并以类似方式解析客户端的 Linux 审计系统插件。这种方法有3个问题:
    1. 每个截获的事件都从内核流向 auditd 进程,再到其他一些中间进程,而不是我的插件。
    2. 审核规则适用于所有插件和审核日志 - 我无法定义自己的过滤规则集。- 这可能会导致使用审计系统的机器效率极低。
    3. 它要求在机器上安装审计(这不是许多 Linux 发行版的默认设置)。
  • 模仿 netstat/lsof - 为了找到持有连接的进程,他们迭代整个 procfs mount - 这是有道理的,因为在连接建立之后,每个连接可能属于多个进程。如果我想为每个连接建立这样做,这种方法是非常无效的。
  • 我想尝试其中一种 LSM(Linux 安全模块)解决方案 - 但我目前不熟悉它 - 他们的 LSM 是否可以为正在运行的应用程序传递内核事件以进行“决策”?

我会很高兴听到建议和其他意见,这些建议和其他意见可以引导我为最初的目标找到合理的解决方案。

伊坦奈姆

找到了一个仅适合我对 Unix 域套接字需求的选项 - 如果在服务器端运行代码是一种可能性(如我的情况),则可以通过以下方式使用 getsockopt:

getsockopt(fd, SOL_SOCKET, SO_PEERCRED, &cr, &len)

更多细节在http://welz.org.za/notes/on-peer-cred.html

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

获取套接字监听的事件

来自分类Dev

C#中套接字的列表或ArrayList

来自分类Dev

Sails.js中套接字的策略

来自分类Dev

内核中的netlink套接字事件侦听器

来自分类Dev

/ proc / <pid> / fd中套接字的时间戳

来自分类Dev

MPI中套接字编程的select()等效于什么?

来自分类Dev

Python 3中套接字的子类中的WinError 10038

来自分类Dev

/ proc / <pid> / fd中套接字的时间戳

来自分类Dev

如何在套接字中获取最新的Recv通知(Python)

来自分类Dev

python套接字获取

来自分类Dev

用于 C# 中套接字标识符的 TCP 套接字服务器自定义类

来自分类Dev

套接字事件之间的区别

来自分类Dev

记录TCP套接字事件

来自分类Dev

Windows中套接字发送缓冲区的大小是多少?

来自分类Dev

最大化C语言中套接字接收的char级联操作的效率

来自分类Dev

处理文件上传中套接字上意外的EOF的更好方法?

来自分类Dev

如何有效地确定C#中套接字的状态?

来自分类Dev

在套接字io中的事件的回调函数中获取事件名称

来自分类Dev

Linux内核中原始套接字的工作

来自分类Dev

获取HttpRequest的基础套接字

来自分类Dev

每个用户的套接字io通道通知

来自分类Dev

UDP套接字上的接收通知

来自分类Dev

套接字断开通知方法

来自分类Dev

每个用户的套接字io通道通知

来自分类Dev

有关C语言(Linux)中套接字服务器客户端编程中accept()的问题

来自分类Dev

套接字io获取断开的套接字的ID

来自分类Dev

从内核空间到用户空间的事件通知

来自分类Dev

NodeJS + SocketIO大套接字事件管理

来自分类Dev

套接字io鼠标单击事件