Jailkit は SFTP をロックダウンせず、SSH では動作します

Jailkit は SFTP をロックダウンせず、SSH では動作します

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/

またはでログインするとSSHSFTPユーザーは/var/jail以下に制限され、デフォルトでホームディレクトリに設定されます。/var/jail/home/testuser

関連情報