首先,进程创建很少是一个有用的记录事件,它与安全无关(资源限制除外)。我认为您的意思是挂钩程序的执行,这是由 完成的execve
,而不是fork
.
其次,您引用的用例通常最好使用为此目的而制定的现有机制,而不是滚动您自己的机制。
auditctl
手册页有示例;正如我上面解释的,您要记录的系统调用是execve
)。如果您想修改一个特定程序调用其他程序的方式,而不影响其他程序的行为,有两种情况:该程序可能是敌对的,或者不是。
PATH
. 如果程序使用了不容易配置的绝对路径,在非老式的 Linux 系统上,您可以在单独的挂载命名空间中运行它(另请参阅内核:命名空间支持)。如果你真的需要精细控制,你可以通过调用程序来加载一个库来覆盖一些库调用LD_PRELOAD=my_override_library.so theprogram
。有关示例,请参阅在执行前重定向文件描述符。请注意,除了 之外execve
,您还需要覆盖所有execve
内部调用的 C 库函数,因为LD_PRELOAD
不会影响内部 C 库调用。您可以通过在下面运行程序来获得更精确的控制ptrace
; 这允许您覆盖系统调用,即使它是由 C 库函数生成的,但设置起来更困难(我不知道有什么简单的方法可以做到)。 归档时间: |
|
查看次数: |
3095 次 |
最近记录: |