chroot jail を作成した後、su に失敗しました

chroot jail を作成した後、su に失敗しました

64ビットCentOSホストではスクリプトを使用していますmake_chroot_jail.shユーザーを監獄に閉じ込め、自宅以外の場所を見ることを許可しないようにします/home/jail/home/user1

私は次のように入力しました:

sudo ./make_chroot_jail.sh user1

その後、最初に user1 に接続しようとすると、次のようなエラーが発生しました:

/bin/su: user guest does not exist

不足しているライブラリをいくつかコピーすることでこれを修正しました:

sudo cp /lib64/libnss_compat.so.2 /lib64/libnss_files.so.2 /lib64/libnss_dns.so.2 /lib64/libxcrypt.so.2 /home/jail/lib64/
sudo cp -r /lib64/security/ /home/jail/lib64/

しかし、今、user1 に接続しようとしてsu user1、パスワードを入力すると、次のエラーが発生します。

could not open session

問題は、この状況で user1 に接続するにはどうすればよいかということです。

PS: いくつかのファイルの権限は次のとおりです。これは解決策を提供するのに役立つかもしれません:

-rwsr-xr-x 1 root root /home/jail/bin/su
drwxr-xr-x 4 root root /home/jail/etc
-rw-r--r-- 1 root root /home/jail/etc/pam.d/su
-rw-r--r-- 1 root root /home/jail/etc/passwd
-rw------- 1 root root /home/jail/etc/shadow

更新1

いくつかの変更を行った後、user1 に接続できましたが、セッションはすぐに閉じられます。これは PAM の問題だと思いますが、修正方法が見つかりません。

以下は、クローズアクションのログエントリです/val/log/secure:

Oct  6 15:19:42 localhost su: pam_unix(su:session): session closed for user user1

起動後すぐにセッションが終了するのはなぜですか?

答え1

このcould not open session問題を解決するには、make_chroot_jail.sh を完全に放棄せずに、/usr/lib/libcrack*ライブラリもコピーする必要があります。次のスクリプトを編集します。

# If you are using a 64 bit system and have strange problems with login comment
# the following lines in, perhaps it will work (motto: if you can't find the
# needed library just copy all of them)
#
# cp /lib/*.* ${JAILPATH}/lib/
# cp /lib/lib64/*.* ${JAILPATH}/lib/lib64/

への変更:

cp /lib/*.* ${JAILPATH}/lib/
cp /lib64/*.* ${JAILPATH}/lib64/
cp -rp /lib64/security ${JAILPATH}/lib64/
cp /usr/lib64/libcrack* ${JAILPATH}/usr/lib64/

簡単に補足すると、上記により、64 ビット SuSE - SLES 11 sp2 でこの問題が修正されました。 の名前も に変更しました$JAILPATH/lib$JAILPATH/lib64また、その OS では、jail に空の /etc/profile ファイルを追加する必要がありました (これを使用して PS1 プロンプトを表示できます)。

答え2

解決策を見つけました。

まず、make_chroot_jail.shを忘れて、ジェイルキット

使用中にいくつか問題が発生しましたが、最終的にはすべて機能しました。

Jailkit を使用した手順と、発生していた問題の解決方法は次のとおりです。

A../configure; make; make installで説明されているとおりに実行してくださいINSTALL.txt

B.まだ存在しない場合は/usr/sbin追加します。$PATH

C. 次の操作を実行します。

jk_init -v -j /home/jail basicshell editors extendedshell netutils ssh sftp scp

次のようなエラー メッセージが表示されて失敗する場合があります。

`ERROR: configfile /usr/jk_init.ini does not exist`

これを修正するには、を に/usr/sbin/jk_init変更し てもう一度試してください。INIPREFIX='/usr'INIPREFIX='/etc/jailkit'

D. 次の操作を実行します。

jk_jailuser -v -m -j /home/jail customer01

次のようなエラー メッセージが表示されて失敗する場合があります。

invalid shell, /home/jail/usr/sbin/jk_lsh does not exist

修正するには、次のようにします。

jk_init -v -j /home/jail jk_lsh

もう一度試してください。代わりに、jk_lsh手順 C でリストに追加することもできます。

E. customer01 に接続しようとすると、起動直後に接続が終了する場合があります。この問題を解決するには、/home/jail/etc/passwdcustomer01 のシェルを変更し、次のように bash に設定します。

customer01:x:518:601::/home/customer01:/bin/bash

これの代わりに:

customer01:x:518:601::/home/customer01:/usr/sbin/jk_lsh

関連情報