OpenSSH 類似「internal-sftp」但用於 SCP 的東西嗎?

OpenSSH 類似「internal-sftp」但用於 SCP 的東西嗎?

我正在運行 Debian stable,並且希望為“sftponly”群組中的使用者建立以下環境:

  • 入獄
  • 可以透過SFTP傳輸
  • 可以透過SCP傳輸
  • 無法使用 SSH 互動登入

根據我的實驗和研究,sshd_config 中的以下節似乎讓我達到了 90%:

Match group sftponly
ChrootDirectory /sftp/%u
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp

這給了我被監禁的 SFTP 而沒有 SSH,這很好。但它也會停用SCP,這不太理想,因為相當多的客戶端是使用SCP 而不是SFTP 的遺留腳本化進程(我們要替換的伺服器支援這兩種協定),並且因為這些客戶端不受我們的控制並且很容易修改後,完全停用 SCP 可能不切實際。

此配置將停用 SCP 是有道理的,因為傳入的 SCP 連線會導致 sshd 透過使用者的登入 shell 產生一個「scp」進程(作為該使用者)。如果沒有特殊的「internal-sftp」處理程序,SFTP 似乎也是如此。

所以,我想我的問題是:有沒有一種方法可以達到與「internal-sftp」相同的效果,但對於 SCP,而不需要使用 scponly 和 rssh 等第三方工具? 「internal-sftp」真正好的一點是,它不需要使用支援文件來設定監獄,也不需要處理可能被利用的第三方 setuid 二進位(特別是 rssh,有被利用的歷史)。

答案1

看一眼RSSH這是另一種 shell,允許對系統進行有限的存取。

rssh 是一種受限 shell,用於透過 ssh(1) 提供對主機的有限訪問,允許 shell 配置為 rssh 的使用者使用一個或多個命令 scp(1)、sftp(1) cvs(1 )、rdist (1) 和rsync(1),並且僅限於這些命令。

您可以使用以下命令配置可以在每個使用者或系統範圍內使用哪些命令rssh.conf文件

或者你可以使用史波利做你想做的事。它充當 ssh 套件的包裝器,允許檔案傳輸,但不允許 shell 存取。

答案2

您需要透過 ssh 執行此操作嗎?

如果你可以嘗試將他們的 shell 設定為:

/usr/libexec/openssh/sftp-server

並確保將以上內容新增至 /etc/shells 中

如果您想與使用內建帳戶分離,您可以設定 proftpd

我使用 proftpd 設定了安全的 SFTP。像這樣編譯proftpd:

./configure --prefix=/usr --sysconfdir=/etc --with-modules=mod_sftp

可以使用下面的這篇文章,以及谷歌上更多關於如何設定它的文章:

http://tutorialgenius.blogspot.com/2012/02/linux-installing-and-configuring.html

答案3

恐怕 OpenSSH 沒有任何類似的簡單或可靠的功能,因為正如您所觀察到的,有一個內建的 SFTP 伺服器,但沒有內建的 SCP 伺服器。

警告:中的建議文斯·伯克的回答由於多種原因,情況很糟糕:

  1. shell 關於啟動檔案的行為可能會受到環境變數的影響,SSH 可以根據伺服器設定遠端設定這些變數。

  2. 使用者只需運行ssh /bin/bash並獲取 shell。它沒有tty,所以使用起來會很不方便,但那又怎樣……。更不用說他可以運行的所有其他程序,而您可能不希望他運行。

  3. .bash_profile如果使用者只能這樣做,那麼更改 的權限就沒有什麼好處ssh host rm -f .bash_profile。沒有提及主目錄權限。

… 等等。這種方法太脆弱了。

答案4

這是一個第三方工具,不在問題的範圍內,但我認為無論如何它都值得一提。

監獄套件:https://olivier.sessink.nl/jailkit/

它有一系列工具可以輕鬆設定使用者監獄 - 將二進位檔案和庫複製到監獄,並設定從監獄內部到作業系統的日誌記錄。我用它建構了 sftp/scp/rsync-only chroots。

它還附帶jk_lsh(jailkit 有限 shell),可以在監獄外使用它來限制使用者可以運行的命令,例如,如果您只想在沒有 chroot 的情況下允許 scp/sftp/rsync。

相關內容