En esta entrada quiero refrescar la memoria a todos nuestros lectores acerca de las políticas de acceso más comunes en el área de la informática: Mandatory Acces Control (MAC) y Discretionary Acces Control (DAC). Asimismo, y si el tiempo me lo permite, me gustaría aprovechar para iniciar una serie de entradas acerca de SELinux.
Pero vayamos a la cuestión: ¿qué es el MAC, DAC y cuales son sus diferencias?
Discretionary Acces Control es una forma de acceso a recursos basada en los propietarios y grupos a los que pertenece un objeto. Se dice que es discrecional en el sentido de que un sujeto puede transmitir sus permisos a otro sujeto. La mayoría de sistemas Linux ahora mismo usan este tipo de acceso, estando los permisos orquestados por grupos y usuarios, pudiendo un usuario normal cambiar los permisos de los archivos que posee con el comando chmod.
Mandatory Acces Control en cambio se basa en políticas. Existen un conjunto de reglas de autorización (políticas) las cuales determinan si una operación sobre un objeto realizada por un sujeto esta o no permitida basándose en los atributos de ambos. En este caso, el Mandatory refleja el hecho de que las políticas están centralizadas y no pueden ser sobrescritas por un sujeto.
La diferencia, una vez descritas las dos políticas, salta a la vista. En DAC el acceso esta descentralizado, siendo el propietario de cada objeto el encargado de asignar los permisos de los diversos sujetos (grupos en el caso de unix) que accederán a ellas. En cambio con el MAC los objetos y los sujetos tan solo tienen atributos, pero son las políticas las que se encargan de autorizar o denegar una acción.
Como se ha comentado, en los entornos GNU/Linux lo habitual suele ser el sistema de control de acceso DAC, pero hay excepciones. Red Hat ha apostado fuerte por SELinux a partir de un desarrollo de la NSA en Diciembre del 2000 que fue aceptado dentro del kernel 2.6.0-test3, liberado en agosto del 2003, e implementado por primera vez dentro de RHEL 4. También Suse Linux quiso implementar un sistema MAC, y lo hizo a través de AppArmor, cuyo equipo de desarrollo mantuvo hasta el 2007. Su primera inclusión por defecto en Suse fue en SuSe Linux Enterpise Server 10.
Desde el punto de vista de la seguridad, MAC es más completo que DAC. MAC es un sistema centralizado, en el cual las decisiones de seguridad no recaen en el propietario de un objeto y es el sistema el que fuerza el cumplimiento de las políticas por encima de las decisiones de los sujetos, además de permitir una granularidad y control mayores. Pero, ¿si es más completo, porque no es el sistema más usado? Pues se podrían poner muchas razones, pero el hecho de que es algo relativamente nuevo en la informática (tanto SELinux como AppArmor son desarrollos posteriores a los años 90) junto con que es más complicado de configurar y mantener hace que aún no sea el sistema por defecto en todos los sistemas GNU/Linux, aunque ya se ha comentado que tanto Suse como Red Hat ya lo incluyen por defecto y muchas otras (Gentoo, Debian, Ubuntu) lo soportan de algún modo. En el “lado opuesto” Windows, desde su versión Windows Vista para usuarios y Windows 2008 para servidores también soporta MAC, pero dado mi profundo desconocimiento de este sistema, no he realizado referencia alguna.
Para futuras entradas intentare explicar el funcionamiento de SELinux y su configuración básica. Saludos, hasta la próxima, y pasen un buen fin de semana.
Muy buen artículo Javi. Yo me estuve pegando con la fedora 12, que incorpora políticas de SELinux de serie, y la verdad que mantenerlo es claramente complejo. Aunque claro esta, el actual sistema DAC en entornos Linux se está quedando MUY limitado.