記錄透過 SSH 執行的命令

記錄透過 SSH 執行的命令

我想記錄透過 SSH 執行的所有命令。

說,

ssh [email protected] COMMAND

我想在 server.com 上記錄“COMMAND”

我進行了廣泛的搜索,但找不到任何東西。

還有一個類似的問題,但我認為那裡沒有解決方案。

如何記錄“透過 SSH 遠端執行”

我可以透過以下方式獲得即時視圖

pstree -p | grep ssh

我確實嘗試過 Snoopy、auditd 和 sudosh,但無法透過 SSH 記錄這些命令。

有一個http://freecode.com/projects/shwatchr,但我無法下載腳本進行測試。

有其他方法可以完成此任務嗎?

答案1

我在我的伺服器 suse 實驗室中使用此選項進行了測試,它有效,但也許有更好的方法。

ForceCommand logger -p user.notice "$SSH_ORIGINAL_COMMAND"

答案2

不要專注於 SSH,而是退一步考慮使用auditd。我假設您真正想要的是追蹤用戶,而不是追蹤 SSH 完成的操作(與其他類型的登入不同)。

man auditctl應該會給你一個起點。

答案3

我找到了一種方法來做到這一點。有一個perl腳本由約翰·M·辛普森https://www.jms1.net/)。

您所要做的就是添加

command="#{path to log-session}"

在 ~/.ssh/authorized_keys 中的每個密鑰之前

它僅在您擁有無密碼 ssh 時才有效,但這確實在一定程度上解決了我的目的。

http://www.jms1.net/log-session

答案4

就我而言,我有完全相同的要求。此方法唯一需要注意的是,如果您不使用 ssh 密鑰,我不確定如何使其工作。我製作了一個簡短的 bash 腳本來在執行命令之前記錄該命令:

#!/bin/bash
echo "$(date -Is) ${SSH_ORIGINAL_COMMAND}" >> ~/sshcommands.log
sh "${SSH_ORIGINAL_COMMAND}"

我將此命令儲存到 ~/bin/log-commands 然後使其可執行 ( chmod +x ~/bin/log-commands)。

在authorized_keys檔案中,我將command=參數新增至屬於我想要記錄其日誌的SSH金鑰的行,因此它將被迫執行日誌命令腳本:

指令=“/home/tricky/bin/log-commands”ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ......6J0C1 [電子郵件受保護]

如果有人知道日誌記錄但不希望您看到命令,他們可以簡單地進入互動式會話。正如您所提到的,您已經嘗試過史努比,它會為您做到這一點。我尚未嘗試過的流行替代方案是 rootsh、sudosh 和 log-user-session。

相關內容