web-dev-qa-db-ja.com

chrootjailを作成した後に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に接続する方法が問題になるのでしょうか。

P.S.これがいくつかのファイルのパーミッションです。これは解決策を提供するために役立つかもしれません:

-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

UPDATE1

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

ここに/val/log/secureからのクローズアクションのログエントリがあります。

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

起動直後にセッションが終了する理由は何ですか?

1
arepo21

Make_chroot_jail.shを完全に放棄せずに、could not open sessionの問題を修正するには、/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 11sp2でこの問題を修正しました。また、$JAILPATH/libの名前を$JAILPATH/lib64に変更しました。そして、そのOSの場合、jailに空の/ etc/profileファイルを追加する必要がありました(これを使用してPS1プロンプトに入れることができます)。

1
Randy Dey-Toth

私は解決策を見つけました。

まず、make_chroot_jail.shを忘れて、 Jailkit を使用する必要があります。

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

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_initINIPREFIX='/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

そしてさらに試みる。代わりに、ステップCでリストにjk_lshを追加することもできます。

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

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

これの代わりに:

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