Aislamiento y gestión de entornos de usuario sin privilegios para puestos públicos o bibliotecas

Objetivo:

Aprender a diseñar, configurar y asegurar un perfil de usuario restringido en Linux para entornos de uso público o compartido (como bibliotecas, aulas o puestos de atención al cliente), garantizando la privacidad entre sesiones, restringiendo el acceso al sistema de archivos y automatizando la restauración del entorno mediante un perfil efímero.

Escenario:

  • Herramientas: Terminal Linux, useradd / usermod, chmod / chown, permisos POSIX, sistema de archivos tmpfs / overlayfs, entorno de escritorio / Display Manager (GDM / LightDM).
  • Conceptos analizados: Principio de menor privilegio, aislamiento de procesos de usuario, perfiles de usuario volátiles (Guest/Invitado), restricciones en el menú de aplicaciones, control de acceso a recursos del sistema y borrado automático de sesión.
  • Proceso clave: Creación de una cuenta de usuario sin privilegios sudo, restricción de lectura en los directorios de otros usuarios, configuración de un script de limpieza automática al cerrar sesión y montaje de datos en memoria volátil (tmpfs).

Escenario Real: Asegurar los ordenadores de la Biblioteca Pública

Como técnico de informática de un centro público, te encargan configurar 15 ordenadores destinados al acceso a internet de los ciudadanos. Un usuario anterior puede descargar software malicioso, dejar abiertas sus sesiones de correo, guardar archivos confidenciales en el escritorio o intentar modificar la configuración del sistema. Tu objetivo es crear un perfil de uso público totalmente restringido, donde el usuario no tenga acceso a rutas críticas del sistema ni a otros usuarios, y donde cualquier cambio realizado durante la sesión desaparezca completamente al cerrar la sesión o reiniciar el equipo.

En entornos de uso compartido, no basta con denegar los permisos de administración (sudo). Es fundamental garantizar el **aislamiento horizontal** (que un usuario no pueda cotillear los datos de otros usuarios) y la **limpieza de sesión**. Si la carpeta personal de un usuario público se monta sobre un sistema de archivos en memoria (tmpfs) o un mapa superpuesto (overlayfs), los datos guardados, el historial del navegador y las descargas desaparecerán físicamente al apagar el equipo o cerrar la sesión, devolviendo el equipo a un estado impoluto para el siguiente ciudadano.

NOTA: Para esta práctica utilizaremos nuestra máquina virtual Linux de pruebas. Realizaremos las operaciones de configuración con nuestro usuario habitual con privilegios administrativos (sudo) para dar forma al entorno del nuevo usuario público.

Instrucciones:

Fase 1: Creación y aseguramiento del usuario público:

  • Crear un nuevo usuario del sistema llamado visitante sin privilegios de administración:
    sudo useradd -m -s /bin/bash visitante
  • Establecer una contraseña sencilla o configurar el inicio de sesión automático en el gestor de pantalla:
    sudo passwd visitante
  • Verificar que el usuario visitante no forma parte del grupo sudo ni del grupo wheel:
    groups visitante

Fase 2: Aislamiento del sistema de archivos y permisos estrictos:

  • Por defecto, en algunas distribuciones los usuarios pueden leer los archivos del directorio de otros usuarios. Vamos a aplicar una restricción estricta de permisos sobre los directorios personales (modo 700 o 750):
    sudo chmod 700 /home/visitante
    sudo chmod 700 /home/tu_usuario_admin
  • Prevenir que el usuario visitante pueda examinar carpetas críticas del sistema montando o ajustando permisos sobre ejecutables no necesarios (ej. restringir compresión o herramientas de red si fuera necesario) o comprobando las restricciones de /tmp y /var/tmp con el bit de permanencia (Sticky Bit):
    ls -ld /tmp /var/tmp

Fase 3: Configuración de un perfil volátil efímero (Restauración automática):

  • Para garantizar que cualquier archivo guardado en el Escritorio o Descargas por el usuario se elimine automáticamente al apagar la máquina, configuraremos el directorio /home/visitante sobre memoria RAM temporal utilizando tmpfs en el archivo /etc/fstab:
    sudo nano /etc/fstab
  • Añadir la siguiente línea al final del archivo para asignar 1 GB de RAM como almacenamiento volatil para la carpeta del usuario público:
    tmpfs   /home/visitante   tmpfs   defaults,noatime,mode=0700,uid=visitante,gid=visitante,size=1G   0   0
  • Probar el montaje sin reiniciar para verificar que no hay errores de sintaxis:
    sudo mount -a
    df -h /home/visitante
NOTA: Al montar /home/visitante en tmpfs, la carpeta vive en la memoria RAM. En cuanto el ordenador se apaga o reinicia, la RAM pierde su energía y el contenido del directorio vuelve a quedar completamente en blanco, eliminando historiales, contraseñas guardadas y archivos descargados.

Fase 4: Creación de un script de plantilla inicial (Skeleton):

  • Dado que tmpfs estará vacío tras cada reinicio, podemos crear un script en el inicio de sesión o un servicio de systemd que copie una estructura base preconfigurada (iconos en el escritorio, enlaces a navegadores, fondos de pantalla) desde una carpeta modelo (ej. /etc/guest-template) hacia /home/visitante antes de que cargue el entorno gráfico.
  • Crear la carpeta plantilla e introducir un archivo informativo de bienvenida:
    sudo mkdir -p /etc/guest-template
    sudo bash -c 'echo "Bienvenido a la biblioteca. Tus archivos se borrarán al cerrar sesión." > /etc/guest-template/LEEME.txt'
    sudo chown -R visitante:visitante /etc/guest-template

Verificación:

  • Cerrar la sesión actual e iniciar sesión con la cuenta visitante.
  • Crear varios archivos en el Escritorio y navegar por internet guardando marcadores o archivos.
  • Intentar ejecutar un comando administrativo con sudo apt update para confirmar que el sistema deniega el acceso.
  • Intentar acceder al directorio del usuario administrador (cd /home/tu_usuario_admin) para verificar que el acceso es denegado (Permission denied).
  • Reiniciar el equipo, volver a iniciar sesión como visitante y comprobar que todos los archivos creados en la prueba han desaparecido por completo y el entorno se ha restaurado a su estado inicial.

Posibles errores y resolución de problemas:

Si al iniciar sesión con el usuario visitante el entorno gráfico muestra un error del tipo "No se puede escribir el archivo .Xauthority" o el escritorio no carga y vuelve a la pantalla de login, suele deberse a que el usuario no es el propietario del directorio montado en tmpfs o los permisos asignados en /etc/fstab son incorrectos.

  • Solución: Revisa que en la línea de /etc/fstab hayas especificado correctamente los parámetros uid=visitante,gid=visitante,mode=0700 o ejecuta un script de inicio que aplique un chown -R visitante:visitante /home/visitante justo después de montar el volumen.

Preguntas de reflexión:

  1. ¿Qué ventajas en materia de protección de datos (RGPD) aporta la implementación de un sistema de archivos efímero (tmpfs) en equipos de uso público frente a un perfil de usuario estándar?
  2. ¿Por qué denegar los privilegios de sudo no es suficiente por sí solo para evitar que un usuario sin experiencia exponga datos de otros usuarios del mismo equipo?
  3. ¿Qué diferencia fundamental existe entre usar un sistema tmpfs (basado en RAM) y una solución mediante superposición de capas (overlayfs / AppArmor / Guest Sessions) para la gestión de perfiles temporales?
  4. ¿Qué medidas adicionales a nivel de red o navegador web se deberían implementar en un equipo público para evitar el uso indebido de la infraestructura?
Haz clic aquí para ver las soluciones y explicaciones

1. ¿Qué ventajas en materia de protección de datos (RGPD) aporta la implementación de un sistema de archivos efímero (tmpfs) en equipos de uso público frente a un perfil de usuario estándar?

Garantiza la eliminación irreversible de cualquier dato personal, historial de navegación, cookies, documentos descargados o credenciales que el usuario haya introducido durante su uso. Al almacenarse en la memoria volátil RAM, la destrucción de la información ocurre a nivel físico en cuanto la máquina se reinicia o pierde alimentación, evitando que el siguiente usuario pueda recuperar información privada de terceros.


2. ¿Por qué denegar los privilegios de sudo no es suficiente por sí solo para evitar que un usuario sin experiencia exponga datos de otros usuarios del mismo equipo?

Porque la denegación de sudo solo impide modificar el sistema operativo globalmente. Sin embargo, si los permisos en los directorios /home permiten la lectura pública (modo por defecto en algunos sistemas antiguos como POSIX 755), un usuario estándar sin `sudo` podría entrar visualmente en las carpetas personales de otros usuarios, consultar sus documentos privados, fotos o configuraciones locales sin necesitar privilegios elevados.


3. ¿Qué diferencia fundamental existe entre usar un sistema tmpfs (basado en RAM) y una solución mediante superposición de capas (overlayfs / AppArmor / Guest Sessions) para la gestión de perfiles temporales?

tmpfs consume memoria RAM física del equipo proporcional al tamaño de los archivos que guarde el usuario, pero es sumamente rápido y fácil de configurar. Una solución basada en overlayfs redirecciona las escrituras a un directorio temporal en el propio disco duro mediante capas de solo lectura (read-only base + read-write temp), lo que permite manejar volúmenes de datos mucho mayores sin comprometer la memoria RAM del servidor o puesto de trabajo.


4. ¿Qué medidas adicionales a nivel de red o navegador web se deberían implementar en un equipo público para evitar el uso indebido de la infraestructura?

A nivel de red, se deberían aplicar reglas de filtrado de contenido mediante DNS/Firewall (bloqueo de sitios maliciosos o de descargas ilegales), aislamiento de clientes en la VLAN de acceso público y límites de ancho de banda. A nivel de navegador, es recomendable forzar el modo incógnito por política, desactivar la memorización de contraseñas, instalar bloqueadores de publicidad/rastreadores y bloquear la descarga de ejecutables sospechosos.