SFTP ユーザーをロックダウンするにはどうすればいいですか?

SFTP ユーザーをロックダウンするにはどうすればいいですか?

本当に助けが必要です。 を使用しているユーザーを監禁しようとしていますubuntu

注意事項:

  1. jamesユーザーです
  2. sshusersグループは
  3. /home/james/upload/ユーザーをロックしたいディレクトリです

sshd_config:

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

アドバイスをお願いします。Google で検索しすぎて、リンクがすべて紫色になっています (訪問済み:P)

私はテストにFileZillaクライアントを使用していますSFTP

答え1

このChrootDirectoryディレクティブは、chrootディレクトリが によって所有されroot、他のユーザーが書き込みできないことを想定しています。できないユーザーをディレクトリに監禁し、そのディレクトリへの書き込み権限をユーザーに付与します。次の操作を実行できます。

ホームにchrootし、アップロードする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の再帰オプションを使用し、権限を削除します。変更されたセットは次のようになります。chownchmod/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 共有である場合、バインド マウントを実行する必要があるため、これは面倒な作業になる可能性があります。

より柔軟な解決策の1つは、MySecureShell (http://mysecureshell.readthedocs.io/en/latest/

apt install mysecureshell

デフォルトの OpenSSH 設定を変更しなくても動作します。SFTP ユーザーのログイン シェルを mysecureshell に設定するだけで、ACL/仮想 chroot が自動的に処理されます。詳細についてはドキュメントを参照してください。

たとえば、MySecureShell をインストールしたら、以下のように SFTP ユーザー (ホーム ディレクトリに制限) を追加できます。

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

上記により、ユーザー「sftpuser01」は SFTP セッションで「/home/sftpuser01」に仮想 chroot されます。

また、'/etc/ssh/sftp-config'を設定することで、ACLやグループなどを制御するための柔軟なオプションも多数用意されています。http://mysecureshell.readthedocs.io/en/latest/configuration.html詳細については。

関連情報