Kev*_*got 5 linux ssh logging netbsd
我想知道如何记录用户在服务器上使用的 SSH 命令行。例如,如果我服务器上的用户 Alex 正在执行以下命令集:
$ cd /tmp
$ touch myfile
$ ssh staff@10.0.0.1
$ ssh staff@10.0.0.2
$ vim anotherfile
$ ssh alex@192.168.0.12
Run Code Online (Sandbox Code Playgroud)
我想将服务器上使用的 ssh 命令记录在一个如下所示的文件中:
[2014-07-25 10:10:10] Alex : ssh staff@10.0.0.1
[2014-07-25 10:18:20] Alex : ssh staff@10.0.0.2
[2014-07-25 11:15:10] Alex : ssh alex@192.168.0.12
Run Code Online (Sandbox Code Playgroud)
我不在乎他在 ssh 会话期间做了什么,我只想知道他何时何地与另一台服务器建立了连接。
用户没有使用 bash,我想避免操作 .bash_history 反正用户可以修改它。
关于这个的任何线索?
谢谢 :)
编辑:更具体:
用户连接到服务器 A,然后从服务器 A 连接到服务器 B。我想追踪他通过 ssh 从服务器 A 连接到的服务器。
小智 3
在我看来,你可以用三种不同的方式来做到这一点 - 很可能还有很多其他方法可以做到这一点!最好的方法是将审计工具附加到内核 sysexec 调用,这样用户就无法追踪它等。另外两种方法就是修改 shell 环境来记录它。
而不是我(从谷歌获取代码/答案)向您展示如何做到这一点。我将为您提供已经对此进行了详细解释的网站的链接。我希望这正是您所需要的。
顺便说一句,到目前为止,最简单的方法是在主 bashrc/配置文件中包含一些内容来影响所有用户。
无论如何,这里是 bashrc 解决方案的链接。
1)Bashrc解决方案:如何记录Linux中所有用户执行的命令? 2)Bashrc/trap解决方案:Bash: History to Syslog
另一种方法(内核级别)是研究工具审计或帐户。有许多站点告诉您如何通过内核 sysexec 调用设置命令日志记录。