首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有人知道一种简单的监控根进程生成的方法?

有没有人知道一种简单的监控根进程生成的方法?
EN

Server Fault用户
提问于 2010-11-09 00:53:34
回答 3查看 7.9K关注 0票数 14

当一个新的根进程生成时,我想执行一个脚本。(在Linux上)我怎么能这样做呢?

谢谢

EN

回答 3

Server Fault用户

回答已采纳

发布于 2011-02-02 16:34:50

这听起来是个完美的审计工作。一旦您运行了auditd,这是现代基于RedHat的系统上的默认服务,您就可以通过执行

auditctl -a task,always -F uid=0

打破这个命令规则,过度使用手册页,我们发现:

-a list,action task Add a rule to the per task list. This rule list is used only at the time a task is created -- when fork() or clone() are called by the parent task. When using this list, you should only use fields that are known at task creation time, such as the uid, gid, etc. always Allocate an audit context, always fill it in at syscall entry time, and always write out a record at syscall exit time.

因此,每当叉或克隆系统调用退出时,始终为此操作写出记录。

最后一个选项可以看作是一个过滤器字符串,在我们的使用中,-F uid=0只是将我们限制在进程所有者的uid为0的情况下。

请注意,通过确保auditd配置正确并添加规则,可以在运行时执行此规则。

-a task,always -F uid=0

到发行版的相关文件中,很可能是/etc/audit/audit.rules

请记住,这将是相当嘈杂的,谁在做你的日志评论将需要为它做准备。

票数 10
EN

Server Fault用户

发布于 2020-11-05 08:28:19

您可以使用exec(基于ebpf)、跟踪点、审计、netlink进程连接器和其他一些机制来完成这一任务。我在这里写了所有方法的比较。

票数 2
EN

Server Fault用户

发布于 2010-11-10 20:55:45

我能想到的最好的方法是构建史努比库。史努比是一个非常小的共享库,它被连接到/etc/ld.so.preload并包装在execve()系统调用上。它可以配置为记录所有的exec()'s,或者仅仅是根用户的日志。在当前的版本中,每当匹配的事件( syscall到execve())发生时,史努比都会登录到syslog。不过,它不是一个大型程序(最多几百行代码),可以在不需要(或除了记录活动)之外执行脚本时进行修改。

有几件事要注意:

  • 如果每次生成根进程时都运行脚本,则脚本将是根进程,需要再次生成脚本,这将是另一个根进程,等等。请注意,不要进入循环。
  • 在一个典型的Linux机器上,有许多进程会作为根进程运行,并定期生成。例如,cron可能每分钟或几分钟就将系统cron作业作为根。如果您只是希望在用户以root用户身份登录时发生这种情况,那么这将是更多的工作。
票数 1
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/199654

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档