配置 auditd 仅监控一个命令的执行

配置 auditd 仅监控一个命令的执行

我们已经部署了 Ansible

我想设置审计来记录谁执行了剧本。因此我只想监控命令的执行ansibleansible-playbook

我可以使用以下命令配置 Ansible 来记录所有命令:

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

但这会产生太多噪音。

审计的使用ansibleansible-playbook实现如何..

注意:我知道这ansible-playbook是一个 Python 脚本,所以要照顾的命令可能是 python 命令?

答案1

作为 Ansible 的原生功能,你可以使用其内置的任务日志记录到 syslog,并且回调插件可以发送到各种目的地。包括自定义插件,这是插件 ARA 记录 Ansible 历史记录的方式。

远程系统并不总是执行 ansible-playbook。模块代码被复制,对于 Python 模块安西巴尔茨. 仅执行临时文件或 stdin 管道。

编辑:请注意,非 Python Ansible 模块在技术上是可行的,但很少见。监视 python 执行程序不会捕获制作 Perl 或 Go 模块的专用 Ansible 用户。


Linux auditd 的限制在于您可以过滤的 exe 是解释器二进制文件(python)而不是脚本(ansible-playbook)。过滤到系统 python,您会看到系统上的所有 python 脚本都在运行。有一个 Ansible 特定的 python(virtualenv),但仍然没有什么可以阻止其他东西(ansible-inventory)使用此 python。

您可以将审计事件过滤到特定用户,这在您只以该用户身份运行游戏时很有用。


编辑:auditd 擅长跟踪一般的权限提升。如果您想要密切跟踪这一点,请查看 audit-userspace 源代码中的示例规则。例如,pci-dss“记录所有特权提升”规则

相关内容