Falha ao su depois de fazer uma prisão chroot

1

Em um host CentOS de 64 bits, estou usando o script make_chroot_jail.sh para colocar um usuário em uma prisão, não permitindo que ele veja algo que espere que esteja em casa em /home/jail/home/user1 .

Eu fiz isso digitando isto:

sudo ./make_chroot_jail.sh user1

depois, ao tentar se conectar ao user1 primeiro, eu estava recebendo um erro como:

/bin/su: user guest does not exist

Eu consertei isso copiando algumas bibliotecas perdidas:

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/

Mas agora, ao tentar se conectar ao usuário1 digitando su user1 e digitando sua senha, estou recebendo este erro:

could not open session

Então a questão é como se conectar ao usuário1 nessa situação?

P.S. Aqui estão as permissões de alguns arquivos, isso pode ser útil para fornecer uma solução:

-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

Após algumas modificações consegui me conectar ao user1, mas a sessão fecha imediatamente! Acho que isso é um problema do PAM, mas não consigo encontrar uma maneira de corrigi-lo.

Aqui, a entrada de registro para ação aproximada de /val/log/secure :

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

O que faz a sessão sair imediatamente após o lançamento?

    
por arepo21 06.10.2010 / 16:56

2 respostas

1

Para corrigir o problema could not open session , sem abandonar inteiramente o make_chroot_jail.sh, também é necessário copiar as bibliotecas /usr/lib/libcrack* . Edite o script, onde ele tem:

# 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/

Mude para:

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

Apenas um adendo rápido, o problema acima corrigiu esse problema com o SuSE - SLES 11 sp2 de 64 bits. Também renomei o $JAILPATH/lib para $JAILPATH/lib64 . E para esse sistema operacional, eu tive que adicionar um arquivo / etc / profile vazio na cadeia (você pode usá-lo para colocar em um prompt do PS1).

    
por 11.11.2011 / 20:37
0

Eu encontrei uma solução.

Antes de mais nada, você deve esquecer o make_chroot_jail.sh e usar o Jailkit .

Eu enfrentei alguns problemas ao usá-lo, mas eventualmente tudo funciona.

Aqui estão os passos de como usei o Jailkit e como corrigi os problemas que estavam ocorrendo:

Do ./configure; make; make install como está descrito em INSTALL.txt .

Adicione /usr/sbin ao $PATH , se ainda não estiver lá.

C. Faça isso:

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

Isso pode falhar com uma mensagem de erro como esta:

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

Para corrigir isso, use /usr/sbin/jk_init change INIPREFIX='/usr' to INIPREFIX='/etc/jailkit' e tente novamente.

D. Faça isso:

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

Isso pode falhar com uma mensagem de erro como esta:

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

Para corrigir isso:

jk_init -v -j /home/jail jk_lsh

e tente novamente. Você pode adicionar jk_lsh à lista na etapa C.

Agora, ao tentar se conectar ao customer01, a conexão pode sair imediatamente após o lançamento. Para corrigir este problema em /home/jail/etc/passwd altere o shell de customer01 e configure-o para bash assim:

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

em vez disso:

customer01:x:518:601::/home/customer01:/usr/sbin/jk_lsh
    
por 07.10.2010 / 16:53