Не удалось su после создания тюрьмы chroot

5219
arepo21

На 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 

Update1

После некоторых изменений мне удалось подключиться к user1, но сессия сразу же закрывается! Я предполагаю, что это проблема PAM, однако не могу найти способ исправить это.

Вот запись в журнале для близких действий от /val/log/secure:

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

Что заставляет сеанс выходить сразу после запуска?

1
Возможно, вам придется скопировать некоторых системных пользователей и групп в тюрьму или изменить некоторые настройки. В моей системе `/ etc / shadow` - это 640 группа` shadow`. Проверьте системные журналы на наличие соответствующих сообщений и разместите их здесь. Также опубликуйте содержимое `/ home / jail / etc / pam.d / su`. Вывод `strace -s9999 su user1` также может помочь. Gilles 13 лет назад 0
`@ Gilles` После некоторых модификаций мне удалось подключиться к user1, но теперь сессия немедленно закрывается. Итак, теперь возникает вопрос: что заставляет сеанс завершаться сразу после запуска (см. ОБНОВЛЕНИЕ 1 вопроса)? Глядя на файл `/ val / log / secure`, я предполагаю, что это какая-то проблема с PAM, однако я не знаю, как ее исправить. Можете ли вы помочь мне в этом? arepo21 13 лет назад 0

2 ответа на вопрос

1
Randy Dey-Toth

Чтобы решить эту 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/*.* $/lib/ # cp /lib/lib64/*.* $/lib/lib64/ 

Изменить на:

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

Просто быстрое дополнение, вышеупомянутое исправило эту проблему с 64-битной SuSE - SLES 11 sp2. Я также переименовал $JAILPATH/libв $JAILPATH/lib64. И для этой ОС мне пришлось добавить пустой файл / etc / profile в тюрьму (вы можете использовать его, чтобы вставить приглашение PS1).

0
arepo21

Я нашел решение.

Прежде всего вы должны забыть о make_chroot_jail.sh и использовать Jailkit .

Я столкнулся с некоторыми проблемами при его использовании, но в итоге все работает.

Вот шаги, как я использовал Jailkit и как я устранял возникающие проблемы:

А. Делай, ./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/passwdизмените оболочку customer01 и установите для нее bash следующим образом:

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

вместо этого:

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

Похожие вопросы