问题:在 Linux 或 AIX 机器上,我们如何记录通过 ssh 发生的事情?例如:用户登录,发出一些命令,或者自动化工具通过 ssh 执行某些操作,或者某人只是发出“ssh root@server commandhere”命令?
答案1
该sudo
命令具有审核然后重播会话的能力。虽然大多数人习惯于sudo
执行命令root
,但您可以定义一个简单的规则,允许用户只sudo
对自己执行命令(例如,没有什么是他们不能做的!)
通过使用sudosh
作为用户的登录 shell,您可以强制记录所有内容(stdin
、stdout
、stderr
等)。它适用于交互式和非交互式 shell,并且绝对记录所有内容 - 甚至是像vim
.
sudoreplay
然后,您可以使用该命令查看会话记录。它甚至会重播用户输入交互式程序(例如vim
.
启用会话审核日志sudo
很容易。
将其添加到/etc/sudoers.d/sudosh
Defaults log_output
Defaults!/usr/bin/sudoreplay !log_output
Defaults!/sbin/reboot !log_output
要允许用户sudo
自己操作,请将这样的行添加到文件中,例如/etc/sudoers.d/sudosh.osterman
:
osterman ALL=(osterman) ALL
osterman
然后要强制记录用户的会话(例如),请运行:
chsh -s /usr/bin/sudosh osterman
下载sudosh
这里。它假设您已经安装了sudo
.
答案2
AIX 为默认 shell 提供了此功能ksh
,在每个用户的 homedir 中创建名为.sh_history
我一直喜欢添加shell 变量(例如EXTENDED_HISTORY=ON
将其导出)/etc/profile
history -t
现在您可以使用或查看历史记录fc -t
。
请注意,只有启动交互式 shell 时才会创建历史文件,因此我不完全确定脚本中的命令是否已记录在此处。
如果您确实需要此日志记录,我建议您查看更多内容IBM 审计和会计红皮书或者使用类似的工具绊线。
答案3
PaSSHport 回答了这个问题。它是开源的,并通过 OpenSSH 来管理 ssh 访问。
当用户连接(或直接启动命令,如“ssh root@server commandhere”)时,它会启动脚本命令/记录命令。因此,之后“超级管理员”可以检查日志并检查每个命令......以及它们的结果(如果是通过脚本进行的)。
该软件很新,但已经在很大的环境中使用。