1. Por qué las credenciales son el objetivo principal
Los atacantes rara vez rompen un sistema cuando pueden iniciar sesión en él. Utilizar credenciales válidas, ya sean robadas, adivinadas, compradas o obtenidas mediante ingeniería social, es una de las técnicas más eficaces porque el acceso resultante es indistinguible del legítimo para la mayoría de los controles de seguridad. MITRE ATT&CK la recoge como Valid Accounts (T1078) y la sitúa a la vez como táctica de acceso inicial, persistencia, escalada de privilegios y evasión de defensas.
Por este motivo, la autenticación y el control de acceso son la primera línea de defensa de cualquier arquitectura y el punto en el que más suele fallar la seguridad real de una organización. Esta guía forma parte del contenido «Configuración de sistemas de control de acceso y autenticación de personas» del módulo y desarrolla los cinco criterios de evaluación del resultado de aprendizaje correspondiente:
| Criterio | Qué se debe saber definir | Capítulo |
|---|---|---|
a |
Mecanismos de autenticación según los distintos factores |
Fundamentos y capítulos siguientes |
b |
Protocolos y políticas basados en contraseñas y frases de paso |
|
c |
Protocolos y políticas basados en certificados digitales y tarjetas inteligentes |
|
d |
Protocolos y políticas basados en tokens y contraseñas de un solo uso |
|
e |
Protocolos y políticas basados en características biométricas |
Cada capítulo analiza, además, las principales vulnerabilidades y tipos de ataque de cada mecanismo, como exigen los criterios, y cierra con una batería de ejercicios prácticos reproducibles en una máquina virtual Linux de pruebas.
|
Este capítulo presenta el vocabulario y los modelos que usan los demás. Las técnicas de gestión de credenciales, las infraestructuras de clave pública, el control de acceso a la red y la gestión de cuentas privilegiadas se estudian con más profundidad en el contenido «Administración de credenciales de acceso a sistemas informáticos». Aquí se explican solo en la medida necesaria para comprender la autenticación. |
2. El modelo AAA
Todo acceso a un recurso atraviesa cuatro fases consecutivas. Las tres primeras se conocen como modelo AAA, por las iniciales en inglés de Authentication, Authorization y Accounting. Esta guía añade la identificación al principio, porque es la fase que se confunde con más frecuencia con la autenticación.
2.1. Identificación
Es el acto de declarar una identidad ante el sistema mediante un identificador, como un nombre de usuario, una dirección de correo, un número de empleado o un DNI. Por sí sola no prueba nada, ya que cualquiera puede escribir un nombre ajeno. En Linux, el identificador que usa el núcleo es el UID, que el sistema obtiene a partir del nombre de usuario consultando /etc/passwd o el servicio de directorio configurado.
De esa naturaleza se derivan tres consecuencias prácticas:
-
El identificador es público. Aparece en los registros, en las direcciones de correo y en los listados del sistema, de modo que tomarlo por una prueba de identidad es un error. Como además suele seguir un patrón previsible, del tipo
nombre.apellido, un atacante puede construir listas de cuentas probables, y esa es la razón de que los mensajes de error no deban distinguir entre una cuenta inexistente y una credencial incorrecta, como se explica en el apartado siguiente. -
El identificador interno conviene separarlo del visible. Un apellido cambia, una dirección de correo se sustituye y un puesto se renombra, pero los permisos concedidos y los registros ya escritos deben seguir apuntando a la misma persona. Por eso los sistemas guardan un identificador interno estable, como el UID en Linux, el SID en Windows o el campo
subde OpenID Connect, y dejan el nombre legible para las personas. -
No siempre se teclea. Un certificado, un vale de Kerberos o una credencial descubrible de FIDO2 llevan dentro la identidad declarada, de modo que el usuario no escribe ningún nombre. En los accesos entre máquinas, donde no hay nadie delante, la identidad la aporta el propio certificado o el token del servicio.
Una última distinción, que condiciona todo lo demás. La persona no es la cuenta. Una misma persona suele tener varias cuentas, por ejemplo una nominal para su trabajo diario y otra administrativa para las tareas que lo requieren, y los sistemas no autentican personas sino cuentas. De ahí que la trazabilidad dependa de que cada cuenta tenga un titular único e identificable, y que las aplicaciones y los dispositivos necesiten también su propia identidad, como se ve en la sección 3.
2.2. Autenticación
Es el proceso de verificar que quien se identifica es quien dice ser, mediante una o varias pruebas denominadas factores. El resultado es binario, el sujeto queda autenticado o no, pero la confianza que merece ese resultado no lo es, y de ahí que existan niveles de garantía, estudiados en el capítulo de autenticación multifactor.
El sistema no guarda la prueba, sino una referencia contra la que compararla, como el hash de una contraseña, la clave pública de un usuario o la plantilla de un rasgo biométrico. Esa referencia debe elegirse de modo que, si alguien se hace con ella, no pueda reconstruir el secreto ni suplantar a su titular.
Tres precisiones evitan los errores más comunes:
-
La autenticación caduca. Lo que se verifica es un instante, y lo que sostiene el acceso a partir de ahí es la sesión, que es una credencial más y tiene su propio ciclo de vida. Por eso conviene volver a pedir una prueba ante operaciones sensibles y limitar la duración de las sesiones.
-
Debe ser mutua. No basta con que el usuario demuestre quién es, el servicio también tiene que demostrarlo, y de ahí que el phishing funcione cuando esa segunda mitad falta. Los mecanismos que la garantizan se estudian en el capítulo de autenticación criptográfica.
-
El fallo no debe revelar en qué paso se produjo. Un mensaje que distinga entre «usuario inexistente» y «contraseña incorrecta» permite enumerar cuentas válidas, que es el trabajo previo a cualquier ataque de fuerza bruta.
Un sujeto autenticado no tiene todavía ningún permiso.
2.3. Autorización
Una vez autenticado, el sistema decide qué puede hacer el sujeto, según permisos, roles, atributos y políticas. Este capítulo estudia los modelos con los que se expresan esas decisiones en la sección 4, y la arquitectura que separa quién decide de quién aplica la decisión en la sección 5.
La autorización se comprueba en cada acceso, no una sola vez al entrar. Una sesión abierta no es un permiso permanente, y por eso un cambio de grupo o la retirada de un rol deben surtir efecto sin esperar a que el usuario vuelva a identificarse.
Conviene distinguir además entre dos cosas que suelen confundirse. Los permisos se definen sobre el recurso y responden a quién puede leerlo o modificarlo, como el modo de un archivo en Linux o una lista de control de acceso en Windows. Los privilegios son capacidades del sujeto que valen para todo el sistema y a menudo esquivan los permisos, como sudo, las capacidades del núcleo o el privilegio de hacer copias de seguridad. Un usuario sin permiso sobre un archivo puede leerlo igualmente si tiene el privilegio adecuado, de modo que el bastionado de la autorización pasa tanto por revisar los permisos como por limitar quién acumula privilegios.
Dos principios rigen el diseño. La denegación por defecto, según la cual lo que no está permitido está prohibido, y el mínimo privilegio, con cada sujeto limitado a lo que necesita para su tarea, que se desarrolla en la sección 3. Cuando se incumplen, aparece el fallo más frecuente de las aplicaciones web, el del acceso roto, que encabeza la lista OWASP Top 10 y que casi siempre consiste en confundir estar autenticado con estar autorizado.
2.4. Trazabilidad
Es el registro de quién hizo qué y cuándo. Aunque el modelo original la llama Accounting, porque en protocolos como RADIUS sirve para contabilizar el consumo de las sesiones, en seguridad se entiende como la capacidad de reconstruir los hechos y de imputar responsabilidades. Sin trazabilidad no hay detección de intrusiones, análisis forense ni cumplimiento normativo. Exige además cuentas individuales, porque una cuenta compartida impide saber qué persona realizó una acción.
Para que un registro sirva de evidencia tiene que reunir cuatro propiedades:
-
Completo. Un intento fallido informa tanto como uno correcto, y la ausencia de eventos también es un dato.
-
Íntegro. Debe poder detectarse si alguien lo ha modificado o truncado.
-
Fechado con un reloj sincronizado. Sin una referencia temporal común no se pueden correlacionar los eventos de dos máquinas ni sostener una cronología ante un tercero.
-
Conservado el tiempo necesario. El plazo lo fijan la normativa aplicable y el tiempo que suele tardarse en detectar un incidente, que es de meses y no de días.
La imputación exige además mantener el hilo entre la identidad y la acción cuando el usuario cambia de identidad por el camino. En Linux, el identificador de auditoría auid se fija al iniciar sesión y no cambia aunque después se use sudo o su, de modo que un evento con auid=ana uid=root sigue atribuyendo la acción a Ana. En Windows, el identificador de inicio de sesión cumple esa función y enlaza cada evento con la sesión que lo originó. Sin ese hilo, un conjunto de acciones realizadas como root no se puede atribuir a nadie.
Borrar el rastro es uno de los primeros objetivos de quien entra en un sistema, una técnica catalogada en MITRE ATT&CK como Indicator Removal (T1070). Por eso los registros se envían a un sistema independiente, donde quien ha comprometido el equipo ya no puede alterarlos.
Conviene recordar, por último, que estos registros son datos personales. Registrar es necesario, pero no justifica cualquier recogida, así que el alcance debe ser proporcionado, el acceso a los propios registros debe estar controlado y auditado, y el plazo de conservación, definido de antemano. Las obligaciones concretas se tratan en el capítulo de biometría y la puesta en práctica de todo lo anterior, en la guía de trazabilidad y auditoría en Linux.
2.5. Resumen y confusiones frecuentes
|
Tres confusiones que conviene evitar
|
| Fase | Qué ocurre | Mecanismo en Linux | Evidencia |
|---|---|---|---|
Identificación |
El usuario indica su nombre |
Entrada de |
Línea |
Autenticación |
Se comprueba la prueba aportada |
Pila |
|
Autorización |
Se decide qué puede hacer |
Permisos, ACL, |
|
Trazabilidad |
Se registra la actividad |
|
|
|
Con los conceptos explicados hasta aquí, ya puede realizar el Ejercicio 1. El modelo AAA en un registro de autenticación. |
3. Ciclo de vida de la identidad
Una identidad no es un objeto estático: nace, cambia y desaparece a lo largo de la relación de la persona con la organización. La mayoría de los incidentes relacionados con identidades no se producen en el momento del alta, sino en los cambios y en las bajas. Se habla de las fases joiner, mover y leaver, por la incorporación, el cambio de puesto y la salida.
| Fase | Actividad | Riesgo si falla | Control |
|---|---|---|---|
Alta |
Crear la cuenta con los permisos del puesto y entregar la credencial inicial |
Permisos excesivos desde el primer día, y credenciales iniciales débiles o enviadas por canales inseguros |
Plantillas por rol, cambio obligatorio de la credencial inicial, flujo de aprobación |
Cambio de puesto |
Retirar los permisos antiguos y conceder los nuevos |
Acumulación de permisos al pasar por varios puestos |
Revisión de accesos en cada movimiento |
Revisión periódica |
Verificar que cada cuenta y permiso sigue justificado |
Cuentas inactivas y permisos heredados sin dueño |
Recertificación periódica por los responsables |
Baja |
Deshabilitar la cuenta, revocar claves y sesiones, y reasignar recursos |
Acceso persistente de exempleados y archivos huérfanos |
Baja automatizada y coordinada con recursos humanos |
El ciclo funciona si existe una fuente de la verdad que diga quién trabaja en la organización y en qué puesto, que suele ser el sistema de recursos humanos o, en un centro educativo, el de matrícula. De ella deben derivarse el alta, los cambios y la baja, porque cuando las cuentas se crean a mano y sin un origen común aparecen las dos patologías clásicas, cuentas que nadie recuerda haber creado y personas que se van sin que nadie avise a quien administra los sistemas.
El punto más delicado es el desfase entre la baja laboral y la baja técnica. Mientras dure, existe un acceso válido que ya no corresponde a nadie, y es un acceso que no levanta ninguna alarma porque las credenciales son legítimas. Una baja completa no termina al deshabilitar la cuenta, sino que incluye revocar las sesiones y los tokens que siguen vivos, las claves SSH, los tokens de API, los certificados y las contraseñas de aplicación, retirar los autenticadores de segundo factor registrados, rotar las credenciales compartidas que la persona conocía y reasignar la propiedad de sus archivos y de sus trabajos programados.
Conviene además deshabilitar antes de borrar. La cuenta deshabilitada conserva la relación entre el identificador y la persona, que es lo que permite interpretar los registros antiguos y saber de quién eran los archivos. El borrado inmediato rompe esa relación, y en Linux agrava el problema porque el UID liberado puede reutilizarse en una cuenta nueva que heredaría los archivos de la anterior, como se vio en el apartado 2.1.
Los principios que gobiernan esas decisiones son tres:
-
Mínimo privilegio: cada identidad recibe solo los permisos imprescindibles para su función.
-
Necesidad de conocer: el acceso a información se limita a quien la necesita para su trabajo.
-
Separación de funciones: ninguna persona debe poder completar por sí sola una operación crítica, como solicitar y aprobar un pago.
Además de las cuentas de personas, toda organización mantiene cuentas de servicio, que utilizan las aplicaciones, cuentas privilegiadas, con capacidad administrativa, y cuentas de emergencia, reservadas para recuperar el acceso cuando el sistema de autenticación falla. Estas últimas requieren credenciales muy robustas, custodiadas fuera de línea y con alertas de uso.
Las cuentas que no son de personas recorren el mismo ciclo, pero suelen gestionarse peor, porque nadie las echa de menos. No hay una baja de recursos humanos que avise de que una aplicación se retiró, sus credenciales rara vez se rotan y a menudo acumulan más privilegios que cualquier persona. El control que lo evita es sencillo de enunciar, cada cuenta de servicio debe tener una persona responsable, una fecha de revisión y un procedimiento de rotación de su credencial.
Para saber si el ciclo funciona de verdad conviene medirlo. Cuatro indicadores bastan para empezar:
-
Tiempo transcurrido entre la baja laboral y la revocación efectiva del acceso.
-
Cuentas inactivas, sin uso durante un plazo definido, y qué porcentaje del total representan.
-
Cuentas sin responsable asignado, que son las candidatas a convertirse en huérfanas.
-
Permisos no certificados en la última revisión periódica, y qué se hizo con ellos.
|
La baja segura de cuentas en Linux, que incluye el bloqueo real frente al simple bloqueo de contraseña, la revocación de claves SSH y la detección de archivos huérfanos, se desarrolla en la guía de administración de usuarios y grupos. |
4. Modelos de control de acceso
Un modelo de control de acceso define quién decide los permisos y con qué criterio. Los cuatro modelos principales se diferencian en esas dos preguntas.
Las dos no se reparten por igual entre ellos. El DAC y el MAC responden sobre todo a quién decide, el propietario del recurso o una autoridad central, mientras que el RBAC y el ABAC responden sobre todo con qué criterio se decide, por el papel que desempeña la persona o por los atributos de la situación. De ahí que puedan combinarse sin estorbarse.
4.1. Control de acceso discrecional, DAC
El propietario del recurso decide quién puede acceder a él. Es el modelo de los permisos de archivos de Linux, de las ACL y de las carpetas compartidas de Windows. En un equipo compartido, quien crea un documento decide quién más puede leerlo o modificarlo, y puede cambiar esa decisión cuando quiera sin consultar con nadie.
-
Ventajas: flexible y sencillo de administrar a pequeña escala.
-
Inconvenientes: depende de las decisiones de cada usuario, que pueden ser erróneas. Un proceso comprometido hereda todos los permisos de su usuario, y no existe una política corporativa que se imponga sobre el propietario.
-
En Linux: los permisos de usuario, grupo y otros de cada archivo, y las listas de control de acceso.
-
En Windows: los permisos NTFS, cuya lista de control se llama precisamente discrecional, DACL, y que el propietario del archivo siempre puede modificar.
4.2. Control de acceso obligatorio, MAC
Una autoridad central define la política, y ni siquiera el propietario puede modificarla. Cada sujeto y cada objeto reciben una etiqueta, como Confidencial o Secreto, y el sistema compara ambas antes de permitir el acceso. En un servidor, el uso habitual no son las etiquetas militares sino el confinamiento de los servicios, de modo que quien compromete el servidor web no alcanza los archivos que la etiqueta de ese servicio no autoriza, aunque el proceso se ejecute como root.
-
Ventajas: protección frente a errores de usuarios y frente a procesos comprometidos, porque la política no depende de ellos.
-
Inconvenientes: configuración compleja y poco flexible.
-
En Linux: SELinux y AppArmor, este último en el Ejercicio 4.
-
En Windows: el control de integridad obligatorio, que etiqueta procesos y objetos con niveles como bajo o medio, de modo que un navegador en modo protegido no puede escribir en objetos de nivel superior aunque los permisos NTFS lo permitan.
4.3. Control de acceso basado en roles, RBAC
Los permisos se asignan a roles, que representan funciones de la organización, y las personas obtienen permisos al recibir un rol. En un banco, el rol Cajero permite operar con cuentas y el rol Director permite autorizar préstamos.
-
Ventajas: se alinea con la estructura de la organización, escala bien y facilita las auditorías, ya que basta revisar qué roles tiene cada persona.
-
Inconvenientes: en organizaciones complejas puede aparecer una explosión de roles, y no expresa con naturalidad condiciones contextuales como la hora o la ubicación.
-
En Linux: grupos y reglas de
sudoersasociadas a grupos, como se practica en el Ejercicio 2. -
En Windows: los grupos de seguridad del dominio y los roles de administración de Active Directory o de Entra ID.
4.4. Control de acceso basado en atributos, ABAC
La decisión se toma evaluando atributos del sujeto, del recurso, de la acción y del entorno: cargo, departamento, clasificación del documento, hora, ubicación o estado del dispositivo. En un hospital, un médico solo puede consultar los expedientes de los pacientes asignados a su servicio y durante su turno.
-
Ventajas: granularidad y flexibilidad máximas, con políticas muy expresivas.
-
Inconvenientes: la complejidad de definir, probar y auditar las políticas es considerablemente mayor.
-
En Linux: los módulos de PAM que evalúan condiciones del entorno, como
pam_timeopam_access, que se practican en el Ejercicio 3. -
En Windows: el control de acceso dinámico de Windows Server, que decide con notificaciones del usuario y propiedades del recurso, y el acceso condicional de Entra ID, que añade la ubicación, el horario y el estado del dispositivo.
4.5. Comparativa
| Modelo | Quién define los permisos | Flexibilidad | Control central | Ejemplo típico |
|---|---|---|---|---|
DAC |
El propietario del recurso |
Alta |
Bajo |
Permisos |
MAC |
Una autoridad central |
Baja |
Muy alto |
SELinux, AppArmor |
RBAC |
El administrador, por roles |
Alta |
Alto |
Grupos y |
ABAC |
Una política basada en atributos |
Muy alta |
Alto |
Acceso condicional por contexto |
En la práctica se combinan: el DAC protege los archivos de cada usuario, el MAC contiene los servicios, el RBAC organiza a las personas y el ABAC añade condiciones contextuales. Este es también el planteamiento de las arquitecturas de confianza cero.
|
Los modelos DAC y las listas de control de acceso de Linux se practican en la guía de permisos y control de acceso básico. |
|
Con los modelos explicados en esta sección, ya puede realizar el Ejercicio 2. Un rol RBAC con sudoers, el Ejercicio 3. Control de acceso basado en atributos, ABAC, con |
5. Arquitectura de la decisión de acceso
Los modelos anteriores explican con qué criterio se decide, pero no dónde se decide. Cuando esa pregunta no se responde de forma explícita, la comprobación de permisos acaba dispersa por el código de cada aplicación, repetida en cada módulo y escrita de una manera distinta por cada equipo de desarrollo. El resultado es una organización incapaz de responder a las dos preguntas elementales de cualquier auditoría de accesos, quién puede acceder hoy a un recurso determinado y por qué se concedió un acceso concreto del pasado. El principio de diseño que lo evita consiste en separar la decisión de su aplicación y concentrar la primera en un componente propio.
Esa separación se formaliza en cuatro funciones lógicas que proceden del estándar XACML de OASIS y que reaparecen con la misma semántica en NIST SP 800-162, que describe el ABAC, y en NIST SP 800-207, que define la arquitectura de confianza cero. Son funciones lógicas, no necesariamente procesos ni máquinas distintas, porque un mismo programa puede desempeñar varias a la vez. Conviene distinguirlas porque cada una tiene un responsable, una superficie de ataque y unas necesidades de auditoría diferentes.
5.1. Las cuatro funciones
| Función | Responsabilidad | Pregunta que responde | Ejemplos reales |
|---|---|---|---|
PEP (Policy Enforcement Point) |
Intercepta cada intento de acceso, consulta al decisor y aplica el resultado sin interpretarlo |
¿Dejo pasar esta petición? |
Pasarela inversa, servidor web, |
PDP (Policy Decision Point) |
Evalúa la política vigente con los atributos disponibles y emite una decisión |
¿Cumple esta petición la política? |
Motor XACML, Open Policy Agent, servidor RADIUS, servidor de seguridad de SELinux |
PIP (Policy Information Point) |
Suministra los atributos del sujeto, del recurso, de la acción y del entorno |
¿Con qué datos cuento para decidir? |
Directorio LDAP, inventario de equipos, hora del sistema, dirección de origen, estado del antivirus |
PAP (Policy Administration Point) |
Redacta, revisa, versiona y publica las políticas |
¿Qué política está vigente y quién la cambió? |
Consola de políticas, repositorio Git con la política como código, |
De ese reparto se derivan dos reglas que no admiten excepción. El PEP nunca decide por sí mismo, ni siquiera cuando conoce la respuesta, porque en cuanto empieza a interpretar la política aparece una segunda política implícita que nadie audita. Y el PDP nunca aplica la decisión, de modo que su compromiso no concede acceso de forma directa, sino que falsea las respuestas que otros aplican. NIST SP 800-207 traslada esa frontera a su arquitectura y sitúa el PDP y el PAP en el plano de control, separado del plano de datos por donde circula el tráfico que el PEP vigila.
5.2. Recorrido de una solicitud
El diagrama anterior numera los pasos de un acceso completo. Supóngase que la usuaria maria intenta consultar un expediente a través de una pasarela corporativa:
-
El responsable de seguridad redacta la política en el PAP y la publica. Hasta ese momento ningún otro componente conoce la regla.
-
mariasolicita el recurso. La petición llega al PEP, que es el único camino hacia el expediente. -
El PEP no resuelve nada por su cuenta y envía una consulta de decisión al PDP con el sujeto, el recurso y la acción pretendida.
-
El PDP necesita atributos que la petición no contiene y los pide al PIP, como el servicio al que está adscrita
maria, la clasificación del expediente o la hora. -
El PIP devuelve los valores desde su fuente autorizada.
-
El PDP evalúa la política y responde permitiendo o denegando, con las obligaciones que correspondan.
-
El PEP aplica la decisión y concede o bloquea el acceso al recurso.
Los atributos pueden llegar al PDP de dos maneras. En el modelo push, viajan dentro de la propia consulta, normalmente en un token firmado por el proveedor de identidad, lo que resulta rápido pero congela el valor en el instante de la emisión. En el modelo pull, que son los pasos 3 y 4, el PDP los consulta en el PIP en el momento de decidir, con lo que obtiene datos frescos a costa de latencia y de una dependencia más. La elección no es inocua, porque un atributo volátil como la postura de un equipo pierde su sentido si se evalúa con el valor que tenía al abrir la sesión.
5.3. Decisiones, obligaciones y conflictos
Un PDP no devuelve únicamente un sí o un no. XACML define cuatro resultados, y los dos últimos concentran la mayoría de los fallos de autorización.
| Resultado | Significado | Qué debe hacer el PEP |
|---|---|---|
Permitir |
Una regla aplicable la autoriza |
Conceder el acceso y cumplir las obligaciones |
Denegar |
Una regla aplicable la prohíbe |
Bloquear y registrar el evento |
No aplicable |
Ninguna regla alcanza a la petición |
Bloquear, por denegación por defecto |
Indeterminado |
La evaluación falla, por ejemplo si el PIP no responde |
Bloquear y alertar de la indisponibilidad |
Interpretar el no aplicable como una autorización convierte cualquier hueco de la política en un permiso silencioso. Es lo que se comprueba en el Ejercicio 3, donde pam_time permite el acceso cuando ninguna regla alcanza al usuario, en contra de la denegación por defecto del apartado 2.3.
Cuando varias reglas discrepan, decide el algoritmo de combinación declarado en la política. Los dos habituales son la prevalencia de la denegación, donde un solo «denegar» anula cualquier «permitir», y la primera regla aplicable, donde el orden de escritura forma parte de la política. Por eso en sudoers manda la última regla coincidente y una línea permisiva al final deja sin efecto a las anteriores.
La decisión puede llevar además obligaciones, acciones que el PEP debe ejecutar para que la autorización sea válida, como exigir un segundo factor, conceder el recurso en modo de solo lectura o limitar la duración de la sesión. Un PEP que las ignora concede más acceso del autorizado aunque la decisión fuese correcta.
5.4. Correspondencia con los mecanismos reales
El vocabulario anterior no describe solo productos corporativos. Los mecanismos que se estudian en el resto del curso encajan en el mismo esquema, y reconocerlo ayuda a saber dónde buscar cuando un acceso no se comporta como se espera.
| Escenario | PEP | PDP | PIP | PAP |
|---|---|---|---|---|
Elevación con |
El binario |
El analizador de la política de |
|
|
Autenticación con PAM |
El servicio que abre la pila, como |
Los módulos de la pila, como |
Hora del sistema, terminal, dirección de origen, pertenencia a grupos |
Archivos de |
Confinamiento con SELinux |
Los ganchos del núcleo en cada llamada al sistema |
El servidor de seguridad del núcleo |
Etiquetas del proceso y del archivo |
La política compilada y |
Acceso a la red con 802.1X |
El conmutador o el punto de acceso |
El servidor RADIUS |
El directorio corporativo y el inventario de equipos |
La configuración de políticas del servidor RADIUS |
Aplicación web de confianza cero |
La pasarela inversa consciente de la identidad |
Open Policy Agent o el motor del proveedor de identidad |
Reclamos del token, postura del dispositivo, geolocalización |
Repositorio de políticas como código |
En un caso tan cotidiano como sudo, las cuatro funciones se distinguen incluso en la línea de órdenes, y cada una tiene su comprobación asociada:
# PAP: redactar la política en un archivo propio, con validación de sintaxis al guardar
sudo visudo -f /etc/sudoers.d/operadores
# PAP: verificar que el conjunto de la política es sintácticamente correcto
sudo visudo -c
# PDP: consultar qué decidiría la política para un usuario, sin ejecutar nada
sudo -l -U maria
# Trazabilidad: comprobar qué decisión se aplicó realmente y sobre qué orden
sudo journalctl -t sudo --since today
La diferencia entre sudo -l -U maria y la lectura manual del archivo es la que hay entre consultar al decisor y suponer su respuesta. El primero evalúa la política completa, con sus inclusiones y su algoritmo de combinación, que es justo lo que la lectura a ojo suele interpretar mal.
Separar estas funciones permite cambiar la política sin modificar las aplicaciones, centralizar la auditoría de las decisiones y aplicar un criterio homogéneo a servicios muy distintos. La guía de confianza cero despliega esta arquitectura completa en un laboratorio, con una pasarela que actúa de PEP y un motor de políticas que resuelve cada petición, y el capítulo de autenticación centralizada muestra su versión más veterana en los protocolos RADIUS y TACACS+.
6. Factores de autenticación
Un factor de autenticación es una categoría de prueba de identidad. La clasificación tradicional distingue tres, a las que se suma una cuarta categoría, el contexto, con matices importantes.
| Factor | Qué prueba | Ejemplos | Debilidad característica |
|---|---|---|---|
Conocimiento |
Algo que el usuario sabe |
Contraseña, frase de paso, PIN |
Se adivina, se roba por engaño o se reutiliza |
Posesión |
Algo que el usuario tiene |
Llave FIDO2, tarjeta inteligente, aplicación TOTP |
Se pierde, se roba o se retransmite |
Inherencia |
Algo que el usuario es |
Huella dactilar, rostro, iris |
No se puede cambiar si se filtra |
Contexto |
Dónde, cuándo y desde qué |
Ubicación, red, dispositivo, horario |
Puede falsearse y produce falsos positivos |
Dos precisiones son esenciales:
-
Los factores deben ser de categorías distintas. Dos pruebas del mismo factor, como una contraseña y una pregunta secreta, no constituyen autenticación multifactor, porque un mismo ataque, como un phishing, las obtiene ambas.
-
El contexto no es un factor propiamente dicho. NIST no lo considera un autenticador, porque no demuestra por sí mismo la identidad. Se utiliza como señal de riesgo para endurecer o relajar las exigencias, como se estudia en el capítulo de autenticación multifactor.
El resto de la guía recorre cada factor con el mismo esquema: cómo funciona, qué políticas son recomendables y cómo lo atacan.
7. Ejercicios prácticos
Los ejercicios están diseñados para realizarse en orden sobre una máquina virtual Ubuntu o Debian de pruebas. Todos los archivos se crean en ~/lab_aaa. El último ejercicio deja el sistema en su estado original.
|
No realice estos ejercicios en un servidor en producción. Algunos pasos crean cuentas y reglas de |
| Nº | Ejercicio | Competencia que desarrolla |
|---|---|---|
1 |
Distinguir las cuatro fases en las evidencias reales |
|
2 |
Implementar y auditar un control de acceso basado en roles |
|
3 |
Decidir según un atributo del entorno, no solo según el rol |
|
4 |
Imponer una política que ni el propietario ni |
|
5 |
Revertir los cambios realizados |
7.1. Ejercicio 1. El modelo AAA en un registro de autenticación
Realice los siguientes pasos:
-
Cree el directorio de trabajo y el registro de muestra
auth_ejemplo.log:mkdir -p ~/lab_aaa sudo nano ~/lab_aaa/auth_ejemplo.logAñade el siguiente contenido al archivo.
Oct 19 09:01:02 srv01 sshd[2101]: Invalid user admin from 198.51.100.7 port 51022 Oct 19 09:01:05 srv01 sshd[2101]: Failed password for invalid user admin from 198.51.100.7 port 51022 ssh2 Oct 19 09:14:40 srv01 sshd[2188]: Accepted publickey for maria from 192.0.2.10 port 50444 ssh2: ED25519 SHA256:Zk3... Oct 19 09:14:40 srv01 sshd[2188]: pam_unix(sshd:session): session opened for user maria(uid=1001) by (uid=0) Oct 19 09:20:11 srv01 sudo: maria : TTY=pts/0 ; PWD=/home/maria ; USER=root ; COMMAND=/usr/bin/systemctl status ssh Oct 19 09:21:37 srv01 sudo: maria : command not allowed ; TTY=pts/0 ; PWD=/home/maria ; USER=root ; COMMAND=/usr/bin/vim /etc/shadow Oct 19 09:45:03 srv01 sshd[2188]: pam_unix(sshd:session): session closed for user maria -
Clasifique cada línea en una de las cuatro fases del modelo AAA y anote el dato del propio registro que lo justifica. Resuma qué ocurrió con el usuario
adminy con el usuariomaria.Solución
Hora Evento del registro Fase Dato que lo justifica 09:01:02
Invalid user adminIdentificación
Se declara el identificador
adminy el sistema responde que no corresponde a ninguna cuenta, de modo que el intento no pasa de esta fase09:01:05
Failed password … adminAutenticación
Se aporta una prueba, la contraseña, y se rechaza. El
invalid userrepetido confirma que la cuenta tampoco existía09:14:40
Accepted publickey … mariaAutenticación
La prueba es una firma con clave pública ED25519 y se acepta. La huella
SHA256:Zk3…identifica la clave concreta09:14:40
session opened … uid=1001Trazabilidad
Marca el inicio de la sesión y deja constancia de la resolución del nombre a su identificador interno,
uid=100109:20:11
sudo … systemctl status sshAutorización
Una vez autenticada, se decide qué puede hacer. La orden se permite y queda registrada con su ruta completa
09:21:37
sudo … command not allowedAutorización
Misma fase y resultado contrario, la orden se deniega. El motivo que anota
sudo,command not allowed, indica que la cuenta sí figura ensudoerspero esa orden no le está permitida09:45:03
session closed … mariaTrazabilidad
Cierra el intervalo abierto a las 09:14:40 y permite medir la duración de la sesión
Qué ocurrió con
admin. Un intento de acceso desde198.51.100.7, una dirección ajena a la red de la organización, contra una cuenta que no existe. El intento se detuvo en la autenticación y nunca llegó a la autorización, de modo que no hubo acceso ni sesión. El patrón, un nombre genérico probado desde una dirección desconocida, es el inicio característico de un ataque de fuerza bruta o de un barrido de cuentas, y lo que conviene vigilar es su repetición.Qué ocurrió con
maria. Un acceso legítimo desde192.0.2.10con clave pública, sin contraseña de por medio. Durante la sesión ejecutó dos órdenes consudo, una permitida y otra denegada por no estar incluida en su regla, y cerró sesión a los treinta minutos. El registro permite reconstruir la secuencia completa, quién entró, cómo demostró su identidad, qué intentó hacer y con qué resultado, que es justamente lo que aportan las cuatro fases juntas.Las dos primeras líneas muestran además por qué identificación y autenticación son fases distintas. El atacante llegó a declarar una identidad, que es la primera, pero no pudo demostrarla, que es la segunda.
7.2. Ejercicio 2. Un rol RBAC con sudoers
Realice los siguientes pasos:
-
Cree los usuarios
aliceybob, y el gruposoporte. Añada solo aaliceal grupo. El grupo representa el rol «técnico de soporte».Solución
# Crea las cuentas alice y bob con directorio personal sudo useradd -m alice sudo useradd -m bob # Crea el grupo soporte, que representará el rol «técnico de soporte» sudo groupadd soporte # Asigna alice al grupo soporte como grupo suplementario sudo usermod -aG soporte alice # Comprueba la pertenencia de cada una id alice id bobbobqueda fuera del rol a propósito, para disponer de un caso de contraste en los pasos siguientes. Lo que diferencia a una cuenta de la otra no es ningún permiso concedido a su nombre, sino la pertenencia al grupo, que es la idea sobre la que se apoya el control basado en roles. -
Cree la regla
/etc/sudoers.d/soporteque permita a los miembros del grupo ejecutar únicamentesystemctl status sshysystemctl status croncomoroot, con permisos440. Valide la sintaxis antes de darla por buena.Solución
# Crea y edita la regla con visudo, que bloquea el archivo y valida la sintaxis al guardar sudo visudo -f /etc/sudoers.d/soporteEscriba en el editor una única línea, que autoriza al grupo
soportea ejecutar solo esas dos órdenes comoroot:%soporte ALL=(root) /usr/bin/systemctl status ssh, /usr/bin/systemctl status cron# visudo crea el archivo con permisos 640, así que se ajustan a la convención sudo chmod 440 /etc/sudoers.d/soporte # Comprobación final de la sintaxis sudo visudo -cf /etc/sudoers.d/soporteLa comprobación responde
/etc/sudoers.d/soporte: parsed OK.Por qué con
visudoy no con un editor cualquiera.visudobloquea el archivo para que nadie lo modifique a la vez y, sobre todo, lo valida antes de instalarlo. Ante un error de sintaxis no lo da por bueno, sino que señala la línea y la columna y pregunta qué hacer, con la opción de volver a editar o de salir sin guardar. Esto no es un formalismo, porque un error ensudoersdeja el sistema sinsudooperativo, y si no queda otra vía de acceso administrativo, recuperarlo obliga a arrancar en modo de rescate.Cómo se lee la regla. El
%que precede al nombre indica que la concesión es para un grupo y no para un usuario, y es lo que la convierte en un rol. Las rutas absolutas con sus argumentos acotan la concesión a esas dos órdenes exactas, de modo quesystemctl restart sshqueda fuera. -
Compruebe qué puede hacer cada usuario y explique por qué la gestión por roles simplifica la baja de
alice.Solución
# Lista los comandos que alice puede ejecutar con sudo gracias a su pertenencia al grupo soporte sudo -l -U alice # Lista los comandos que bob puede ejecutar con sudo. Al no pertenecer al grupo, no tendrá permisos sudo -l -U bob # Retira a alice del rol y vuelve a consultar, para ver el efecto de la baja sudo deluser alice soporte sudo -l -U aliceLas dos primeras consultas devuelven lo siguiente:
User alice may run the following commands on srv01: (root) /usr/bin/systemctl status ssh, /usr/bin/systemctl status cron User bob is not allowed to run sudo on srv01.Por qué el rol simplifica la baja. Los permisos no residen en la cuenta de
alice, sino en el grupo, de modo quedeluser alice soportese los revoca todos de una vez y la última consulta pasa a responderUser alice is not allowed to run sudo on srv01. Si cada permiso se hubiera concedido a su nombre, la baja obligaría a localizar y editar cada regla, que es justo donde se olvidan accesos y quedan los permisos residuales de los que habla la sección 3.La otra cara de esa misma propiedad es el alta. Incorporar a otra persona al puesto consiste en añadirla al grupo, sin tocar
sudoers.Conviene retener un detalle operativo. La pertenencia a los grupos se resuelve al iniciar sesión, así que
sudo -l -U alicerefleja el cambio de inmediato, porque consulta los archivos del sistema, pero una sesión quealiceya tuviera abierta conservaría el grupo en sus credenciales hasta que la cerrase. -
Responda: ¿qué modelo de control de acceso es el del paso anterior? ¿Cómo añadiría una condición horaria para convertirlo en un control con atributos y qué módulo de PAM lo permitiría?
Solución
Qué modelo es. Es RBAC, control de acceso basado en roles, descrito en el apartado 4.3. El permiso no se concede a
aliceni abob, sino al rolsoporte, y las personas lo reciben o lo pierden al entrar o salir del grupo. La prueba está en el paso anterior, donde la misma cuenta pasa de autorizada a no autorizada sin quesudoerscambie ni una línea.Cómo añadir la condición horaria. Una restricción del tipo «solo en horario laboral» no depende del rol sino de una circunstancia del acceso, así que al incorporarla el control adquiere un componente de ABAC, basado en atributos, como explica el apartado 4.4. El atributo es aquí el momento del intento, que es un atributo de entorno.
Con qué módulo.
sudoersno entiende de horarios, de modo que la condición no se impone ahí sino en PAM, con el módulopam_timey su archivo/etc/security/time.conf, donde se declara qué usuarios o grupos pueden acceder a qué servicios y en qué franjas. La regla se añade a la pilaaccountdel servicio correspondiente y el módulo se estudia en la guía de PAM.Conviene fijarse en el reparto de papeles, porque es el de la sección 5.
sudoersresponde a qué puede hacer el rol ypam_timeresponde a cuándo, de manera que la política queda repartida entre dos puntos de decisión que hay que mantener coherentes.
7.3. Ejercicio 3. Control de acceso basado en atributos, ABAC, con pam_time
En el ejercicio anterior el permiso dependía solo del rol. Aquí la decisión dependerá además de un atributo del entorno, la hora del intento, que es lo que caracteriza al control basado en atributos del apartado 4.4. La impone el módulo pam_time, que se estudia a fondo en la guía de PAM.
Realice los siguientes pasos:
-
Instale
pamtestery cree el servicio PAM de pruebas/etc/pam.d/laboratorio, con una pilaaccountque consulte apam_time.Solución
# Actualiza el índice de paquetes sudo apt update # pamtester permite evaluar una pila de PAM sin iniciar sesión de verdad sudo apt install -y pamtester # Crea el servicio de pruebas sudo nano /etc/pam.d/laboratorioaccount required pam_time.so account required pam_permit.soEl servicio se crea aparte a propósito. Así la condición horaria se prueba sobre una pila propia y no sobre
loginnisshd, de modo que un error no deja a nadie fuera del sistema.pam_permitcierra la pila con un resultado positivo cuandopam_timeno se opone. -
Añada a
/etc/security/time.confuna regla que permita aaliceusar ese servicio a cualquier hora y compruebe el resultado conpamtester.Solución
# Añade la regla al final del archivo echo 'laboratorio;*;alice;Al0000-2400' | sudo tee -a /etc/security/time.conf # Evalúa la pila account del servicio para alice sudo pamtester laboratorio alice acct_mgmtLa respuesta es
pamtester: account management done, es decir, acceso permitido.La regla tiene cuatro campos separados por
;, que son el servicio, el terminal, los usuarios y las franjas horarias. EnAl0000-2400, elAlsignifica todos los días de la semana, frente aWkpara los laborables oWdpara el fin de semana, y el resto es el intervalo en formato de veinticuatro horas. -
Sustituya la franja por otra que no incluya la hora actual y repita la comprobación. Pruebe después con
bob, que no aparece en nEOFinguna regla.Solución
# Consulta la hora del sistema para elegir una franja que la excluya date +%H:%M # Deja una sola regla, con una franja de madrugada sudo sed -i '/^laboratorio;/d' /etc/security/time.conf echo 'laboratorio;*;alice;Al0300-0400' | sudo tee -a /etc/security/time.conf # Misma cuenta, mismo servicio, decisión contraria sudo pamtester laboratorio alice acct_mgmt # bob no figura en ninguna regla del servicio sudo pamtester laboratorio bob acct_mgmtAhora
alicerecibepamtester: Permission denied, mientras quebobobtieneaccount management done. Si está trabajando entre las tres y las cuatro de la madrugada, elija otra franja que no contenga la hora que muestradate.El resultado de
bobes el detalle más importante del ejercicio.pam_timepermite cuando ninguna regla coincide, de modo que el archivo no expresa una política completa salvo que se escriba una regla que alcance a todos los usuarios, comolaboratorio;*;*;Wk0800-2000. Es el contraste con la denegación por defecto de la sección 2.3. -
¿Qué atributo ha cambiado la decisión y por qué esto es ABAC y no RBAC? ¿Qué pieza hace de PEP, de PDP, de PIP y de PAP?
Solución
Qué ha cambiado. Entre los dos pasos anteriores no se ha tocado la cuenta de
alice, ni sus grupos, ni ningún permiso. Lo único distinto es la relación entre la hora del intento y la franja permitida. Con RBAC esa distinción no cabe, porque el rol dealicees el mismo a las diez de la mañana que a las tres de la madrugada y la respuesta tendría que ser idéntica. La decisión depende de un atributo del entorno, y por eso el control pasa a ser de los basados en atributos, ABAC.El reparto de funciones de la sección 5 aparece aquí completo:
Función Pieza del ejercicio PAP, donde se redacta la política
El archivo
/etc/security/time.confPDP, el que decide
El módulo
pam_time, que compara la hora con la franjaPIP, el que aporta los atributos
El reloj del sistema y el nombre de la cuenta
PEP, el que aplica la decisión
La pila
accountdel servicio, que es quien concede o deniegaConviene fijarse en que el PEP y el PDP están separados de verdad.
pam_timeno abre ni cierra ninguna sesión, solo emite un resultado, y es la pila del servicio la que actúa en consecuencia. Cambiar la política consiste en editartime.conf, sin tocar ninguna aplicación.
7.4. Ejercicio 4. Control de acceso obligatorio, MAC, con AppArmor
En los ejercicios anteriores la decisión dependía del rol o de un atributo del entorno, pero en todos ellos el propietario del archivo conservaba la última palabra sobre sus permisos. Aquí la política la impone el sistema y no la puede levantar ni el propietario ni root, que es lo que caracteriza al control obligatorio del apartado 4.2. Ubuntu incorpora AppArmor activado de serie, de modo que no hay nada que instalar.
Realice los siguientes pasos:
-
Compruebe que AppArmor está activo y cuántos perfiles tiene cargados.
Solución
# Responde Yes si el módulo de seguridad está habilitado en el núcleo sudo aa-enabled # Resumen de los perfiles cargados sudo aa-status | head -3La salida indica cuántos perfiles están en modo enforce, el modo en el que la política se aplica de verdad. El otro modo posible es complain, donde la infracción se registra pero se permite, y sirve para afinar un perfil nuevo sin dejar el servicio inservible mientras tanto.
-
Prepare el escenario con dos archivos de permisos idénticos y una copia de
cat, que será el programa confinado. Compruebe que, sin ningún perfil, lee los dos.Solución
# Crea el directorio de trabajo y los dos archivos mkdir -p ~/lab_aaa/datos echo 'Contenido publico' > ~/lab_aaa/datos/publico.txt echo 'Contenido confidencial' > ~/lab_aaa/datos/secreto.txt chmod 644 ~/lab_aaa/datos/*.txt # Copia de cat sobre la que se aplicará el perfil cp /usr/bin/cat ~/lab_aaa/cat # Sin perfil, los permisos del archivo son lo único que decide ~/lab_aaa/cat ~/lab_aaa/datos/publico.txt ~/lab_aaa/cat ~/lab_aaa/datos/secreto.txtLos dos archivos se leen sin dificultad, porque quien ejecuta la orden es su propietario y los permisos
644se lo permiten. Esto es el DAC del apartado 4.1.Se trabaja sobre una copia para no confinar el
catdel sistema, ya que el perfil se asocia a la ruta del ejecutable. La copia debe conservar el nombrecat, porque desde Ubuntu 25.10 las órdenes básicas son un único binario que decide qué hacer según el nombre con el que se le invoca, y con cualquier otro nombre responderíaunknown program. -
Escriba un perfil que autorice a ese programa a leer solo
publico.txty cárguelo en el núcleo.Solución
sudo nano /etc/apparmor.d/lab-catinclude <tunables/global> /home/*/lab_aaa/cat { include <abstractions/base> include <abstractions/consoles> /home/*/lab_aaa/cat mr, /home/*/lab_aaa/datos/publico.txt r, }# Carga o recarga el perfil sudo apparmor_parser -r /etc/apparmor.d/lab-cat # Confirma que está cargado sudo aa-status | grep lab_aaaLa primera línea del perfil es la ruta del programa al que se aplica, donde el
*cubre el directorio personal de cualquier usuario. Dentro, cada regla concede un permiso sobre una ruta, siendorla lectura ymla proyección en memoria que el propio binario necesita para ejecutarse. Las dos abstracciones aportan los permisos mínimos de cualquier programa, como leer las bibliotecas del sistema o escribir en el terminal.Lo decisivo es lo que no aparece.
secreto.txtno figura en ninguna regla, y en AppArmor lo que no se concede queda denegado, que es la denegación por defecto del apartado 2.3. -
Compruebe que la política se impone sobre los permisos del archivo y sobre
root, y localice la evidencia en el registro.Solución
# Permitido por la política ~/lab_aaa/cat ~/lab_aaa/datos/publico.txt # Denegado, aunque los permisos del archivo lo permitan ~/lab_aaa/cat ~/lab_aaa/datos/secreto.txt # Sigue denegado con los permisos abiertos de par en par chmod 777 ~/lab_aaa/datos/secreto.txt ~/lab_aaa/cat ~/lab_aaa/datos/secreto.txt # Y también se le deniega a root sudo ~/lab_aaa/cat ~/lab_aaa/datos/secreto.txt # En cambio, el cat del sistema no está confinado y sí lo lee cat ~/lab_aaa/datos/secreto.txt # Evidencia de las denegaciones sudo dmesg | grep -i apparmor | grep lab_aaa | tail -3Las tres lecturas de
secreto.txtfallan conPermission deniedmientras que elcatdel sistema lo muestra sin problema, lo que demuestra que la restricción acompaña al programa y no al archivo. El registro deja estas dos líneas, recortadas aquí para que quepan.apparmor="DENIED" operation="open" profile="/home/*/lab_aaa/cat" name="/home/ubuntu/lab_aaa/datos/secreto.txt" requested_mask="r" denied_mask="r" apparmor="DENIED" operation="capable" profile="/home/*/lab_aaa/cat" capname="dac_read_search"La segunda es la más reveladora, ya que corresponde al intento con
sudo. Arootno se le deniega la lectura sin más, se le deniega la capacidaddac_read_search, que es justamente la que le permite saltarse los permisos de cualquier archivo. La política le retira la herramienta con la que habitualmente ignora al DAC. -
Razone por qué este control no se puede conseguir con permisos ni con
sudoers, y qué haría falta para levantar la restricción.Solución
Por qué no basta con el DAC. Los permisos y las ACL acompañan al archivo y describen quién es el usuario, de modo que cualquier proceso que se ejecute en su nombre hereda lo mismo. No hay manera de expresar que un programa concreto no pueda leer un archivo aunque lo ejecute su dueño. El perfil de AppArmor sí lo expresa, porque la etiqueta acompaña al programa, y por eso la copia confinada falla donde el
catdel sistema funciona.Por qué no basta con
sudoers. La regla desudodecide qué órdenes puede ejecutar una persona con privilegios, es decir, actúa antes de lanzar el programa. Aquí el programa se ejecuta siempre y lo que se controla es qué puede tocar una vez en marcha. Son controles complementarios, no alternativos.Qué haría falta para levantarla. Editar el perfil y volver a cargarlo con
apparmor_parser, que es una acción administrativa sobre el sistema y queda registrada. El propietario desecreto.txtno puede hacer nada desde su directorio para recuperar el acceso, y en esa asimetría está la diferencia entre un control discrecional y uno obligatorio.
7.5. Ejercicio 5. Limpieza del entorno
-
Elimine las cuentas, el grupo, la regla de
sudo, el perfil de AppArmor y el directorio de trabajo.# Retira la regla de sudo y el servicio PAM de pruebas sudo rm -f /etc/sudoers.d/soporte /etc/pam.d/laboratorio # Descarga el perfil de AppArmor y lo borra sudo apparmor_parser -R /etc/apparmor.d/lab-cat sudo rm -f /etc/apparmor.d/lab-cat # Borra la regla horaria añadida a time.conf sudo sed -i '/^laboratorio;/d' /etc/security/time.conf # Elimina las cuentas con su directorio personal y el grupo del rol sudo userdel -r alice sudo userdel -r bob sudo groupdel soporte # Borra el directorio de trabajo rm -rf ~/lab_aaa
8. Referencias
9. Licencia
Licencia CC BY-NC-ND 4.0
Esta página forma parte del curso Bastionado de Redes y Sistemas © 2026 de José Juan Sánchez Hernández y su contenido se distribuye bajo una licencia Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International.
Esta licencia exige que quienes reutilicen el material otorguen el debido crédito al autor. Permite copiar y redistribuir el material en cualquier medio o formato, únicamente en su forma original, y solo para fines no comerciales.