记录每个SUID程序的每次调用?


12

我想要一个包含每次用户运行任何suid程序的条目的日志文件,其中包含用户名,程序和传递给它的任何命令行参数。在Linux上有实现此目的的标准方法吗?

Answers:


7

您可以通过审核子系统记录特定可执行文件(是否为setuid)的所有调用。文档很少。从auditctl手册页本教程开始。最新发行的产品都运送auditd包裹。安装它并确保auditd守护程序正在运行,然后执行

auditctl -A exit,always -F path=/path/to/executable -S execve

并查看电话是否已登录/var/log/audit/audit.log(或您的分配设置在何处)。


1
我猜一个人可以编写一个脚本来首先使用find获取所有SUID二进制文件,然后针对每个应用程序使用您的解决方案。不优雅,但肯定可行。谢谢!

2
@Kim:我认为您可以-F path=…-F euid=0 -F 'uid!=0'或类似的名称记录非root用户对setuid root二进制文件的所有调用。我看不到审计子系统中调用的setxid代码中execve的钩子,也看不到特定的setxid监视。或者,当然,您可以记录每个日志并进行后处理。execve
吉尔斯(Gilles)'所以

有趣。以前从未听说过。我想知道它的用途如何。Debian popcon没有针对的条目auditd
Faheem Mitha

find命令列出所有SUID文件:find / -xdev \( -perm -4000 \) -type f -print

1
@FaheemMitha它有一个popcon条目:qa.debian.org/popcon-graph.php?packages=auditd
jofel
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.