web-dev-qa-db-ja.com

SFTPユーザーをロックダウンする方法は?

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

注意すること:

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

sshd_config:

AllowGroups sshusers 

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

I 答えに続いて 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をテストしています。

2
meda

ChrootDirectoryディレクティブは、chrootディレクトリがrootによって所有され、他の誰かによって書き込み可能ではないことを想定しています。したがって、cannotユーザーをディレクトリに投獄し、ユーザーにそのディレクトリへの書き込み許可を与えます。あなたはできる:

ホームに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内のフォルダーの可視性を制限し、書き込み権限を制限します。そこで、/home/jamesの最初のコマンドでchownchmodの再帰オプションを使用し、readパーミッションを削除します。変更されたセットは次のようになります。

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に設定します。最初のオプションで同じ制限を使用します。

3
muru

OpenSSHに組み込まれているsftp chrootメカニズムでは、chrootディレクトリがルートによって所有されている必要があります(ユーザーは書き込みできません)。たとえば、ディレクトリが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 を参照してください。

0
TL-Aiyor