Auditoría de atributos avanzados de archivos

En esta práctica del módulo de Sistemas Operativos Monopuesto, profundizaremos en la seguridad y el control avanzado de permisos mediante la auditoría y modificación de atributos avanzados de archivos. Aprenderemos a proteger ficheros críticos contra modificaciones o borrados accidentales utilizando el comando attrib en Windows o los atributos extendidos con chattr en GNU/Linux.

Objetivo:

Modificar los atributos especiales de archivos en el sistema operativo para conferirles propiedades de inmutabilidad (sólo lectura o protección contra borrado), comprendiendo la diferencia entre los permisos estándar POSIX/NTFS y los atributos de control a nivel de kernel.

Escenario:

  • Un equipo con sistema operativo Windows o GNU/Linux.
  • Acceso a la consola de comandos (Símbolo del sistema, PowerShell o Terminal) con privilegios de administrador o superusuario (sudo).

Instrucciones:

Opción A: Entorno Windows (Gestión de atributos con attrib)

  1. Creación de un archivo de prueba y consulta de atributos:
    • Abre Símbolo del sistema (cmd) o PowerShell y crea un archivo de texto de prueba:
      echo "Archivo protegido" > C:\archivo_seguro.txt
    • Consulta los atributos actuales del archivo ejecutando:
      attrib C:\archivo_seguro.txt
  2. Aplicación de atributos de solo lectura y sistema:
    • Modifica el archivo para que adquiera atributos de solo lectura (+R) y de archivo de sistema (+S) ejecutando:
      attrib +R +S C:\archivo_seguro.txt
    • Intenta modificar o eliminar el archivo desde el Explorador de archivos o la consola para comprobar que el sistema operativo restringe la acción (incluso para usuarios administradores, requiriendo retirar el atributo previamente).
    • Para revertir los cambios y permitir de nuevo su edición, ejecuta: attrib -R -S C:\archivo_seguro.txt

Opción B: Entorno GNU/Linux (Atributos extendidos con chattr y lsattr)

  1. Consulta y aplicación del atributo inmutable (i):
    • Abre una terminal con privilegios de superusuario y crea un archivo de prueba:
      echo "Configuración crítica" > /etc/archivo_critico.conf
    • Verifica los atributos extendidos actuales del archivo utilizando el comando lsattr:
      lsattr /etc/archivo_critico.conf
    • Bloquea el archivo por completo haciéndolo inmutable mediante el comando chattr con el modificador +i:
      sudo chattr +i /etc/archivo_critico.conf
  2. Verificación de la protección contra modificaciones:
    • Intenta editar, sobreescribir o eliminar el archivo (incluso utilizando el usuario root):
      sudo rm /etc/archivo_critico.conf
    • Observa el mensaje de error devuelto por el sistema ("Operation not permitted"), que demuestra que ni siquiera el superusuario puede alterar el archivo mientras mantenga activo dicho atributo.
    • Para retirar la protección y permitir de nuevo su administración, ejecuta: sudo chattr -i /etc/archivo_critico.conf

Verificación

  1. Comprueba mediante los comandos de consulta (attrib o lsattr) que los atributos avanzados se han aplicado correctamente al fichero.
  2. Verifica que los intentos de modificar o borrar el archivo protegido son bloqueados de forma efectiva por el sistema operativo.
  3. Confirma que al retirar los atributos especiales, el archivo recupera su comportamiento y editabilidad estándar.

Preguntas de reflexión:

  1. ¿Qué diferencia fundamental existe entre los permisos tradicionales de control de acceso (como las listas ACL o los permisos rwx en Linux) y el uso de atributos avanzados como +i (inmutable) o +R (solo lectura)?
  2. ¿Por qué el atributo inmutable en Linux (chattr +i) es capaz de bloquear la eliminación o modificación de un archivo incluso cuando la acción la ejecuta el usuario con privilegios de máxima autoridad (root)?
  3. ¿Qué utilidad práctica aporta el uso de estos atributos avanzados en la endurecización de sistemas (*hardening*) para proteger archivos de configuración del sistema frente a modificaciones maliciosas o borrados accidentales?
Haz clic aquí para ver la solución orientativa

1. ¿Qué diferencia hay entre los permisos tradicionales y los atributos avanzados?

Los permisos tradicionales (como rwx o las ACL) determinan quién puede leer, escribir o ejecutar un archivo en función de la identidad del usuario o grupo. Los atributos avanzados (como inmutable o de sistema), en cambio, actúan como flags a nivel de metadatos del sistema de archivos que restringen acciones concretas sobre el objeto de forma global, independientemente de los permisos de usuario que se posean.


2. ¿Por qué el atributo inmutable en Linux bloquea incluso al usuario root?

El modificador +i (inmutable) modifica banderas internas del inodo gestionadas directamente por el kernel del sistema de archivos (como ext4). Por diseño de seguridad del kernel, ninguna entidad (ni siquiera el usuario root, que por lo general tiene capacidad de saltarse los permisos POSIX estándar) puede alterar un objeto marcado como inmutable a menos que primero se desactive explícitamente dicha bandera.


3. ¿Qué utilidad aportan estos atributos en el endurecización de sistemas (hardening)?

Permiten añadir una capa crítica de defensa en profundidad. Al proteger archivos esenciales del sistema operativo (como ficheros de arranque, servicios de red o binarios críticos) mediante atributos de inmutabilidad, se mitiga el impacto de un posible compromiso de seguridad: si un atacante logra escalar privilegios, no podrá alterar ni corromper dichos archivos vitales sin que el cambio de metadatos sea detectado previamente.