Objetivo del laboratorio

Fundamento teórico: El control de acceso es uno de los pilares fundamentales de la seguridad de la información. Según el Informe de Investigación de Violaciones de Datos de Verizon 2024, el 86% de las violaciones de datos involucran credenciales robadas o mal uso de privilegios de acceso.

Este laboratorio tiene como objetivo implementar políticas de control de acceso robustas y sistemas de auditoría en Linux, aplicando los principios de RBAC, PoLP (Principio de Mínimo Privilegio), y trazabilidad según las buenas prácticas de ISO/IEC 27001:2022.

¿Qué aprenderás? Implementar modelos DAC/MAC/RBAC, configurar permisos especiales en Linux, usar PAM para autenticación, configurar auditd para monitoreo y generar reportes de cumplimiento normativo.

Requisitos y escenario

Escenario empresarial simulado: Una organización con 3 departamentos (Ventas, IT, RRHH) necesita implementar una política de control de acceso donde:
  • Ventas solo puede leer datos públicos y escribir en su área
  • IT tiene acceso administrativo a servidores
  • RRHH tiene acceso restringido a datos de empleados
  • Todos los accesos a datos sensibles deben ser auditados
  • Sistema Linux (Ubuntu Server 22.04/24.04 recomendado)
  • Usuario con privilegios sudo
  • Espacio en disco: 2 GB disponibles
  • Herramientas a instalar: auditd, acl, libpam-pwquality
Instalación de herramientas
$ sudo apt update && sudo apt install -y auditd acl libpam-pwquality
$ sudo systemctl enable auditd && sudo systemctl start auditd
$ auditctl -l
✓ Herramientas instaladas correctamente

Modelos de control de acceso

Teoría - Modelos de Control de Acceso: Existen tres modelos principales definidos por ISO 27001:
  • DAC (Discretionary Access Control): El propietario del recurso decide quién accede
  • MAC (Mandatory Access Control): El sistema aplica políticas obligatorias (SELinux/AppArmor)
  • RBAC (Role-Based Access Control): Permisos asignados por roles/funciones
1

Comparativa de modelos

ModeloDescripciónVentajasDesventajas
DAC (Unix/Linux)Propietario controla permisosFlexibleRiesgo de mala configuración
MAC (SELinux)Políticas del sistemaMuy seguroComplejo de configurar
RBAC (Roles)Permisos por funcionesEscalableRequiere diseño inicial
Verificar modelos activos
$ # Verificar DAC (permisos estándar)
$ ls -la /
$ # Verificar SELinux
$ getenforce
Disabled

Implementación RBAC en Linux

1

Crear estructura de usuarios y grupos

Crear grupos y usuarios
$ sudo groupadd ventas
$ sudo groupadd it
$ sudo groupadd rrhh
$ sudo groupadd auditores
$ sudo useradd -m -g ventas -s /bin/bash pedro_ventas
$ sudo useradd -m -g it -G sudo -s /bin/bash ana_it
$ sudo useradd -m -g rrhh -s /bin/bash maria_rrhh
$ sudo passwd pedro_ventas
Crear estructura de directorios
$ sudo mkdir -p /compartido/{ventas,it,rrhh,auditoria,publico}
$ sudo chown -R root:ventas /compartido/ventas
$ sudo chown -R root:it /compartido/it
$ sudo chown -R root:rrhh /compartido/rrhh
$ sudo chmod 770 /compartido/ventas
$ sudo chmod 750 /compartido/it
$ sudo chmod 750 /compartido/rrhh
$ sudo chmod 755 /compartido/publico
Pruebas de acceso RBAC
$ id pedro_ventas
uid=1001(pedro_ventas) gid=1001(ventas) groups=1001(ventas)
$ sudo -u pedro_ventas ls /compartido/ventas
✓ Acceso permitido
$ sudo -u pedro_ventas ls /compartido/rrhh
ls: cannot open directory '/compartido/rrhh': Permission denied
❌ Acceso denegado (correcto)
RBAC implementado correctamente! Los usuarios solo tienen acceso a los recursos correspondientes a su rol organizacional.

Permisos especiales y ACL

1

Configurar ACL para permisos granulares

Configuración avanzada de permisos
$ # Agregar ACL para otros departamentos
$ sudo setfacl -m g:ventas:rx /compartido/it
$ sudo setfacl -m g:rrhh:rx /compartido/ventas
$ sudo setfacl -m g:it:rx /compartido/rrhh
$ getfacl /compartido/it
# file: /compartido/it
# owner: root
# group: it
user::rwx
group::rwx
group:ventas:r-x
mask::rwx
other::---
$ # Configurar Sticky Bit
$ sudo chmod 1777 /compartido/publico
$ ls -ld /compartido/publico
drwxrwxrwt 2 root root 4096 May 1 10:00 /compartido/publico
Nota: El Sticky Bit (representado por la 't' final) asegura que solo el propietario de un archivo puede eliminarlo en directorios compartidos.

Autenticación PAM

1

Configurar políticas de contraseñas robustas

Configuración de pwquality (/etc/security/pwquality.conf)
# Configuración recomendada (ISO 27001):
minlen = 12 # Longitud mínima
dcredit = -1 # Al menos 1 dígito
ucredit = -1 # Al menos 1 mayúscula
lcredit = -1 # Al menos 1 minúscula
ocredit = -1 # Al menos 1 carácter especial
difok = 3 # Al menos 3 caracteres diferentes
maxrepeat = 2 # Máximo caracteres repetidos
Configurar expiración de contraseñas
$ sudo nano /etc/login.defs
PASS_MAX_DAYS 90 # Caducidad cada 90 días
PASS_MIN_DAYS 1 # Mínimo 1 día para cambiar
PASS_WARN_AGE 7 # Aviso 7 días antes
$ sudo chage -M 90 pedro_ventas
$ sudo chage -l pedro_ventas
Precaución: Siempre mantenga una sesión root activa en otra terminal mientras prueba políticas PAM para poder recuperarse de errores de configuración.

Auditoría con auditd

1

Configurar auditd para monitoreo de accesos

Reglas de auditoría (/etc/audit/rules.d/audit.rules)
# Monitoreo de archivos críticos
-w /etc/passwd -p wa -k identity_changes
-w /etc/shadow -p wa -k identity_changes
-w /etc/sudoers -p wa -k sudo_changes
# Monitoreo de directorios sensibles
-w /compartido/rrhh -p rwxa -k rrhh_data
# Monitoreo de comandos críticos
-a always,exit -S execve -F uid=0 -k root_cmds
Cargar reglas y buscar eventos
$ sudo auditctl -R /etc/audit/rules.d/audit.rules
$ sudo auditctl -l
$ sudo ausearch -k identity_changes
$ sudo aureport --failed --summary
✓ Sistema de auditoría configurado
¡Sistema de auditoría configurado! auditd ahora monitorea accesos a archivos sensibles, comandos privilegiados y cambios de configuración.

Resumen: Comandos esenciales

Cheatsheet - Control de Acceso y Auditoría
╔═══════════════════════════════════════════════════════════════════════╗
║ GESTIÓN DE USUARIOS ║
╚═══════════════════════════════════════════════════════════════════════╝
$ sudo groupadd nombre_grupo
$ sudo useradd -m -g grupo -s /bin/bash usuario
$ sudo usermod -aG grupo_extra usuario
$ id usuario
╔═══════════════════════════════════════════════════════════════════════╗
║ PERMISOS Y ACL ║
╚═══════════════════════════════════════════════════════════════════════╝
$ chmod 755 archivo
$ chmod 4755 archivo # SUID
$ chmod 1777 /tmp # Sticky Bit
$ setfacl -m u:usuario:rwx archivo
$ getfacl archivo
╔═══════════════════════════════════════════════════════════════════════╗
║ POLÍTICAS DE CONTRASEÑAS ║
╚═══════════════════════════════════════════════════════════════════════╝
$ sudo nano /etc/security/pwquality.conf
$ sudo nano /etc/login.defs
$ chage -l usuario
╔═══════════════════════════════════════════════════════════════════════╗
║ AUDITORÍA CON AUDITD ║
╚═══════════════════════════════════════════════════════════════════════╝
$ sudo auditctl -w /ruta -p rwxa -k etiqueta
$ sudo auditctl -l
$ sudo ausearch -k etiqueta
$ sudo aureport --summary

¿Qué sigue?

Certificaciones relacionadas: CISSP - dominio de Control de Acceso, CISA - auditoría de sistemas, ISO 27001 Lead Auditor - certificación para auditorías de cumplimiento.

SIEM centralizado

Implementa Wazuh o ELK Stack para centralizar logs

SELinux/AppArmor

Configura políticas MAC para aislar servicios

Autenticación 2FA

Implementa Google Authenticator con PAM

Zero Trust

Implementa políticas de confianza cero

¡Laboratorio completado!

Has implementado un sistema completo de políticas de acceso y auditoría: Modelos DAC/MAC/RBAC, permisos especiales y ACL, autenticación PAM con políticas robustas, auditoría continua con auditd. Estos conocimientos son fundamentales para roles de Security Administrator, Auditor de Sistemas, y Compliance Officer.