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.
-
Linux
- Zorin OS 17.1 lanzado con soporte mejorado para aplicaciones de Windows, edición educativa
- Linux en el Escritorio: ¡Despega en 2024 con un 4% de Cuota!"
- ¿Estás pensando en cambiarte a Linux? 10 cosas que necesitas saber
- Hay una nueva distribución de Linux más genial para 2024
- rlxOS es una distribución de Linux inmutable que demuestra que las apariencias engañan
- Ultramarine Linux Flagship es candidato a escritorio del año
- Linus Torvalds analiza los mantenedores, la IA y el óxido en el kernel
- Cómo instalar y habilitar el completado automático de Bash Linux
- ¿Y si Linus Torvalds hubiera aceptado la oferta de Steve Jobs?
- Optimizar imágenes desde la Terminal Linux
- ¿Quiere una distribución de Linux sencilla, estable y segura? Entonces SpiralLinux es para ti
- Pruebas de rendimiento en servidores VPS, ordenadores de Escritorio o Servidores Linux
- Las 8 mejores distribuciones ligeras de Linux para ordenadores antiguos
- Los 6 mejores cargadores de arranque (boot loaders) para Linux
- Se eliminará el soporte a largo plazo para el kernel de Linux ya que el mantenimiento sigue bajo presión