![Encarcelar a usuarios particulares al iniciar sesión](https://rvso.com/image/1048342/Encarcelar%20a%20usuarios%20particulares%20al%20iniciar%20sesi%C3%B3n.png)
Todo este asunto de las cárceles y chroot me resulta un poco confuso. Se utilizan para ejecutar programas posiblemente riesgosos de forma segura, pero esto debe ser iniciado por el usuario. Estoy buscando cómo encarcelar a los usuarios como lo hacen Android e iOS. Esto se puede configurar para inicios de sesión remotos, pero ¿cómo se puede configurar para inicios de sesión desde casa?
Supongamos que tengo Ubuntu instalado en una PC de escritorio. Hay cuatro usuarios: administrador, usuario1, usuario2 e invitado. El primero inicia sesión como lo hace normalmente una cuenta. El segundo y tercer inicio de sesión en una cárcel. El cuarto ingresa en una cárcel más restrictiva que el segundo y el tercero. ¿Estas cuentas encarceladas tienen acceso a una especie de entorno virtualizado? ¿Incluyen copias de los archivos binarios principales o están integrados en la interfaz de todos? ¿Se logran con scripts de inicialización o algo más?
Respuesta1
Configuración de la cárcel Chroot
Crear usuario para ser encarcelado.
$sudo adduser acer
Para configurar chroot necesitamos configurar el privilegio sudo para los usuarios.
Agregue el usuario al grupo sudo
$sudo adduser acer sudo
Crear carpeta para configurar un usuario en la cárcel
$sudo mkdir /chroot
El usuario de la cárcel sólo puede acceder a lo que esté dentro de la carpeta /chroot
Esto significa que debemos proporcionar algo allí, a menos que el usuario solo pueda ver la carpeta vacía.
Simplemente crea cosas básicas necesarias.
$cd /chroot
$ sudo mkdir bin dev etc home lib usr var
$sudo mkdir etc/pam.d home/acer lib/security var/log usr/bin
Queremos copiar el software a /chroot que el usuario de la cárcel pueda usar.
comando bash
$which bash
/bin/bash
$sudo cp /bin/bash /chroot/bin
$ldd /bin/bash
#This ldd command is used to list the library function
linux-gate.so.1 => (0xb772d000)
libtinfo.so.5 => /lib/i386-linux-gnu/libtinfo.so.5 (0xb76f0000)
libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0xb76eb000)
libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb753c000)
/lib/ld-linux.so.2 (0xb772e000)
Copy this lib file to chroot lib directory
$sudo cp /lib/i386-linux-gnu/libtinfo.so.5 /chroot/lib
$sudo cp /lib/i386-linux-gnu/libdl.so.2 /chroot/lib
$sudo cp /lib/i386-linux-gnu/libc.so.6 /chroot/lib
$sudo cp /lib/ld-linux.so.2 /chroot/lib
ls comando
$which ls
/bin/ls
$sudo cp /bin/ls /chroot/bin
$ldd /bin/ls
linux-gate.so.1 => (0xb771f000)
libselinux.so.1 => /lib/i386-linux-gnu/libselinux.so.1 (0xb76e1000)
libacl.so.1 => /lib/i386-linux-gnu/libacl.so.1 (0xb76d8000)
libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb7529000)
libpcre.so.3 => /lib/i386-linux-gnu/libpcre.so.3 (0xb74eb000)
libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0xb74e6000)
/lib/ld-linux.so.2 (0xb7720000)
libattr.so.1 => /lib/i386-linux-gnu/libattr.so.1 (0xb74e0000)
Copie este archivo lib al directorio chroot lib
$sudo cp /lib/i386-linux-gnu/libselinux.so.1 /chroot/lib
$sudo cp /lib/i386-linux-gnu/libacl.so.1 /chroot/lib
$sudo cp /lib/i386-linux-gnu/libc.so.6 /chroot/lib
$sudo cp /lib/i386-linux-gnu/libpcre.so.3 /chroot/lib
$sudo cp /lib/i386-linux-gnu/libdl.so.2 /chroot/lib
$sudo cp lib/i386-linux-gnu/libattr.so.1 /chroot/lib
$sudo cp /lib/ld-linux.so.2 /chroot/lib
su comando
$which su
/bin/su
$sudo cp /bin/su /chroot/su
$ldd /bin/su
linux-gate.so.1 => (0xb7737000)
libpam.so.0 => /lib/i386-linux-gnu/libpam.so.0 (0xb770d000)
libpam_misc.so.0 => /lib/i386-linux-gnu/libpam_misc.so.0 (0xb7709000)
libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb755a000)
libaudit.so.1 => /lib/i386-linux-gnu/libaudit.so.1 (0xb7535000)
libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0xb7530000)
/lib/ld-linux.so.2 (0xb7738000)
Copy this lib file to chroot lib directory
$sudo cp /lib/i386-linux-gnu/libpam.so.0 /chroot/lib
$sudo cp /lib/i386-linux-gnu/libpam_misc.so.0 /chroot/lib
$sudo cp /lib/i386-linux-gnu/libc.so.6 /chroot/lib
$sudo cp /lib/i386-linux-gnu/libaudit.so.1 /chroot/lib
$sudo cp /lib/i386-linux-gnu/libdl.so.2 /chroot/lib
$sudo cp /lib/ld-linux.so.2 /chroot/lib
Agregue algunos archivos de configuración del sistema y bibliotecas adicionales al chroot
$cat /etc/passwd | grep acer > /chroot/etc/passwd
$cat /etc/passwd | grep root >> /chroot/etc/passwd
$cat /etc/group | grep acer > /chroot/etc/group
$cat /etc/group | grep root >> /chroot/etc/group
$cat /etc/shadow | grep acer > /chroot/etc/shadow
Copie el archivo nsswitch.conf a /chroot
$sudo cp /etc/nsswitch.conf /chroot/etc/nsswitch.conf
Dentro del nsswitch debería verse como el siguiente
passwd: files
group: files
shadow: files
hosts: files
networks: files
protocols: files
services: files
ethers: files
rpc: files
netgroup: files
Copiamos los archivos de configuración necesarios para que funcione el sistema PAM para que funcione la autorización en el jail
$sudo cp /etc/pam.d/common-account /chroot/etc/pam.d/
$sudo cp /etc/pam.d/common-auth /chroot/etc/pam.d/
$sudo cp /etc/pam.d/common-session /chroot/etc/pam.d/
$sudo cp /etc/pam.d/su /chroot/etc/pam.d/
Agregamos algunas bibliotecas adicionales requeridas por PAM y las funciones de cambio del servicio de nombres.
$sudo cp /lib/libnss_files.so.2 /chroot/lib
$sudo cp /lib/libnss_compat.so.2 /chroot/lib
$sudo cp /lib/libnsl.so.1 /chroot/lib
$sudo cp -fa /lib/security/ /chroot/lib
Necesitamos crear el archivo login.defs en el directorio /chroot/etc/. Este archivo define alguna configuración para el proceso de inicio de sesión.
$sudo vim /chroot/etc/login.defs
Agregue la siguiente línea al archivo login.defs
SULOG_FILE /var/log/sulog
Si no hiciéramos esto, el comando su intentaría utilizar la utilidad syslog, que no está disponible en la configuración de la cárcel y todo el proceso fallaría.
Cree el script que pondrá a nuestro usuario en la cárcel cada vez que inicie sesión en el sistema.
Cree el archivo jailshell en el directorio /bin, fuera de la cárcel
$sudo vim /bin/jailshell
Agregue el siguiente script a ese archivo
#!/bin/bash
sudo chroot /chroot /bin/su acer
Hazlo ejecutable
$sudo chmod +x /bin/jailshell
Para poner el script en acción, necesitamos editar el archivo /etc/passwd (que está fuera de la cárcel).
Cambie /bin/bash a /bin/jailshell en el usuario acer
$sudo vim /etc/passwd
acer:x:1003:1003:,,,:/home/acer:/bin/jailshell
Establecer el usuario acer en el directorio de inicio de la cárcel
$cd /home/acer
$sudo cp -fa ./ /chroot/home/acer
Lo siguiente también podría ser útil
$sudo cp /etc/bash.bashrc /chroot/etc/
$sudo cp /etc/localtime /chroot/etc/
$sudo cp /etc/services /chroot/etc/
$sudo cp /etc/protocols /chroot/etc/
$sudo cp /usr/bin/dircolors /chroot/usr/bin/
$sudo cp /usr/bin/groups/ /chroot/usr/bin/
Todo hecho. Ahora prueba el inicio de sesión.
$su – acer
password:xxxx
[sudo]password for acer:xxxx
acer@Snovabits:/$ ls
bin dev etc home lib usr var