.bash_history(或其他 shell 的历史记录)

.bash_history(或其他 shell 的历史记录)

我想审计大约一年前在我的 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 中删除了他们有权访问的其他人的档案。

相关内容