Mecanismos básicos de control de acceso
En cualquier sistema informático, especialmente si es multiusuario, el control de acceso sobre usuarios y recursos del mismo es un pilar fundamental para su seguridad. Por ello, es de gran importancia contar con mecanismos que proporcionen una apropiada segregación de privilegios y permisos de usuario, así como de la administración de los mismos y de los elementos relacionados.
Elementos bajo control. Sujetos y Objetos del sistema
Cuando hablemos de un sistema informático y particularmente hablando de control de acceso, mencionaremos frecuentemente los términos sujeto y objeto, elementos sobre los que se aplicará dicho control
Sujetos: Los sujetos del sistema son los usuarios, procesos, programas o hilos que operan sobre los recursos del dispositivo.
Objetos: referiremos como objetos los recursos del sistema como ficheros, directorios, servicios, dispositivos de entrada/salida, puertos TCP/UDP, etc.
Tipos de Control de Acceso.
Basándonos en las restricciones y control de acceso a sistemas, encontramos tres tipos principales: Control de Acceso Discrecional (DAC), Control de Acceso Basado en Roles (RBAC) y Control de Acceso Obligatorio (Mandatory Access Control, MAC)
Control de Acceso discrecional (Discretionary Access control, DAC): El control de acceso discrecional es un método de restricción de acceso a objetos que se basa en la identidad de los sujetos que pretenden operar o acceder sobre ellos. El ejemplo más representativo es el mecanismo de permisos establecido por el dueño (usuario/grupo) del sujeto. Así, es el propio dueño del objeto quien determina qué usuarios y con qué privilegios acceden a sus objetos. Este mecanismo de acceso está presente en la mayoría de sistemas operativos. En este tipo de control de acceso es habitual el uso de atributos (lectura, escritura, ejecución,etc.) para marcar los permisos aplicado al objeto. De igual forma hay un usuario propietario y unas opciones para compartir (grupos, otros usuarios..)
- Permisos DAC en un fichero en Windows -
En el caso concreto de sistemas UNIX/Linux, los objetos del sistema (ficheros, directorios, etc.) cuentan con ternas de atributos de lectura (r), escritura (w), y ejecución(x). Estos permisos son asignados por el usuario propietario (user), para el grupo (group) y para terceros (others, usuarios no propietarios y no pertenecientes al grupo).
En Linux con el comando ls -l podemos visualizar los permisos básicos DAC. En el siguiente ejemplo vemos un sistema, en el cual el usuario1, que pertenece al grupo1, ha fijado los permisos de lectura/escritura/ejecución (rwx) sí mismo como propietario. Los usuarios que pertenezcan a su grupo (grupo1) tienen permisos de lectura y escritura (rw-) y únicamente permisos de lectura para cualquier otro usuario (r--):
-Permisos de acceso discrecional (DAC), clásicos en sistemas *NIX-
De esto modo cualquier acción de lectura, escritura o ejecución que no se ajuste a estos permisos, será denegada:
-usuario2 puede leer pero no modificar el fichero1 del usuario1 por los permisos asignados-
Existen otras propiedades como las ACLs (control de lista de acceso) y otros permisos especiales como sticky bit, o permisos setuid, setgid (Linux)que añaden más opciones al control de acceso DAC, pero quedan fuera del alcance introductorio de esta parte.
Control de acceso basado en roles. (Role Base Access Control, RBAC)
El control de acceso discrecional no proporciona la granularidad suficiente para permitir una segmentación más definida y estructurada en un sistema complejo con multitud de usuarios y funciones. En este caso, un mecanismo de roles aporta mayor versatilidad. El control de acceso basado en roles consiste en la definición de perfiles (roles) a los que se les atribuyen una serie de características que aplican sobre los permisos y acciones que pueden llevar a cabo, incluyendo el control sobre otros perfiles. Es, en cierto modo un sistema jerárquico de clases. Muy utilizado en organizaciones con gran número de usuarios y donde se integran distintos grupos de trabajo o departamentos con funciones diferenciadas, como por ejemplo departamento de sistemas, departamento de desarrollo, comercial, servicios generales, etc. Con este mecanismo se segmenta y se organiza de forma eficaz el acceso a los objetos y las tareas. Casos muy representativos de estos mecanismos son entre otros LDAP, Active Directory de Microsoft Windows o FreeIPA de Fedora/Redhat. Algunos sistemas UNIX como Solaris o AIX también implementan este sistema de privilegios.
Control de acceso obligatorio (Mandatory Access Control): Este mecanismo de acceso se complementa con anteriores y añade una capa más de seguridad para el control de acceso y de privilegios. El mecanismo MAC se basa en un "etiquetado" de todo elemento del sistema y sobre las cuales se aplicarán las políticas de control de acceso configuradas. De este modo, cualquier operación de un sujeto sobre un objeto será comprobado las etiquetas y aplicando las políticas MAC establecidas para determinar si la operación está permitida, aún incluso cuando se hayan cumplido otros controles de seguridad. En contraste con el mecanismo discrecional de acceso, el usuario puede modificar permisos y etiquetas pero no puede fijar controles de acceso que supongan violación de las políticas MAC del sistema. Es responsabilidad de un usuario privilegiado establecer las políticas centrales MAC que gobernarán los controles a aplicar según el etiquetado establecido. Paradigmas representativos de estos métodos de control son SELinux en distribuciones Linux Redhat/Centos/Fedora o AppArmor en Linux SuSE.
- Tipos de Control de Acceso -
En un próximo artículo explicaremos en detalle un ejemplo de mecanismo de control MAC concretamente, SELinux.