SSH 経由でログインするほとんどの (全員ではない) ユーザーに対して chroot jail を設定したいと考えています。最新バージョンの openssh では可能だと聞いていますが、その方法がわかりません。How To ではすべて、古いバージョンにパッチを適用することについて説明されていますが、パッチはもう入手できません。
私はDebian Etchを実行しています。
答え1
答え2
私は、SSH 経由でログインできるユーザーを 1 人設定し、別のサーバー (外部に直接接続されていないサーバー) への SSH を設定するだけで済みました。 cstamas と ericmayo によるリンクは良いスタートでした。
基本的に、/etc/ssh/sshd_config に以下を追加しました。
一致するユーザー myuser Chrootディレクトリ /chroot/myuser
そこからは、/chroot/myuser の下に chroot 環境を作成するだけで済みました。/bin/bash と /usr/bin/ssh および必要な共有ライブラリをコピーしました (ldd で表示されます)。より大規模な環境では、必要な実行可能ファイルの静的にリンクされたバージョンをコンパイルするのが合理的でしょう。
Bash はすぐに動作しましたが、ssh が動作するためには、.ssh ディレクトリを作成し、/etc/passwd、/etc/nsswitch.conf、および /lib/libnss_* をコピーし、mknod 経由で /dev/null、/dev/tty、および /dev/urandom を作成する必要がありました。
答え3
mkdir /chroot
mkdir -p /chroot/home/<user_name>
mkdir /chroot/home/<user-name>/bin
cp -pr /bin/bash /chroot/home/<user_name>/bin/.
cp -pr /bin/ls /chroot/home/<user_name>/bin/.
cp -pr /lib64 /chroot/home/<user_name>/.
/etc/sshd_configファイルを編集して追加する必要があります
ChrootDirectory /chroot/%h
そして sshd デーモンを再起動します。
結局のところ、私は正直に言って sftp の方が良い選択肢だと思っています。
また、役に立つかどうか、この URL を見つけました。
答え4
私の知る限り、OpenSSH の新しいバージョンでは、SFTP 接続に対してのみ chroot が許可されます。試してみましたが、うまくいきました。ただし、SSH の場合、利用可能な解決策は chrootssh パッチです。SourceForge サイトを参照しましたが、ファイルは見つかりませんでした。廃止されたと思います。
Debian Etch の場合、ここにいくつかのファイルがあります:http://debian.home-dn.net/etch/ssh/
他にも解決策はあります:http://www.debian.org/doc/manuals/securing-debian-howto/ap-chroot-ssh-env.en.htmlchrootssh を含む。