Protección de los usuarios y los procesos en Oracle® Solaris 11.2

Salir de la Vista de impresión

Actualización: Julio de 2014
 
 

Privilegios que protegen los procesos del núcleo

Un privilegio es un derecho que requiere un proceso para realizar una operación. El derecho se aplica en el núcleo. Un programa que funciona dentro de los límites del conjunto básico de privilegios funciona dentro de los límites de la política de seguridad del sistema. Los programas setuid root son ejemplos de programas que funcionan fuera de los límites de la política de seguridad del sistema. Mediante el uso de privilegios, los programas eliminan la necesidad de realizar llamadas a setuid root.

Los privilegios enumeran los tipos de operaciones que son posibles en un sistema. Los programas se pueden ejecutar con los privilegios exactos que permiten que el programa funcione correctamente. Por ejemplo, un programa que manipula los archivos puede necesitar los privilegios file_dac_write y file_flag_set. Estos privilegios en el proceso eliminan la necesidad de ejecutar el programa como root.

Históricamente, los sistemas no han seguido el modelo de privilegios, o el modelo de derechos, como se menciona en Aspectos básicos del usuario y derechos de procesos. En su lugar, los sistemas utilizaron el modelo de superusuario. En el modelo de superusuario, los procesos se ejecutaron como root o como un usuario. Los procesos de usuario se limitaban a trabajar en los directorios y los archivos del usuario. Los procesos root podían crear directorios y archivos en cualquier parte del sistema. Un proceso que requería la creación de un directorio fuera del directorio del usuario se ejecutaba con un UID=0, es decir, como root. La política de seguridad dependía del control de acceso discrecional (DAC, Discretionary Access Control) para proteger los archivos del sistema. Los nodos del dispositivo estaban protegidos por DAC. Por ejemplo, sólo los miembros del grupo sys podían abrir los dispositivos que pertenecían a ese grupo.

Sin embargo, los programas setuid, los permisos de archivo y las cuentas administrativas son vulnerables al uso indebido. Las acciones que un proceso setuid puede realizar son más numerosas que las acciones que requiere para completar su operación. Un programa setuid root puede verse comprometido por un intruso que luego se ejecuta como usuario root omnipotente. De modo similar, cualquier usuario con acceso a la contraseña root puede poner en peligro todo el sistema.

En cambio, un sistema que aplica la política con privilegios proporciona una gradación entre los derechos de usuario y los derechos de root. Es posible otorgar privilegios a un usuario para realizar actividades que van más allá de los derechos de los usuarios comunes, y root puede limitarse a menos privilegios que los que root posee actualmente. Con los derechos, un comando que se ejecuta con privilegios se puede aislar en un perfil de derechos y se puede asignar a un usuario o rol. Table 1–1 resume la gradación entre los derechos de usuario y los privilegios de raíz que el modelo de derechos proporciona.

El modelo de derechos proporciona mayor seguridad que el modelo de superusuario. Los privilegios que se eliminaron de un proceso no se pueden utilizar. Los privilegios de proceso pueden proporcionar una protección adicional para los archivos y los dispositivos confidenciales a diferencia de las protecciones DAC, que pueden utilizarse para obtener acceso.

Privilegios, luego, pueden restringir programas y procesos a las capacidades que el programa necesita únicamente. En un sistema que implementa este principio, un intruso que captura un proceso puede acceder sólo a aquellos privilegios que tiene el proceso. El resto del sistema no corre peligro.