我想审计大约一年前在我的 ubuntu 桌面上为两个帐户执行的命令。我知道 acct [sudo apt-get install acct],我可以在里面运行 lastcomm、dump-acct、dump-utmp,但我想要一种不需要安装任何东西(acct..等)的其他方法。如果可能的话,我能否知道 acct 从哪里获取信息/数据。
答案1
您无法使用acct
它来审核在配置或安装之前发生的事件,因为它是一项收集该信息的后台服务。话虽如此,以下是一些替代方案:
.bash_history(或其他 shell 的历史记录)
是用户主目录 ( /home/username/.bash_history
) 中的一个文件,Bourne Again Shell(Ubuntu 中的默认设置)在其中存储其命令历史记录(当您按向上箭头重复上一个命令时可以访问它,等等)。
用户可能使用了不同的 shell。您可以通过运行命令来检查他们使用的 shell getent passwd username
。它位于此处:
$ getent passwd username
username:x:1000:1000:User Name,,,:/home/username:/bin/bash
^^^^^^^^^
其他 shell 的历史文件有:
bash .bash_history
csh .history
zsh Hard to say, could be .histfile, .zhistory, or .zsh_history, or something else entirely.
fish .local/share/fish/fish_history
(非详尽)
请注意,许多 shell 会限制历史文件的大小。如果用户自您要审计的日期起一直在执行命令,尤其是执行了很长时间,那么您要查找的内容很有可能已被覆盖。
安全日志
如果用户使用 sudo 执行了命令(这将是想要对其进行审计的一个很好的理由!),那么它将出现在安全日志中,最新的日志位于 /var/log/auth.log。条目如下所示:
Jun 18 12:00:17 hostname sudo: username : TTY=pts/0 ; PWD=/home/username ; USER=root ; COMMAND=/usr/bin/updatedb
但是,logrotate
会定期压缩旧日志,因此您可能需要查看名为 的旧日志auth.log.4.gz
。查看这些日志而不解压它们的简单方法是使用zless
:
zless /var/log/auth.log.4.gz
如果你发现他们以 root 身份打开了 shell,你可以看看root
的历史文件。(root
的主目录通常是/root
)
结论
如果用户没有很好地掩盖自己的踪迹,您也许能够找到想要的东西。但是,不留下任何痕迹并不难,即使用户只是运气好,例如,在没有记录历史记录的 shell 中删除了他们有权访问的其他人的档案。