使用 Linux Auditd 记录所有信息

使用 Linux Auditd 记录所有信息

我正在尝试审核连接到我的服务器并执行一些命令的自动化任务。
我想知道它所做的一切。
目前我正在我的 audit.rules 文件中尝试这些规则。

-a exit,always -F arch=b64 -S execve
-a exit,always -F arch=b32 -S execve

这些行可以审计二进制命令。但如果我执行其他命令(例如“foo”),则不会记录。我需要一条规则,该规则还可以记录未发现的命令或命令尝试。这可能吗?

莱安德罗

答案1

不,您不希望 auditd 记录“绝对所有内容”。每个系统调用都会产生大量的日志条目,占用大量存储空间。而且噪音中只有极少数有趣的事件。

至少将 auditd 过滤为运行此自动化功能的特定用户。


是的,auditd 擅长记录 execve,但不能捕获输入到 shell 中的所有内容。auditd 的内核视角使得无法清楚地了解 shell 在用户空间中执行的操作。为此,您需要一个具有更强大日志记录功能的自动化工具,或者 shell 技巧。

在调试 bash shell 脚本时,请考虑设置内置命令将改善体验。set -e在非零返回码时立即退出。set -o xtrace打印所有命令。

您还可以在非交互式 shell 中启用历史记录通过导出相关的环境变量和set -o history

相关内容