如何检查ec2 linux实例登录历史记录或时间戳

use*_*623 2 linux amazon-ec2

我们有两个用户访问同一个 linux ec2 实例。我们如何查看带有时间戳的完整登录历史记录?如果可能的话,包括每个用户执行的命令

我们都从不同的IP远程访问它

dsm*_*k80 6

  • 带有时间戳的完整登录历史记录

1)使用last命令,默认搜索/var/log/wtmp文件并显示最后登录用户的列表。该文件记录了所有的登录和注销。

last
last -f /var/log/other_wtmp_file
Run Code Online (Sandbox Code Playgroud)

输出示例:

ec2-user pts/0        212.141.41.42    Mon Sep 23 09:21   still logged in
ec2-user pts/1        212.141.41.42    Mon Sep 23 08:33 - 01:46  (17:12)
Run Code Online (Sandbox Code Playgroud)
  • 包括每个用户执行的命令

1)默认情况下通常不启用此功能。您可以依赖标准的 shell 历史记录功能,该功能虽然不是万无一失,但可能已经足够了。在 shell 中使用history命令和变量来打印每个历史条目的时间戳。您可以尝试将这一行放入系统 bash 配置文件中(例如,在 RHEL 系统上的目录中创建一个文件或创建一个新配置文件):HISTTIMEFORMATbash/etc/profile/etc/profile.d

HISTTIMEFORMAT="%d.%m.%y %T"
export HISTTIMEFORMAT
Run Code Online (Sandbox Code Playgroud)

2)或者您可以利用 Linux 审核系统和 PAM 模块pam_tty_audit来审核用户。只需将此行放在/etc/pam.d/system-authRHEL 系统上(或其他发行版上的类似配置文件):

session   required pam_tty_audit.so disable=* enable=root
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用ausearch工具查询 tty 事件的审计守护进程日志:

ausearch -ts today -m tty -i
ausearch -ts yesterday -m tty -i
ausearch -ts recent -m tty -i
Run Code Online (Sandbox Code Playgroud)

输出(会话注销后):

type=TTY msg=audit(09/24/2013 02:29:56.394:31312) : tty pid=7032 uid=ec2-user 
auid=ec2-user ses=1239 major=136 minor=0 comm=bash data="ls",<ret>,"last",<ret>,<^D>
Run Code Online (Sandbox Code Playgroud)

3)最后,还有一个启用进程记帐的选项。psacct在 RHEL 系统上安装软件包,启用该服务psacct并使用lastcomm工具打印出有关先前执行的命令的信息。

lastcomm

输出:

man                     root     pts/1      0.00 secs Tue Sep 24 02:19
sh                      root     pts/1      0.00 secs Tue Sep 24 02:19
sh                 F    root     pts/1      0.00 secs Tue Sep 24 02:19
less                    root     pts/1      0.00 secs Tue Sep 24 02:19
Run Code Online (Sandbox Code Playgroud)