我正在尝试审核连接到我的服务器并执行一些命令的自动化任务。
我想知道它所做的一切。
目前我正在我的 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
。