LinuxParty

Ratio: 5 / 5

Inicio activadoInicio activadoInicio activadoInicio activadoInicio activado
 

Este tipo de configuración ssh chroot se conoce comúnmente como una cárcel chroot y en este artículo explicaremos su configuración paso a paso. Las cárceles fragmentadas son un medio para separar las operaciones específicas del usuario del resto del sistema Linux. Esta configuración cambia el directorio raíz aparente para el proceso de usuario en ejecución actual y su proceso secundario con un nuevo directorio raíz llamado cárcel chrooteada.

Paso 1: Crea el directorio de inicio de chroot.

[root@linuxnix ~]# mkdir -p /chroot/home/sahil
[root@linuxnix ~]# ls -ld /chroot/home/sahil
drwxr-xr-x. 2 root root 4096 Jul 22 22:34 /chroot/home/sahil
[root@linuxnix ~]# chmod 700 /chroot/home/sahil

 

Necesitamos deshabilitar SELinux para que esta configuración funcione.

[root@linuxnix ~]# setenforce 0

 

Copiaremos ciertos archivos binarios y archivos de biblioteca en este directorio. Entonces, creemos los subdirectorios en los que colocaremos estos archivos binarios y de biblioteca.

[root@linuxnix ~]# cd /chroot
[root@linuxnix chroot]# mkdir bin/ lib64/ lib/ dev/
[root@linuxnix chroot]# ls
bin lib lib64 dev
[root@linuxnix chroot]#

Ahora, bajo el directorio dev/, crearemos ciertos archivos de dispositivos de caracteres necesarios utilizando el comando mknod. En el siguiente comando, el indicador -m se usa para especificar los bits de permisos de archivo, c significa archivo de caracteres y los dos números son números mayores y menores a los que apuntan los archivos.

[root@linuxnix ~]# mknod /chroot/dev/null c 1 3
[root@linuxnix ~]# mknod /chroot/dev/zero c 1 5
[root@linuxnix ~]# mknod -m 666 /chroot/dev/tty c 5 0
[root@linuxnix ~]# mknod -m 666 /chroot/dev/ptmx c 5 2

 

Paso 2: Copie el binario bash en el directorio de inicio chrooteado
Dado que un entorno encarcelado está aislado del resto del sistema, no tendremos acceso a ningún comando de usuario, ni siquiera al shell bash, mientras estemos en el entorno encarcelado chroted. Entonces, para tener acceso al bash shell copiaremos el binario bash a nuestro directorio de inicio chrooteado junto con las bibliotecas compartidas requeridas por bash. Para saber qué bibliotecas compartidas necesita un binario, ejecutamos el comando ldd seguido de la ruta completa del binario.

[root@linuxnix chroot]# ldd /bin/bash
linux-vdso.so.1 => (0x00007fff4f19a000)
libtinfo.so.5 => /lib64/libtinfo.so.5 (0x0000003dfc200000)
libdl.so.2 => /lib64/libdl.so.2 (0x0000003deee00000)
libc.so.6 => /lib64/libc.so.6 (0x0000003dee600000)
/lib64/ld-linux-x86-64.so.2 (0x0000003dede00000)

 

Ahora necesitaremos copiar los archivos de la biblioteca mencionados anteriormente junto con el archivo binario / bin / bash en los directorios apropiados en el directorio / chroot / home.

[root@linuxnix chroot]# cp -v /lib64/libtinfo.so.5 /chroot/home/lib64/
`/lib64/libtinfo.so.5' -> `/chroot/home/lib64/libtinfo.so.5'
[root@linuxnix chroot]# cp -v /lib64/libdl.so.2 /chroot/home/lib64/
`/lib64/libdl.so.2' -> `/chroot/home/lib64/libdl.so.2'
[root@linuxnix chroot]# cp -v /lib64/libc.so.6 /chroot/home/lib64/
`/lib64/libc.so.6' -> `/chroot/home/lib64/libc.so.6'
[root@linuxnix chroot]# cp -v /lib64/ld-linux-x86-64.so.2 /chroot/home/lib64/
`/lib64/ld-linux-x86-64.so.2' -> `/chroot/home/lib64/ld-linux-x86-64.so.2'
[root@linuxnix chroot]#
[root@linuxnix chroot]# cp -v /bin/bash /chroot/home/bin/
`/bin/bash' -> `/chroot/home/bin/bash'
[root@linuxnix chroot]#

Ahora necesitamos ejecutar el comando chroot seguido del nombre del directorio de inicio chroot para completar la configuración del entorno chroot.

[root@linuxnix ~]# cat chroot_library_copy.bash
#!/bin/bash

CHROOT='/chroot/home'

#create chroot directory if it does not already exist##

mkdir $CHROOT

##copy library
for lib in $( ldd $* | awk '/lib/ {print $3}' | sed 's/://' | sort | uniq )
do
cp ${lib} ${CHROOT}/lib64 done if [ -f /lib64/ld-linux-x86-64.so.2 ]; then cp /lib64/ld-linux-x86-64.so.2 ${CHROOT}/lib64 fi [root@linuxnix ~]#

 

Ejecutemos este script ahora.

[root@linuxnix ~]# bash -x ./chroot_library_copy.bash /bin/{ls,cat,echo,rm,date,bash,uname,vi}
+ CHROOT=/chroot/home
+ mkdir /chroot/home
mkdir: cannot create directory `/chroot/home': File exists
++ sort
++ uniq
++ awk '/lib/ {print $3}'
++ sed s/://
++ ldd /bin/ls /bin/cat /bin/echo /bin/rm /bin/date /bin/bash /bin/uname /bin/vi
+ for lib in '$( ldd $* | awk '\''/lib/ {print $3}'\'' | sed '\''s/://'\'' | sort | uniq )'
+ cp /lib64/libacl.so.1 /chroot/home/lib64
+ for lib in '$( ldd $* | awk '\''/lib/ {print $3}'\'' | sed '\''s/://'\'' | sort | uniq )'
+ cp /lib64/libattr.so.1 /chroot/home/lib64
+ for lib in '$( ldd $* | awk '\''/lib/ {print $3}'\'' | sed '\''s/://'\'' | sort | uniq )'
+ cp /lib64/libcap.so.2 /chroot/home/lib64
+ for lib in '$( ldd $* | awk '\''/lib/ {print $3}'\'' | sed '\''s/://'\'' | sort | uniq )'
+ cp /lib64/libc.so.6 /chroot/home/lib64
+ for lib in '$( ldd $* | awk '\''/lib/ {print $3}'\'' | sed '\''s/://'\'' | sort | uniq )'
+ cp /lib64/libdl.so.2 /chroot/home/lib64
+ for lib in '$( ldd $* | awk '\''/lib/ {print $3}'\'' | sed '\''s/://'\'' | sort | uniq )'
+ cp /lib64/libpthread.so.0 /chroot/home/lib64
+ for lib in '$( ldd $* | awk '\''/lib/ {print $3}'\'' | sed '\''s/://'\'' | sort | uniq )'
+ cp /lib64/librt.so.1 /chroot/home/lib64
+ for lib in '$( ldd $* | awk '\''/lib/ {print $3}'\'' | sed '\''s/://'\'' | sort | uniq )'
+ cp /lib64/libselinux.so.1 /chroot/home/lib64
+ for lib in '$( ldd $* | awk '\''/lib/ {print $3}'\'' | sed '\''s/://'\'' | sort | uniq )'
+ cp /lib64/libtinfo.so.5 /chroot/home/lib64
+ '[' -f /lib64/ld-linux-x86-64.so.2 ']'
+ cp /lib64/ld-linux-x86-64.so.2 /chroot/home/lib64
[root@linuxnix ~]#
[root@linuxnix ~]# cp -v /bin/{ls,cat,echo,rm,date,bash,uname,vi} /chroot/home/bin
`/bin/ls' -> `/chroot/home/bin/ls'
`/bin/cat' -> `/chroot/home/bin/cat'
`/bin/echo' -> `/chroot/home/bin/echo'
`/bin/rm' -> `/chroot/home/bin/rm'
`/bin/date' -> `/chroot/home/bin/date'
cp: overwrite `/chroot/home/bin/bash'? y
`/bin/bash' -> `/chroot/home/bin/bash'
`/bin/uname' -> `/chroot/home/bin/uname'
`/bin/vi' -> `/chroot/home/bin/vi'
[root@linuxnix ~]#

 

Paso 4: Agregue el usuario que va a ser encarcelado.
Al agregar la cuenta de usuario a encarcelar, también crearemos un grupo llamado sshonly y lo agregaremos como un grupo secundario al usuario que vamos a crear.

[root@linuxnix ~]# groupadd sshonly

[root@linuxnix ~]# useradd -G sshonly -c "Restricted User" sahil
[root@linuxnix ~]# passwd sahil
Changing password for user sahil. New password: BAD PASSWORD: it is WAY too short BAD PASSWORD: is too simple Retype new password: passwd: all authentication tokens updated successfully
 

Haremos uso del grupo sshonly en el archivo sshd_config de modo que cualquier miembro de este grupo reciba un entorno ssh encarcelado.

Paso 5: Modifique el archivo / etc / ssh / sshd_config y reinicie el servicio sshd
Agregue las siguientes líneas al archivo / etc / ssh / sshd_config y luego reinicie el servicio sshd.

[root@linuxnix ~]# tail -n 5 /etc/ssh/sshd_config 
# Use Match Group and ChrootDirectory options to Chroot members of 'sshonly` after authentication
Match Group sshonly
ChrootDirectory /chroot
AllowTcpForwarding no
X11Forwarding no

[root@linuxnix ~]# service sshd restart Stopping sshd: [ OK ] Starting sshd: [ OK ]
 

Paso 6: Probar y validar la configuración
Ahora que hemos completado la configuración, intentemos iniciar sesión como el usuario sahil y probarla.

[root@linuxnix ~]# ssh Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.
The authenticity of host '172.31.27.196 (172.31.27.196)' can't be established.
RSA key fingerprint is 60:d4:8e:1a:4d:f8:f4:a8:9e:d5:b7:3b:2d:c7:f2:90.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '172.31.27.196' (RSA) to the list of known hosts.
Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.'s password:
-bash-4.1$ ls
-bash-4.1$ pwd
/home/sahil
 

Conclusión

En este artículo demostramos paso a paso cómo configurar una cuenta ssh encarcelada de chroot. Esperamos que esta publicación sea útil y esperamos sus sugerencias y comentarios.

Pin It

Escribir un comentario


Código de seguridad
Refescar



Redes:



 

Suscribete / Newsletter

Suscribete a nuestras Newsletter y periódicamente recibirás un resumen de las noticias publicadas.

Donar a LinuxParty

Probablemente te niegues, pero.. ¿Podrías ayudarnos con una donación?


Tutorial de Linux

Filtro por Categorías

Nos obligan a moslestarte con la obviedad de que este sitio utiliza Cookies. Ver política