SCP/SFTPユーザーをディレクトリに制限する簡単な方法はありますか?私が遭遇したすべての方法では、バイナリをコピーしてchroot jailをセットアップする必要がありますが、それは必要ではないと思います。
SSHは、SFTPユーザーのネイティブのchrootをサポートします。あなただけを供給する必要があります
ChrootDirectory
Sshd設定ファイルで、sshdを再起動します。
Sftpを実行しているだけの場合は、これ以上何もする必要はありません。残念ながら、これはscpでは機能しません。対話型シェルの場合、バイナリと/ devノードをchrootにコピーする必要があります。
シングルユーザーtestuserの設定例:
Match User testuser
ChrootDirectory /home/testuser
ForceCommand internal-sftp
Sshd_configのmanページにあるいくつかの注意点:
パス名のすべてのコンポーネントは、他のユーザーまたはグループが書き込みできない ルートが所有するディレクトリである必要があります。 chrootの後、sshd(8)は 作業ディレクトリをユーザーのホームディレクトリに変更します。
詳細については、man sshd_configでChrootDirectoryを検索してください。
Chrootはかなりシンプルな方法です。オペレーティングシステムには既にこのセキュリティ機能があるため、デーモンの作成者はそれを再実装しようとはしません。
Rssh には、chroot jailのセットアップに関するガイドが付属しています。これは、ソース配布の CHROOT
ファイルにあります。簡単に言えば、次のものが必要です。
/usr/bin/scp
、/usr/libexec/openssh/sftp-server
、/usr/bin/rssh_chroot_helper
{/usr,}/lib/lib*.so.[0-9]
)、同様にコピー/etc/passwd
(おそらくコピーではなく、マスターから派生)/dev/null
、/dev/tty
、およびロギング用の/dev/log
ソケット(そして、そのソケットをリッスンするようにsyslogデーモンに指示する必要があります)Rsshドキュメントにない追加のヒント:chroot jailでいくつかのファイルにアクセスできるようにする必要がある場合は、 bindfs またはLinuxのmount --bind
を使用して、外部から追加のディレクトリ階層を作成できます。刑務所。 bindfs
を使用すると、再マウントされたディレクトリに、読み取り専用など、より制限された権限を付与できます。 (mount --bind
は、カーネルパッチを適用しない限り適用されません。Debianには、東レニー以降、このパッチが含まれていますが、他のほとんどのディストリビューションには2011年の時点では含まれていません。)