Linux

如何記錄 ssh 客戶端連接/命令?

  • June 22, 2017

我想知道如何記錄使用者在伺服器上使用的 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

我想將伺服器上使用的 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

我不在乎他在 ssh 會話期間做了什麼,我只想知道他在何時何地連接到另一台伺服器。

使用者沒有使用 bash,我想避免操作 .bash_history ,因為使用者可以修改它。

對此有任何線索嗎?

謝謝 :)

編輯:更具體地說:

使用者連接到伺服器 A,然後從伺服器 A 連接到伺服器 B。我想跟踪他通過伺服器 A 的 ssh 連接到哪個伺服器。

如我所見,您可以通過三種不同的方式來做到這一點 - 很可能還有許多其他方式來做到這一點!最好的方法是將審計工具附加到核心 sysexec 呼叫中,這樣使用者等就無法追踪它。另外兩種方法只是修改 shell 環境以記錄它。

而不是我(從Google獲取程式碼/答案)向您展示如何做到這一點。我會給你連結到已經詳細解釋過的網站。我希望這正是你所需要的。

順便說一句,到目前為止,最簡單的方法就是在你的主 bashrc/profile 中包含一些東西來影響所有使用者。

無論如何,這裡是 bashrc 解決方案的連結。

  1. Bashrc 解決方案:如何記錄Linux中所有使用者執行的命令?
  2. Bashrc/trap 解決方案:Bash: History to Syslog

另一種方式(核心級別)是查看工具審計或賬戶。有許多網站告訴您如何通過核心 sysexec 呼叫設置命令日誌記錄。

引用自:https://serverfault.com/questions/631154