Linux 信号记录器

Linux 信号记录器

我正在寻找一个适用于 Linux 内核的信号记录器,无需修补内核。

我发现很多关于修补的文章,但我对此不感兴趣。

我运行的是默认 Ubuntu 13.04。

# uname -a
Linux bt 3.8.0-26-lowlatency #18-Ubuntu SMP PREEMPT Tue Jun 25 22:36:04 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

我需要:pid,comm(发送者)->信号(数字0-31)->pid,comm(捕手)

也会很棒:

  pidtree of sender ----- - - - - - receiver(cmd) ---- child1 of receiver, etc
              /                     \----child2---child1 of child2(cmd)
             ppid(+cmd)               ----child3(+cmd)
            /                          \__child4(+cmd)
           ppid of ppid(cmd)
          ....
         /
        init

捕手也是如此。 + 时间戳。

我已经发现了什么:

superfrink.net:Chad Clark 的 Linux UserSpace Signal Logging 补丁(记录从用户空间程序发送的信号。)(2003 年 3 月 10 日版本)

grsecurity patch有类似的实现。

我需要轻松简单的方法来在 Ubuntu 上实现这一目标。

答案1

我可以给你一个部分解决方案。

使用审计Linux 内核中的子系统。审计子系统记录核心转储信号。核心转储信号是:

  1. ABRT
  2. FPE
  3. 患病的
  4. 辞职
  5. SEGV
  6. 陷阱
  7. 系统
  8. 急救人员
  9. 公共汽车
  10. XCPU
  11. 新福泽

审核日志可以在 /var/log/audit.log 中找到。对于核心转储信号审核日志如下

type=ANOM_ABEND msg=audit(1386433952.455:141): auid=1000 uid=1000 gid=1000 ses=2 pid=6664 comm="bash" reason="memory violation" sig=24

上面是一个在信号 SIGXCPU 上记录到 uid 1000 用户的进程 6664 上的示例。从该日志中您可以找出“catcher”的 comm 和 pid 的详细信息。请注意,日志中的原因字段已损坏。即使有了这个日志,我们仍然对发件人一无所知。

您可以找到配置详细信息这里

相关内容