如何鎖定SFTP用戶?

如何鎖定SFTP用戶?

我真的需要一些幫助,我一直在嘗試使用ubuntu.

注意事項:

  1. james是使用者
  2. sshusers是團體
  3. /home/james/upload/是我想要鎖定使用者的目錄

sshd_配置:

AllowGroups sshusers 

Match Group sshusers
    ChrootDirectory /home/%u/upload/
    ForceCommand internal-sftp

遵循了一個答案在askubuntu上,這是我的命令

sudo chown root /home/james
sudo chmod go-w /home/james
sudo mkdir /home/james/upload
sudo chown james:sshusers /home/james/upload
sudo chmod ug+rwX /home/james/upload

問題:

我收到這個錯誤

Error:  Network error: Software caused connection abort
Error:  Could not connect to server

我調查了日誌,發現了這一點:

致命:chroot 目錄元件「/home/james/upload/」的所有權或模式錯誤

但是如果我運行以下命令

sudo chown root /home/james/upload
sudo chmod go-w /home/james/upload

它工作完美,用戶可以連接,資料夾已鎖定但無法刪除文件在目錄中

Status: Listing directory /
Status: Directory listing successful
Status: Starting upload of C:\Users\Program\AppData\Local\Temp\fz3temp-1\empty_file_yq744zm
Command:    put "C:\Users\Program\AppData\Local\Temp\fz3temp-1\empty_file_yq744zm" "test"
Error:  /test: open for write: permission denied
Error:  File transfer failed

請建議,我在谷歌上搜索了很多,現在所有連結都是紫色的(訪問過:P

我正在使用 filezilla 客戶端來測試SFTP.

答案1

ChrootDirectory指令期望 chroot 目錄由 擁有root,其他任何人都不可寫入。那麼你不能將使用者監禁到某個目錄並允許該使用者寫入該目錄。你可以:

chroot 到 home,上傳到upload/

您嘗試的第一組命令對此是正確的:

sudo chown root /home/james
sudo chmod go-w /home/james
sudo mkdir /home/james/upload
sudo chown james:sshusers /home/james/upload
sudo chmod ug+rwX /home/james/upload

然而,選項sshd_config是:

Match Group sshusers
    ChrootDirectory %h
    ForceCommand internal-sftp

%h替換為正在驗證的使用者的主目錄,相當於/home/%u大多數情況。)此外,要限制 中資料夾的可見性並限制其中的寫入權限,請在 的第一個命令中/home/james使用 和 的遞歸選項,chown以及刪除權限。修改後的集合如下所示:chmod/home/jamesread

sudo chown root /home/james -R 
sudo chmod go-rwx /home/james -R  # Disallow traversing any directory in home 
sudo chmod go+x /home/james       # Allow traversing this directory
sudo mkdir /home/james/upload
sudo chown james:sshusers /home/james/upload
sudo chmod ug+rwx /home/james/upload

現在用戶應該只能訪問/home/james/upload, 或/upload

chroot上傳,上傳到upload/some_directory

與上面幾乎相同,替換/home/james//home/james/upload和。沒有特別的收穫。/home/james/upload/home/james/upload/some_directory

將主目錄更改james/upload

ChrootDirectory 的常見行為是:“在 chroot 之後,sshd(8) 將工作目錄更改為用戶的主目錄。”所以我們改變james的主目錄:

usermod -d /upload  user

然後將ChrootDirectory設為/home/%u。在第一個選項中使用相同的限制。

答案2

OpenSSH 中內建的 sftp chroot 機制要求 chroot 目錄由 root 擁有(且使用者不可寫入)。例如,如果目錄是 SMB/CIFS 共用,則這可能會很麻煩,您必須在其中進行綁定安裝。

其中一個更靈活的解決方案是使用 MySecureShell (http://mysecureshell.readthedocs.io/en/latest/

apt install mysecureshell

它無需對預設 OpenSSH 設定進行任何修改即可運行。您所需要做的就是讓您的 SFTP 使用者登入 shell 到 mysecureshell,它將為您處理 ACL/虛擬 chroot。詳細資訊請參閱文檔,

例如,一旦安裝了 MySecureShell,您就可以新增 SFTP 使用者(僅限於其主目錄),如下所示:

sudo useradd -m -d /home/sftpuser01 --shell /usr/bin/mysecureshell sftpuser01

從上面可以看出,使用者「sftpuser01」將在 SFTP 會話中虛擬 chroot 到「/home/sftpuser01」。

它還提供了許多靈活的選項來透過配置“/etc/ssh/sftp-config”來控制 ACL、群組等。請參閱http://mysecureshell.readthedocs.io/en/latest/configuration.html了解詳情。

相關內容