祝你有个愉快的一天。
我知道我的问题在这里有一些变化,但我向你保证它们有点不同。
我们使用管理员连接到的终端服务器,然后与其他服务器建立 ssh 连接。我们需要审核他们的操作,这就是为什么我使用经过修改的 ssh 守护程序将会话记录到脚本格式的文件中。我一直在使用那个补丁http://www.kdvelectronics.eu/ssh-logging/ssh-logging.html。但它也有一些缺点。首先,该补丁已经有一段时间没有更新了,我设法修改它以适用于 ssh-4.7,但 openssh 在第 5 版中发生了严重变化。其次,几乎每个人都使用 GNU Screen,它的控制字符使会话日志有点难以理解。
然后我尝试了 ttyrpld,但是它需要内核模块,而且过了一段时间后它就停止记录了。
之后是pam_tty_audit,虽然安装和使用都很方便,但是该项目并没有真正解决我的问题。
我真正需要的是只记录用户输入的东西,不能被覆盖,而且不需要火箭科学知识来安装和支持。
答案1
答案2
查看 SSHLoghttps://github.com/sshlog/agent/
我是该开源项目的贡献者。
在这种情况下,您需要将其配置为记录每个用户的终端会话。例如:
events:
- event: stream_terminal
triggers: ['connection_established', 'connection_close', 'terminal_update']
filters:
ignore_existing_logins: True
actions:
- action: log_all_sessions
plugin: sessionlog_action
log_directory: '/var/log/sshlog/sessions/'
timestamp_frequency_seconds: 6
这会为你提供每个 SSH 会话的日志文件。它看起来类似这样:
[[ sshlog connection_established user: jdoe at 2023-04-11T21:07:58.986000Z ]]
[[ sshlog time: 2023-04-11T21:07:59.394366Z ]]
jdoe@serverb: ~jdoe@serverb:~$
[[ sshlog time: 2023-04-11T21:09:26.189697Z ]]
jdoe@serverb: ~jdoe@serverb:~$
jdoe@serverb: ~jdoe@serverb:~$
jdoe@serverb: ~jdoe@serverb:~$ ls
Desktop Downloads Documents
jdoe@serverb: ~jdoe@serverb:~$
[[ sshlog connection_close user: jdoe at 2023-04-11T21:09:49.219000Z ]]