Seguridad de Control de Acceso Lógico

La seguridad de control de acceso lógico se encarga de limitar el acceso a sistemas y datos mediante mecanismos como distintos modelos de control de acceso, la autenticación básica con usuario y contraseña, y el uso de listas de control de acceso que definen quién puede entrar a un recurso y qué acciones tiene permitidas.

ISO/IEC 27001:2022 - Anexo A.9
"La organización debe controlar el acceso físico y lógico a la información y a las instalaciones de procesamiento de información basándose en los requisitos de negocio y de seguridad."
Objetivo principal:
Los modelos de control de acceso definen la forma en que un sistema decide quién puede acceder a recursos digitales y qué operaciones puede realizar, asegurando que solo usuarios autorizados tengan acceso a la información.

Tipos de Control de Acceso

DAC

Discretionary Access Control: El propietario del recurso decide quién puede acceder y con qué permisos.

📌 Ejemplos:

  • Permisos de archivos en Linux/Windows
  • Compartir carpetas en Google Drive

MAC

Mandatory Access Control: El acceso se rige por políticas estrictas definidas por el sistema.

📌 Ejemplos:

  • SELinux (Security-Enhanced Linux)
  • AppArmor
  • Sistemas militares

RBAC

Role-Based Access Control: Los permisos se asignan de acuerdo con el rol del usuario.

📌 Ejemplos:

  • Active Directory
  • Bases de datos empresariales
  • Paneles de administración

ABAC

Attribute-Based Access Control: El acceso depende de atributos del usuario, recurso y contexto.

📌 Ejemplos:

  • Políticas de horario laboral
  • Acceso basado en ubicación
  • Sistemas cloud (AWS IAM)

DAC (Discretionary Access Control)

El control de acceso discrecional (DAC) se basa en la decisión del propietario del recurso, quien puede asignar, modificar o revocar permisos a otros usuarios. Es flexible y fácil de implementar, pero puede ser menos seguro si los usuarios no gestionan adecuadamente los permisos.

Ventaja: Flexibilidad total para el propietario.
Desventaja: Riesgo de mala configuración por usuarios inexpertos.
Ejemplo DAC: Permisos en Linux
┌─[usuario@linux]─[~]
└──╼ $ chmod 700 archivo_privado.txt
✓ Solo el propietario tiene acceso
└──╼ $ chmod 644 archivo_publico.txt
✓ El propietario escribe, otros solo leen

MAC (Mandatory Access Control)

El control de acceso obligatorio (MAC) está determinado por políticas de seguridad estrictas definidas por el sistema u organización. Los usuarios no pueden alterar estas reglas, lo que proporciona un alto nivel de seguridad y control, especialmente en entornos donde la confidencialidad es crítica.

Uso típico: Sistemas militares, gubernamentales y de alta seguridad donde la clasificación de información es obligatoria.
Verificar estado de SELinux (MAC en Linux)
┌─[root@linux]─[~]
└──╼ $ getenforce
Enforcing
└──╼ $ sestatus
SELinux status: enabled
Current mode: enforcing
Policy version: 33

RBAC (Role-Based Access Control)

El control de acceso basado en roles (RBAC) asigna permisos según el rol que desempeña el usuario dentro de la organización. Cada rol tiene permisos predefinidos, facilitando la administración de permisos y reduciendo errores.

RolPermisos típicos
AdministradorAcceso total a todos los recursos
GerenteLectura/escritura en informes, acceso a personal
EmpleadoLectura en documentos propios, escritura limitada
InvitadoSolo lectura en recursos públicos
Ventaja principal: RBAC facilita la administración de permisos a gran escala y asegura consistencia entre usuarios con funciones similares.

ABAC (Attribute-Based Access Control)

El control de acceso basado en atributos (ABAC) decide el acceso evaluando múltiples atributos, como características del usuario, del recurso y del contexto (ubicación, horario, dispositivo). Ofrece un control muy granular y adaptable, ideal para entornos dinámicos y complejos.

Atributos comunes en ABAC:
👤 Usuario: departamento, antigüedad, certificaciones
📄 Recurso: tipo, clasificación, propietario
🌍 Contexto: hora, ubicación, dispositivo, método de autenticación

Listas de Control de Acceso (ACL) en Linux

En Linux, una lista de control de acceso (ACL) es un mecanismo que extiende los permisos tradicionales (rwx) y permite definir permisos específicos para múltiples usuarios y grupos sobre archivos o directorios, más allá del propietario y el grupo principal.

Comandos ACL básicos
$ setfacl -m u:usuario:rwx archivo # Dar permisos a usuario
$ setfacl -m g:grupo:rx directorio/ # Dar permisos a grupo
$ getfacl archivo # Ver ACL actual
$ setfacl -x u:usuario archivo # Eliminar ACL

Ejercicios Prácticos en Linux

Instrucciones: Inicia cualquier distribución de Linux basada en Debian (Ubuntu, Kali, Debian) para realizar los ejercicios.

1

Dar permisos a un usuario específico (ACL básica)

Objetivo: Dar permisos a un usuario específico sin cambiar dueño/grupo.

Ejercicio ACL 1
$ sudo useradd juan
$ echo "datos importantes" > archivo.txt
$ setfacl -m u:juan:r archivo.txt
$ getfacl archivo.txt
✓ ACL configurada correctamente
2

Buzón de entregas (wx sin r)

Objetivo: Crear un "buzón de entregas" donde un usuario pueda depositar archivos sin poder listar lo que existe dentro.

Ejercicio ACL 2
$ mkdir entregas
$ setfacl -m u:ana:wx entregas
$ setfacl -m m::wx entregas
$ getfacl entregas
✓ Buzón configurado
3

Escenario completo: Solo lectura con archivos de prueba

Objetivo: Crear un escenario completo con archivos de prueba y verificar permisos.

Paso 1 - Crear escenario
$ mkdir -p ~/acl_read_demo
$ cd ~/acl_read_demo
$ mkdir docs
$ echo "manual" > docs/manual.txt
$ echo "notas" > docs/notas.txt
Paso 2 - Configurar permisos ACL
$ sudo useradd ana
$ chmod -R o-rwx docs
$ setfacl -m u:ana:rx docs
$ setfacl -R -m u:ana:r docs/
$ setfacl -m m::rx docs
✓ ACL configurada
Paso 3 - Probar acceso del usuario ana
$ sudo -u ana ls -la docs
total 8
drwxr-xr-x+ 2 user group 4096...
-rw-r--r--+ 1 user group 7... manual.txt
-rw-r--r--+ 1 user group 6... notas.txt
$ sudo -u ana cat docs/manual.txt
manual
$ sudo -u ana rm docs/notas.txt
rm: cannot remove 'docs/notas.txt': Permission denied
✓ Lectura permitida, escritura denegada (solo lectura)
Consejo adicional: Para verificar los cambios en ACL después de probar los ejercicios, puedes eliminar los usuarios de prueba con sudo userdel -r juan y sudo userdel -r ana.

¡Has completado el tutorial!

Ahora conoces los diferentes modelos de control de acceso (DAC, MAC, RBAC, ABAC) y sabes implementar ACL en Linux. Estos conocimientos son fundamentales para la administración segura de sistemas y para implementar políticas de seguridad efectivas según ISO/IEC 27001.