如何记录通过 SSH 会话发生的所有事情?

如何记录通过 SSH 会话发生的所有事情?

问题:在 Linux 或 AIX 机器上,我们如何记录通过 ssh 发生的事情?例如:用户登录,发出一些命令,或者自动化工具通过 ssh 执行某些操作,或者某人只是发出“ssh root@server commandhere”命令?

答案1

sudo命令具有审核然后重播会话的能力。虽然大多数人习惯于sudo执行命令root,但您可以定义一个简单的规则,允许用户只sudo对自己执行命令(例如,没有什么是他们不能做的!)

通过使用sudosh作为用户的登录 shell,您可以强制记录所有内容(stdinstdoutstderr等)。它适用于交互式和非交互式 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”)时,它会启动脚本命令/记录命令。因此,之后“超级管理员”可以检查日志并检查每个命令......以及它们的结果(如果是通过脚本进行的)。

该软件很新,但已经在很大的环境中使用。

相关内容