
我正在嘗試創建一個假用戶(可以從 SSH 登入但係統上不存在的用戶),該用戶有一些限制(例如,他們只能使用一個命令,當他們這樣做時,另一個命令也會被執行) 。有辦法實現這一點嗎?我找不到在 openssh-server 上建立假用戶的方法,更不用說限制部分了。
答案1
Linux 中的 SSH 伺服器通常會與系統集成,而不會引入另一層使用者。它與 Samba 或 FTP 不同,存在 Samba 特定或 FTP 特定使用者層。我想sshd
從 OpenSSH 定義一組獨立的使用者是一項不簡單的任務(但也許另一個答案會讓我感到驚訝)。
也許您想要創建一個假用戶的意圖源於您不是 SSH 伺服器上的 root 用戶並且無法在那裡創建真實用戶的事實。如果是這樣,您無論如何都可以這樣做1:
看看man 5 authorized_keys
它描述格式的地方。在我的 Debian 中,手冊指出[強調我的]:
AuthorizedKeysFile
指定包含用於公鑰認證的公鑰的檔案;如果未指定此選項,則預設為~/.ssh/authorized_keys
和~/.ssh/authorized_keys2
。文件的每一行都包含一個鍵(空行和以“#”開頭的行將被忽略作為註解)。公鑰由以下空格分隔的欄位組成:選項、金鑰類型、base64 編碼金鑰、註解。選項字段是可選的。 […]選項(如果存在)由逗號分隔的選項規格組成。不允許有空格,雙引號內除外。支援以下選項規範(請注意,選項關鍵字不區分大小寫):
[…]
command="command"
指定每當使用此金鑰進行身份驗證時都執行該命令。用戶提供的命令(如果有)將被忽略。如果客戶端請求 pty,則該命令在 pty 上運行;否則它會在沒有 tty 的情況下運行。如果需要 8 位元乾淨通道,則不得請求 pty 或應指定no-pty
.透過用反斜線引用指令,可以將引號包含在指令中。此選項可能有助於限制某些公鑰僅執行特定操作。一個範例可能是允許遠端備份但僅允許其他任何內容的金鑰。請注意,客戶端可以指定 TCP 和/或 X11 轉發,除非明確禁止它們,例如使用
restrict
key 選項。[…]
這樣,作為普通用戶,您可以允許其他人(從現在開始:訪客)登錄作為你並運行一個特定命令作為你自動地。只需~/.ssh/authorized_keys
使用該選項在伺服器上註冊他們的公鑰即可command="command"
。
該命令可以是自訂程式或腳本,允許訪客從清單中選擇任務,或鍵入關鍵字來選擇任務;或鍵入將被驗證並允許或禁止的“內部”命令;然後程式將執行相應的操作。命令/程序/腳本是什麼取決於您。
從 SSH 伺服器及其管理員的角度注意訪客是你。運行命令的是您的帳戶,如果您的自訂程式或腳本允許來賓以某種方式運行任意命令(例如,透過首先以某種方式生成 shell),那麼就好像你運行命令。
請同時記住,該命令是在非互動式 shell 中運行的。它將是您的 shell(您選擇的 shell chsh
)以及您的配置。 shell 可能會取得一些檔案(請參閱Bash 的行為方式),因此請確保在訪客連接時可以安全地獲取它們。
手冊指出「使用者提供的命令(如果有)將被忽略」。然而,在我的測試中,強制可執行檔可以從其環境中獲取它,該變數名為SSH_ORIGINAL_COMMAND
.這表示您可以允許來賓在呼叫時直接傳遞一些訊息(例如選項)ssh
;在伺服器端,您的程式將從變數中檢索它。在 shell 程式碼中不要eval
變數和不要使用$SSH_ORIGINAL_COMMAND
不含引號的,除非您先驗證其安全性或對其進行消毒。
~/.ssh/authorized_keys
允許特定金鑰的擁有者查看輸出的範例df -h
行如下所示:
command="df -h",no-pty ssh-rsa AAA…(public key here)…
no-pty
(有關的說明,請man 5 authorized_keys
參閱 。您可能會發現其他有用的選項。)現在,無論誰使用此特定密鑰連接到伺服器(使用您的登入名稱),都將看到 的輸出,df -h
並將斷開連接。
1可能。 SSH 伺服器可以設定為拒絕各種事物。
答案2
您可能要考慮部署 SSH 蜜罐。基本上是一個虛擬伺服器,看起來很脆弱,但無法真正存取任何內容。一切都會被記錄下來,您可以限制對命令的存取。
設定並不困難,網路上有很多資源可提供如何部署的說明。不過這裡的答案可能有點長!
編輯 :超級用戶並不是真正提供推薦的地方,但這似乎是我們經常使用的地方,有很多線上教學:https://github.com/cowrie/cowrie 來自自述文件:
選擇作為模擬 shell 運行(預設):
- 具有新增/刪除檔案能力的假檔案系統。包含一個類似 Debian 5.0 安裝的完整假檔案系統
- 可以添加虛假文件內容,以便攻擊者可以捕獲 /etc/passwd 等文件。僅包含最少的文件內容
- Cowrie 會儲存使用 wget/curl 下載的檔案或使用 SFTP 和 scp 上傳的檔案以供日後檢查