
CentOS 5.8 サーバーに jailkit をインストールし、見つけたオンライン ガイドに従って設定しました。以下は、root として実行されたコマンドです。
mkdir /var/jail
jk_init -j /var/jail extshellplusnet
jk_init -j /var/jail sftp
adduser testuser; passwd testuser
jk_jailuser -j /var/jail testuser
次に、/var/jail/etc/passwd
ログイン シェルを に変更して、SSH 経由で完全な bash シェルにアクセスできるtestuser
ようにしました。/bin/bash
次に、/var/jail/etc/jailkit/jk_lsh.ini
次のように編集しました(正しいかどうかはわかりません)
[testuser]
paths= /usr/bin, /usr/lib/
executables= /usr/bin/scp, /usr/lib/openssh/sftp-server, /usr/bin/sftp
testuser は SSH 経由で接続でき、chroot jail ディレクトリの表示のみに制限されています。また、SFTP 経由でログインすることもできますが、ファイル システム全体が表示され、移動できます。
SSH出力:
> ssh testuser@server
Password:
Last login: Sat Oct 20 03:26:19 2012 from x.x.x.x
bash-3.2$ pwd
/home/testuser
SFTP出力:
> sftp testuser@server
Password:
Connected to server.
sftp> pwd
Remote working directory: /var/jail/home/testuser
jail への SFTP アクセスをロックダウンするにはどうすればよいでしょうか?
答え1
私は doublesharp の苦しみを確かに理解していますが (私もこの問題に遭遇しました)、ここでの doublesharp の回答は使用すべきではありません (安全ではありません)。ここでの問題は、セキュリティ上の理由から実行する必要がある /usr/sbin/jk_chrootsh が実行される前に、sshd の internal-sftp が実行されていることです。したがって、この問題を修正するために必要なのは、/etc/ssh/sshd_config ファイルに次の行が含まれていることを確認することだけです...
Subsystem sftp /usr/lib/openssh/sftp-server
...そしてこの行ではありません...
Subsystem sftp internal-sftp
また、このファイルでユーザー/グループのマッチングを行っていないことも確認してください。ここでの重要な考え方は、Linux システムでユーザーを隔離するために jailkit を使用する場合、必要に応じて独自の sftp 機能を起動できる /usr/sbin/jk_chrootsh を介してすべてのユーザーを強制する必要があるということです。
/etc/ssh/sshd_config に変更を加えた後は、必ず sshd を再起動してください (方法はシステムによって異なる場合があります)。
答え2
これに問題がある場合は修正していただければ幸いですが、次の構成は機能しているようです。
/etc/passwd
(のユーザーを変更しましたない /var/jail/etc/passwd
) は jailkit によって変更されました:
オリジナルtestuser:503:503::/var/jail/./home/testuser:/usr/sbin/jk_chrootsh
修正済みtestuser:503:503::/home/testuser:/bin/bash
追加された設定/etc/ssh/sshd_config
:
Match Group testuser
ChrootDirectory /var/jail/
またはでログインするとSSH
、SFTP
ユーザーは/var/jail
以下に制限され、デフォルトでホームディレクトリに設定されます。/var/jail/home/testuser