SSH/SCP/SFTPユーザーを特定のディレクトリに制限する

SSH/SCP/SFTPユーザーを特定のディレクトリに制限する

SCP / SFTPユーザーを特定のディレクトリに限定する簡単な方法はありますか?私が遭遇したすべての方法では、バイナリをコピーしてchroot刑務所を設定する必要がありますが、これが必要だとは思いません。

答え1

SSH はデフォルトで SFTP ユーザーのルート指定をサポートします。あなたが提供する必要があるすべて

Chroot ディレクトリ

sshd 構成ファイルから sshd を再始動します。

SFTPのみを実行している場合は、他の操作を実行する必要はありません。残念ながら、これはscpでは機能しません。対話型シェルの場合は、バイナリノードと/ devノードをchrootにコピーする必要があります。

シングルユーザー testuser の構成例:

Match User testuser
    ChrootDirectory /home/testuser
    ForceCommand internal-sftp

sshd_configのマニュアルページで注意してください:

    パス名のすべてのコンポーネントは、ルートが所有するディレクトリではなく、ルートが所有するディレクトリである必要があります。
    他のユーザーまたはグループが作成できます。 chroot の後、sshd(8) が変更されます。
    作業ディレクトリをユーザーのホームディレクトリにコピーします。

詳細については、man sshd_configでChrootDirectoryを検索してください。

答え2

chrootは非常に簡単な方法です。オペレーティングシステムにはすでにこのセキュリティ機能があるため、デーモンの作成者はそれを再実装しようとしない傾向があります。

リモート接続chroot刑務所の設定に関するガイドが付属しています。位置していますCHROOTソースディストリビューションのファイル。つまり、次のものが必要です。

  • ルートからコピーされたいくつかのバイナリ:/usr/bin/scp、、、/usr/libexec/openssh/sftp-server/usr/bin/rssh_chroot_helper
  • {/usr,}/lib/lib*.so.[0-9]それらが使用するライブラリ()もコピーされます。
  • A /etc/passwd(コピーではない可能性が高いがマスターから派生)
  • 一部のデバイス:/dev/null/dev/ttyおよび/dev/logロギング用のソケット(syslogデーモンにこのソケットを受け取るように指示する必要があります)

rssh ドキュメントにない追加のヒント: chroot 刑務所にある特定のファイルにアクセスする必要がある場合は、次のものを使用できます。ファイルシステムバインディングあるいは、Linuxはmount --bind刑務所の外に追加のディレクトリ階層を作成します。bindfs再マウントが許可されるディレクトリには、読み取り専用など、より制限的な権限があります。 (mount --bindカーネルパッチを適用しない限り; Debianにはeast lennyからこれが含まれていましたが、2011年現在、他のほとんどのディストリビューションには含まれていません。)

答え3

一度見てみたいかもしれませんスポリ(または最近RSSH)これは本質的に次のことができるログインシェルです。ただscp または sftpd サブシステムの起動に使用されます。scponlycバリアントでは、関連サブシステムをアクティブにする前にchrootを実行します。

関連情報