Linux
如何記錄 ssh 客戶端連接/命令?
我想知道如何記錄使用者在伺服器上使用的 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 解決方案的連結。
- Bashrc 解決方案:如何記錄Linux中所有使用者執行的命令?
- Bashrc/trap 解決方案:Bash: History to Syslog
另一種方式(核心級別)是查看工具審計或賬戶。有許多網站告訴您如何通過核心 sysexec 呼叫設置命令日誌記錄。