JavaScript is required to for searching.
Omitir V�nculos de navegaci�n
Salir de la Vista de impresi�n
Administración de Oracle Solaris: servicios de seguridad     Oracle Solaris 11 Information Library (Español)
search filter icon
search icon

Información del documento

Prefacio

Parte I Descripción general de la seguridad

1.  Servicios de seguridad (descripción general)

Parte II Seguridad de sistemas, archivos y dispositivos

2.  Gestión de seguridad de equipos (descripción general)

3.  Control de acceso a sistemas (tareas)

4.  Servicio de análisis de virus (tareas)

5.  Control de acceso a dispositivos (tareas)

6.  Uso de la herramienta básica de creación de informes de auditoría (tareas)

7.  Control de acceso a archivos (tareas)

Parte III Roles, perfiles de derechos y privilegios

8.  Uso de roles y privilegios (descripción general)

Control de acceso basado en roles (descripción general)

RBAC: una alternativa al modelo de superusuario

Elementos y conceptos básicos de RBAC

Escalada de privilegios

Autorizaciones RBAC

Autorizaciones y privilegios

Aplicaciones con privilegios y RBAC

Aplicaciones que comprueban UID y GID

Aplicaciones que comprueban privilegios

Aplicaciones que comprueban autorizaciones

Perfiles de derechos de RBAC

Roles de RBAC

Shells de perfil y RBAC

Ámbito de servicio de nombres y RBAC

Consideraciones de seguridad al asignar directamente atributos de seguridad

Consideraciones de uso al asignar directamente atributos de seguridad

Privilegios (descripción general)

Privilegios con protección de procesos del núcleo

Descripciones de privilegios

Diferencias administrativas en un sistema con privilegios

Privilegios y recursos del sistema

Cómo se implementan los privilegios

Cómo obtienen privilegios los procesos

Asignación de privilegios

Ampliación de los privilegios de un usuario o rol

Restricción de los privilegios de un usuario o rol

Asignación de privilegios a una secuencia de comandos

Privilegios y dispositivos

Privilegios y depuración

9.  Uso del control de acceso basado en roles (tareas)

10.  Atributos de seguridad en Oracle Solaris (referencia)

Parte IV Servicios criptográficos

11.  Estructura criptográfica (descripción general)

12.  Estructura criptográfica (tareas)

13.  Estructura de gestión de claves

Parte V Servicios de autenticación y comunicación segura

14.  Autenticación de servicios de red (tareas)

15.  Uso de PAM

16.  Uso de SASL

17.  Uso de Secure Shell (tareas)

18.  Secure Shell (referencia)

Parte VI Servicio Kerberos

19.  Introducción al servicio Kerberos

20.  Planificación del servicio Kerberos

21.  Configuración del servicio Kerberos (tareas)

22.  Mensajes de error y resolución de problemas de Kerberos

23.  Administración de las políticas y los principales de Kerberos (tareas)

24.  Uso de aplicaciones Kerberos (tareas)

25.  El servicio Kerberos (referencia)

Parte VII Auditoría en Oracle Solaris

26.  Auditoría (descripción general)

27.  Planificación de la auditoría

28.  Gestión de auditoría (tareas)

29.  Auditoría (referencia)

Glosario

Índice

Privilegios (descripción general)

La gestión de derechos de procesos permite restringir procesos en el nivel de comando, usuario, rol o sistema. Oracle Solaris implementa la gestión de derechos de procesos a través de privilegios. Los privilegios disminuyen el riesgo de seguridad asociado a un usuario o un proceso que tiene capacidades completas de superusuario en un sistema. Los privilegios y RBAC ofrecen un modelo alternativo eficaz al modelo de superusuario tradicional.

Privilegios con protección de procesos del núcleo

Un privilegio es un derecho perfectamente definido que un proceso requiere 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 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.

Los privilegios enumeran de forma discreta 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. Esta capacidad elimina la necesidad de ejecutar el programa como root.

Históricamente, los sistemas no adoptaron el modelo de privilegios. En su lugar, los sistemas utilizaron el modelo de superusuario. En el modelo de superusuario, los procesos se ejecutan como root o como 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 al grupo sys.

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 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 permite una gradación entre las capacidades de usuario y las capacidades de root. Es posible otorgar a un usuario privilegios para realizar actividades que van más allá de las capacidades de los usuarios comunes, y root puede limitarse a menos privilegios que los que root posee actualmente. Con RBAC, un comando que se ejecuta con privilegios se puede aislar en un perfil de derechos y asignar a un usuario o rol. La Tabla 8-1 resume la gradación entre las capacidades de usuario y las capacidades de root que proporciona el modelo RBAC con privilegios.

El modelo de privilegios proporciona mayor seguridad que el modelo de superusuario. Los privilegios que se eliminaron de un proceso no se pueden utilizar. Los privilegios de proceso impiden que un programa o una cuenta administrativa obtengan acceso a todas las capacidades. Los privilegios de proceso pueden proporcionar una protección adicional para los archivos confidenciales, en donde las protecciones de DAC solamente pueden utilizarse para obtener acceso.

Los privilegios pueden restringir programas y procesos a las capacidades que el programa necesita únicamente. Esta capacidad se denomina principio de privilegio mínimo. 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.

Descripciones de privilegios

Los privilegios se agrupan de manera lógica de acuerdo con el área del privilegio.

Otros grupos lógicos incluyen CONTRACT, CPC, DTRACE, GRAPHICS, VIRT, WIN y XVM.

Algunos privilegios tienen un efecto limitado en el sistema y otros tienen un efecto amplio. La definición del privilegio proc_taskid indica su efecto limitado:

proc_taskid
        Allows a process to assign a new task ID to the calling process.

La definición del privilegio file_setid indica su efecto amplio:

net_rawaccess
        Allow a process to have direct access to the network layer.

La página del comando man privileges(5) proporciona descripciones de cada privilegio. El comando ppriv -lv imprime una descripción de cada privilegio con formato estándar.

Diferencias administrativas en un sistema con privilegios

Un sistema tiene privilegios posee varias diferencias visibles con un sistema que no tiene privilegios. La siguiente tabla muestra algunas de las diferencias.

Tabla 8-2 Diferencias visibles entre un sistema con privilegios y un sistema sin privilegios

Función
Sin privilegios
Con privilegios
Daemons
Los daemons se ejecutan como root.
Los daemons se ejecutan como el daemon de usuario.

Por ejemplo, los siguientes daemons tienen asignados los privilegios adecuados y se ejecutan como daemon: lockd, nfsd y rpcbind.

Propiedad de archivos de registro
Los archivos de registro son propiedad de root.
Los archivos de registro ahora son propiedad de daemon, que creó el archivo de registro. El usuario root no es propietario del archivo.
Mensajes de error
Los mensajes de error hacen referencia al superusuario.

Por ejemplo, chroot: not superuser.

Los mensajes de error reflejan el uso de privilegios.

Por ejemplo, el mensaje de error equivalente para el error chroot es chroot: exec failed.

Programas setuid
Los programas usan setuid para completar las tareas que los usuarios comunes no tienen permiso para realizar.
Muchos programas setuid se modificaron para ejecutarse con privilegios.

Por ejemplo, los siguientes comandos usan privilegios: audit, ikeadm, ipadm, ipsecconf, ping, traceroute y newtask.

Permisos de archivo
Los permisos de dispositivo están controlados por DAC. Por ejemplo, los miembros del grupo sys pueden abrir /dev/ip.
Los permisos de archivo (DAC) no predicen quién puede abrir un dispositivo. Los dispositivos están protegidos con DAC y la política de dispositivos.

Por ejemplo, el archivo /dev/ip tiene 666 permisos, pero únicamente un proceso con los privilegios adecuados puede abrir el dispositivo. Los sockets sin formato siguen protegidos por DAC.

Eventos de auditoría
La auditoría del uso del comando su comprende varias funciones administrativas.
La auditoría del uso de privilegios comprende la mayoría de las funciones administrativas. Las clases de auditoría pm, ps, ex, ua y as incluyen eventos de auditoría que supervisan la política de dispositivos y el uso de privilegios.
Procesos
Los procesos están protegidos por el propietario del proceso.
Los procesos están protegidos por privilegios. Los privilegios de proceso y los indicadores de proceso están visibles como una nueva entrada en el directorio /proc/<pid>, priv.
Depuración
Ninguna referencia a privilegios en los volcados del núcleo central.
La sección de notas ELF de los volcados del núcleo central incluye información sobre los indicadores y privilegios de proceso en las notas NT_PRPRIV y NT_PRPRIVINFO.

El comando ppriv y otros comandos muestran el número adecuado de conjuntos con tamaño apropiado. Los comandos asignan correctamente los bits de los conjuntos de bits a los nombres de privilegio.

Privilegios y recursos del sistema

En la versión Oracle Solaris, los controles de recursos project.max-locked-memory y zone.max-locked-memory se pueden utilizar para limitar el consumo de memoria de los procesos que tienen asignado el privilegio PRIV_PROC_LOCK_MEMORY. Este privilegio permite a un proceso bloquear páginas en la memoria física.

Si asigna el privilegio PRIV_PROC_LOCK_MEMORY a un perfil de derechos, puede otorgar a los procesos que tienen este privilegio la posibilidad de bloquear toda la memoria. Como protección, defina un control de recursos para evitar que el usuario del privilegio bloquee toda la memoria. Para los procesos con privilegios que se ejecutan en una zona no global, defina el control de recursos zone.max-locked-memory. Para los procesos con privilegios que se ejecutan en un sistema, cree un proyecto y define el control de recursos project.max-locked-memory. Para obtener información sobre estos controles de recursos, consulte el Capítulo 6, Controles de recursos (descripción general) de Administración de Oracle Solaris: zonas de Oracle Solaris, zonas de Oracle Solaris 10 y gestión de recursos y el Capítulo 16, Configuración de zonas no globales (descripción general) de Administración de Oracle Solaris: zonas de Oracle Solaris, zonas de Oracle Solaris 10 y gestión de recursos.

Cómo se implementan los privilegios

Cada proceso tiene cuatro conjuntos de privilegios que determinan si un proceso puede usar un determinado privilegio. El núcleo calcula automáticamente el conjunto vigente de privilegios. Puede modificar el conjunto heredable inicial de privilegios. Un programa que está codificado para utilizar privilegios puede reducir el conjunto permitido de privilegios del programa. Puede reducir el conjunto límite de privilegios.

El núcleo reconoce un conjunto básico de privilegios. En un sistema sin modificaciones, cada conjunto heredable inicial del usuario es equivalente al conjunto básico en el inicio de sesión. Aunque no puede modificar el conjunto básico, puede modificar los privilegios que un usuario hereda del conjunto básico.

En un sistema sin modificaciones, los conjuntos de privilegios de un usuario en el inicio de sesión tendrían un aspecto similar al siguiente:

E (Effective): basic
I (Inheritable): basic
P (Permitted): basic
L (Limit): all

Por lo tanto, en el inicio de sesión, todos los usuarios tienen el conjunto básico en su conjunto heredable, su conjunto permitido y su conjunto vigente. El conjunto límite del usuario es equivalente al conjunto límite predeterminado para la zona global o no global. Para poner más privilegios en el conjunto vigente del usuario, debe asignar un perfil de derechos al usuario. El perfil de derechos incluiría los comandos en los que agregó privilegios. También puede asignar privilegios directamente al usuario o el rol, aunque dicha asignación de privilegios puede ser riesgosa. Para ver una explicación de los riesgos, consulte Consideraciones de seguridad al asignar directamente atributos de seguridad.

Cómo obtienen privilegios los procesos

Los procesos pueden heredar privilegios. O bien se pueden asignar privilegios a los procesos. Un proceso hereda privilegios de su proceso principal. En el inicio de sesión, el conjunto heredable inicial de privilegios del usuario determina los privilegios que están disponibles para los procesos del usuario. Todos los procesos secundarios del inicio de sesión inicial del usuario heredan ese conjunto.

También puede asignar directamente privilegios a programas, usuarios y roles. Cuando un programa requiere privilegios, puede asignar los privilegios al archivo ejecutable del programa en un perfil de derechos. A los usuarios o roles que tienen permiso para ejecutar el programa se les asigna el perfil que incluye el programa. En el inicio de sesión o cuando se indica un shell de perfil, el programa se ejecuta con privilegios al escribir el archivo ejecutable del programa en el shell de perfil. Por ejemplo, un rol que incluye el perfil de gestión del acceso a objetos puede ejecutar el comando chmod con el privilegio file_chown.

Cuando un rol o un usuario ejecutan un programa al que se asignó directamente un privilegio adicional, el privilegio asignado se agrega al conjunto heredable del rol o el usuario. Los procesos secundarios del programa al que se asignaron privilegios heredan los privilegios del proceso principal. Si el proceso secundario requiere más privilegios que el proceso principal, esos privilegios se deben asignar directamente al proceso secundario.

Los programas que están codificados para utilizar privilegios se denominan programas de reconocimiento de privilegios. Un programa para privilegios activa el uso de privilegios y desactiva el uso de privilegios durante la ejecución del programa. Para lograr un funcionamiento correcto en un entorno de producción, se deben asignar al programa los privilegios que el programa activa y desactiva.

Para ver ejemplos de código para privilegios, consulte el Capítulo 2, Developing Privileged Applications de Developer’s Guide to Oracle Solaris 11 Security. Para asignar privilegios a un programa que los requiera, consulte el Ejemplo 9-14.

Asignación de privilegios

Como administrador de la seguridad, usted es responsable de asignar privilegios. Se recomienda asignar el privilegio a un comando en un perfil de derechos. El perfil de derechos luego se asigna a un rol o un usuario.

Los privilegios se pueden asignar directamente a un usuario, a un rol o a un perfil de derechos. Si confía en que un subconjunto de usuarios puede utilizar un privilegio de forma responsable a lo largo de sus sesiones, puede asignar el privilegio directamente. Los privilegios que tienen un efecto limitado, como proc_clock_highres, son buenos candidatos para la asignación directa. Los privilegios que tienen efectos de largo alcance, como file_dac_write, son malos candidatos para la asignación directa.

También es posible denegar privilegios a un usuario o un sistema. Se debe tener cuidado al eliminar privilegios del conjunto heredable inicial o el conjunto límite de un usuario o un sistema.

Ampliación de los privilegios de un usuario o rol

Los usuarios y roles tienen un conjunto heredable de privilegios. El conjunto límite no se puede ampliar, ya que incluye inicialmente todos los privilegios. El conjunto heredable inicial se puede ampliar para usuarios, roles y sistemas. Un privilegio que no está en el conjunto heredable también se puede asignar a un proceso.

Puede ampliar los privilegios que se encuentran disponibles de dos maneras.

La asignación de privilegios por proceso es la manera más precisa de agregar privilegios. Para ampliar la cantidad de operaciones con privilegios que puede realizar un usuario, debe asignar un rol al usuario. Se asignarán perfiles de derechos al rol que incluyen comandos con privilegios agregados. Cuando el usuario asume el rol, obtiene el shell de perfil del rol. Cuando los comandos del perfil de derechos se escriben en el shell del rol, los comandos se ejecutan con los privilegios agregados.

También puede asignar un perfil de derechos al usuario en lugar de un rol que el usuario asumirá. Cuando el usuario abre un shell de perfil, como pfksh, el usuario puede ejecutar los comandos del perfil de derechos con privilegios del usuario. En un shell común, los comandos no se ejecutan con privilegios. El proceso con privilegios sólo se puede ejecutar en un shell con privilegios.

Ampliar el conjunto heredable inicial de privilegios para usuarios, roles o sistemas es una manera más riesgosa de asignar privilegios. Todos los privilegios del conjunto heredable están en el conjunto permitido y vigente. Todos los comandos que el usuario o el rol escriben en un shell puede utilizar los privilegios asignados directamente. Los privilegios asignados directamente permiten un usuario o rol realizar fácilmente operaciones que pueden estar fuera de los límites de sus responsabilidades administrativas.

Al aumentar el conjunto heredable inicial de privilegios en un sistema, todos los usuarios que inician sesión en el sistema tienen un conjunto más grande de privilegios básicos. Esa asignación directa permite a todos los usuarios del sistema realizar fácilmente operaciones que probablemente están fuera de los límites de los usuarios comunes.


Nota - El conjunto límite no se puede ampliar, ya que incluye inicialmente todos los privilegios.


Restricción de los privilegios de un usuario o rol

Al eliminar privilegios, puede impedir que los usuarios y los roles realicen determinadas tareas. Puede eliminar privilegios del conjunto heredable inicial y del conjunto límite. Debe probar con cuidado la eliminación de privilegios antes de distribuir un conjunto heredable inicial o un conjunto límite que es menor que el conjunto predeterminado. Al eliminar privilegios del conjunto heredable inicial, puede impedir que los usuarios inicien sesión. Cuando se eliminan privilegios del conjunto límite, es posible que se produzca un error en un programa setuid antiguo porque el programa necesita un privilegio que se eliminó.

Asignación de privilegios a una secuencia de comandos

Las secuencias de comandos son ejecutables, como los comandos. Por lo tanto, en un perfil de derechos, puede agregar privilegios a una secuencia de comandos del mismo modo que puede agregar privilegios a un comando. La secuencia de comandos se ejecuta con los privilegios agregados cuando un usuario o rol al que se asignó el perfil de derechos ejecuta la secuencia de comandos en un shell de perfil. Si la secuencia de comandos contiene comandos que requieren privilegios, los comandos con privilegios agregados también deben estar en un perfil de derechos asignado.

Los programas para privilegios pueden restringir los privilegios por proceso. Su función con un programa para privilegios consiste en asignar al archivo ejecutable sólo los privilegios que necesita el programa. Luego, prueba el programa para ver si el programa realiza sus tareas correctamente. También comprueba que el programa no abuse de su uso de privilegios.

Privilegios y dispositivos

El modelo de privilegios utiliza privilegios para proteger las interfaces del sistema que, en el modelo de superusuario, están protegidas sólo por los permisos de archivos. En un sistema con privilegios, los permisos de archivo son demasiado débiles para proteger las interfaces. Un privilegio como proc_owner puede anular los permisos de archivo y, a continuación, proporcionar acceso completo a todo el sistema.

Por lo tanto, en Oracle Solaris, la propiedad del directorio de dispositivos no es suficiente para abrir un dispositivo. Por ejemplo, a los miembros del grupo sys ya no se les permite abrir automáticamente el dispositivo /dev/ip. Los permisos de archivo en /dev/ip son 0666, pero se requiere el privilegio net_rawaccess para abrir el dispositivo.

La política de dispositivos se controla mediante privilegios. El comando getdevpolicy muestra la política para cada dispositivo. El comando de configuración de dispositivos, devfsadm, instala la política de dispositivos. El comando devfsadm vincula los conjuntos de privilegios con open para la lectura o escritura de dispositivos. Para obtener más información, consulte las páginas del comando man getdevpolicy(1M) y devfsadm(1M).

La política de dispositivos ofrece más flexibilidad en el momento de otorgar permiso para abrir dispositivos. Puede requerir privilegios distintos o más privilegios que la política de dispositivos predeterminada. Los requisitos de privilegios se pueden modificar para la política de dispositivos y para el propio controlador. Puede modificar los privilegios al instalar, agregar o actualizar un controlador de dispositivos.

Los comandos add_drv y update_drv se utilizan para modificar entradas de la política de dispositivos y privilegios específicos del controlador. Para cambiar la política de dispositivos, debe ejecutar el proceso que tenga el conjunto completo de privilegios. Para obtener más información, consulte las páginas de comando man add_drv(1M) y update_drv(1M).

Privilegios y depuración

Oracle Solaris proporciona herramientas para depurar errores en privilegios. El comando ppriv y el comando truss proporcionan los resultados de la depuración. Para ver ejemplos, consulte la página del comando man ppriv(1). Para conocer el procedimiento, consulte Cómo determinar los privilegios que necesita un programa. También puede utilizar el comando dtrace. Para obtener más información, consulte la página del comando man dtrace(1M).