LinuxParty
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.

-
Debian
- Equivalencias entre DEB y RPM, y también APT y YUM para Linux
- FreeXP la alternativa moderna a Windows 11 de la mano de Linux
- Se lanzó Debian 12.7 “Bookworm” con 55 actualizaciones de seguridad y 51 correcciones de errores
- Debian 12 'Bookworm' es lanzado oficialmente, ofreciendo mayor estabilidad y numerosas actualizaciones de software
- Instalación de memcached Y el módulo PHP5 Memcache sobre Debian Etch (Apache2)
- Ejecutar Feng Office en Nginx (LEMP) en Debian Squeeze/Ubuntu 11.10
- MX Linux: la mejor distro Linux para nuevos usuarios, basada en Debian para principiantes de Linux
- Montar directorios remotos con SSHFS en Linux
- UEFI Secure Boot será eliminado a partir de Debian 9 'Stretch'
- Debian elimina el soporte para procesadores Pentium de la arquitectura i386
- Fundador de Debian, Ian Murdock fallece a los 42 años.
- Debian 7.0 Wheezy publicado
- Servidor Web, correo electrónico, cluster de base de datos MySQL (espejo)
- Instalando OpenLDAP con soporte SSL en debian
- Cómo tener varias versiones de PHP (PHP-FPM y FastCGI) Con ISPConfig 3 en Ubuntu / Debian Linux (4 de 4)