Jun 22

Chrooted Shell com RSSH (Jail)

Category: Debian

Primeiro vamos instalar o pacote do rssh.

# apt-get install rssh

Depois criamos a seguinte configuração no arquivo /etc/rssh.conf:

logfacility = LOG_USER
allowscp
allowsftp
umask = 022
user=admin:011:00011:”/home/chroot”

Onde os paramêtros são:

user=<login>:<umask>:<service>:”<chroot directory>”

Verifique se no arquivo /etc/shells existe a entrada “/usr/bin/rssh”.

Agora montamos o ambiente do usuário em chroot (Jail)

# mkdir /home/chroot
# cd /home/chroot
# mkdir bin/
# mkdir dev/
# mkdir -p etc/pam.d
# mkdir -p home/admin
# mkdir -p usr/bin
# mkdir -p lib/tls/i686/cmov
# mkdir -p usr/lib/rsh
# mkdir -p usr/lib/openssh
# mkdir -p usr/lib/i686/cmov

Depois é necessário copiar os programas e as bibliotecas correspondentes de cada um.

# cp /etc/passwd etc/
# cp -r /etc/pam.d/* etc/pam.d/
# cp /usr/bin/scp usr/bin/
# cp /usr/bin/sftp usr/bin/
# cp /usr/bin/rssh usr/bin/
# cp /usr/lib/rssh_chroot_helper usr/lib/
# cp /usr/lib/rssh/rssh_chroot_helper usr/lib/
# cp /usr/lib/sftp-server usr/lib/
# cp /usr/lib/openssh/sftp-server usr/lib/openssh/

Agora basta copiar as bibliotecas referente a cada programa, para isto use o comando “ldd”. De acordo com o exemplo abaixo

# ldd /usr/bin/scp
linux-gate.so.1 =>  (0xffffe000)
libresolv.so.2 => /lib/tls/i686/cmov/libresolv.so.2 (0xb7f75000)
libcrypto.so.0.9.8 => /usr/lib/i686/cmov/libcrypto.so.0.9.8 (0xb7e3b000)
libutil.so.1 => /lib/tls/i686/cmov/libutil.so.1 (0xb7e36000)
libz.so.1 => /usr/lib/libz.so.1 (0xb7e22000)
libnsl.so.1 => /lib/tls/i686/cmov/libnsl.so.1 (0xb7e0c000)
libcrypt.so.1 => /lib/tls/i686/cmov/libcrypt.so.1 (0xb7dde000)
libgssapi_krb5.so.2 => /usr/lib/libgssapi_krb5.so.2 (0xb7dc2000)
libkrb5.so.3 => /usr/lib/libkrb5.so.3 (0xb7d46000)
libk5crypto.so.3 => /usr/lib/libk5crypto.so.3 (0xb7d20000)
libcom_err.so.2 => /lib/libcom_err.so.2 (0xb7d1d000)
libkrb5support.so.0 => /usr/lib/libkrb5support.so.0 (0xb7d18000)
libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb7be7000)
libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0xb7be3000)
/lib/ld-linux.so.2 (0xb7f90000)
#

Como processo é demorado e repedito, utilize o script no link abaixo:

Download make_jail.sh

Por último vamos criar o usuário.

# useradd -d /home/chroot/home/admin -s /usr/bin/rssh
# password admin

Caso user já exista

# usermod -d /home/chroot/home/admin -s /usr/bin/rssh admin

OBS.:

Lembre-se de atualizar o passwd para o ambiente chrooted.

Finalizamos com o restart do ssh.

service sshd restart

NOTA:

Algumas vezes faz se necessário as bibliotecas libnss_*

# cp /lib/libnss_* lib/

Colocar permissão de SUID para o arquivo rssh_chroot_helper

# chmod 4755 /usr/lib/rssh_chroot_helper
# chmod 4755 /usr/lib/rssh/rssh_chroot_helper

Caso contrário teremos a seguinte mensagem no syslog.

Jun 21 18:01:17 server rssh_chroot_helper[3120]: chroot() failed, 2: Operation not permitted

Se durante o logon a conexão finalizar com a seguinte mensagem “Conection Closed”, altere o /etc/ssh/sshd_config conforme abaixo”:

UsePrivilegeSeparation yes

para

UsePrivilegeSeparation no

Share this on Orkut!
Comments are off for this post

Comments are closed.