rm
诸如、kill
和之类的危险命令systemctl stop
可以隐藏在 bash 输入之外 - 即,恶意用户可以使用模块轻松地将它们隐藏在 python 脚本中,os
只需运行 python 脚本作为代理来隐藏他们真正想要伤害的内容,bash 历史记录或类似的内容只会留下他们在删除该脚本之前运行的记录以隐藏他们真正所做的事情python3 [the malicious script].py
。
我想做的是在每次执行这些关键命令时记录这些关键命令(欢迎指出超过 3 个命令的任何命令),无论它来自哪里。并且该日志不能被除 root 之外的任何用户丢弃。
您可以使用
auditd
和监视文件操作/系统调用来删除文件/目录。规则将类似于:当然,您可以在规则中添加特定文件监控的其他调用,例如
kill
:第 1 步:查找命令位置
步骤2:获取acl
getfacl <command path>
步骤 3:用于
setfacl
为允许的用户设置 aclSetp 4:所有权限问题日志通常都可以在 /var/log 文件夹中的审核日志中找到。
希望这会有所帮助。
编辑:
我的印象是问题是通过程序处理命令(不被认为是低级代码)。
我们可以使用下面的auditctl获取所有失败的开放调用(如果配置为监视/记录)
因此,序列将设置文件/命令的 acls 并通过记录失败的系统调用,
auditd
以便我们可以检查日志。通过这种方式,我们可以知道谁尝试执行哪个命令或系统调用。注意:我没有考虑程序是否使用 root 执行的条件。