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
- ¿Por qué Torvalds eliminó a los encargados rusos del mantenimiento del núcleo de Linux?
- 10 cosas que siempre hago después de instalar Linux (y por qué tú también deberías hacerlo)
- 7 cosas que nunca hago después de instalar Linux (y por qué tú tampoco deberías)
- Detección de Intrusos: Snort, Base, MySQL, y Apache2 en Ubuntu Linux 7.10
- He utilizado Linux durante 30 años. Aquí hay 5 razones por las que nunca cambiaré a Windows o MacOS
- ¿Por qué no más personas usan Linux en el escritorio? Tengo una teoría que quizás no te guste.
- Los países occidentales ricos lideran la expansión mundial del petróleo y el gas
- Systemd 256.1 aborda la queja de que 'systemd-tmpfiles' podría eliminar inesperadamente su directorio /home
- Por qué un kernel Linux de distribución 'congelada' no es la mejor opción para la seguridad
- RebornOS es una versión hermosa y fácil de usar de Arch Linux con abundantes opciones de escritorio
- Linus Torvalds sobre el 'hilarante' bombo de la IA
- Cambiar la hora en Linux con Chrony
- Renombrar multiples archivos masivamente en Linux (quitar espacios, cambiar mayúsculas) a la vez en Linux
- Linux 6.9 será el primero en superar los 10 millones de objetos Git
- Zorin OS 17.1 lanzado con soporte mejorado para aplicaciones de Windows, edición educativa