我们有两个用户访问同一个 linux ec2 实例。我们如何查看带有时间戳的完整登录历史记录?如果可能的话,包括每个用户执行的命令
我们都从不同的IP远程访问它
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)
| 归档时间: |
|
| 查看次数: |
15188 次 |
| 最近记录: |