Omitir V�nculos de navegaci�n | |
Salir de la Vista de impresi�n | |
Guía de administración del sistema: servicios de seguridad |
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. Control de acceso a dispositivos (tareas)
5. Uso de la herramienta básica de creación de informes de auditoría (tareas)
6. Control de acceso a archivos (tareas)
7. Uso de la herramienta automatizada de mejora de la seguridad (tareas)
Parte III Roles, perfiles de derechos y privilegios
8. Uso de roles y privilegios (descripción general)
9. Uso del control de acceso basado en roles (tareas)
10. Control de acceso basado en roles (referencia)
Gestión y uso de privilegios (mapa de tareas)
Gestión de privilegios (mapa de tareas)
Cómo determinar los privilegios de un proceso
Cómo determinar los privilegios que necesita un programa
Cómo agregar privilegios a un comando
Cómo asignar privilegios a un usuario o rol
Cómo limitar los privilegios de un usuario o rol
Cómo ejecutar una secuencia de comandos de shell con comandos con privilegios
Determinación de los privilegios (mapa de tareas)
Determinación de los privilegios asignados
Cómo determinar los privilegios que se le asignaron directamente
Cómo determinar los comandos con privilegios que puede ejecutar
Cómo determinar los comandos con privilegios que puede ejecutar un rol
Parte IV Servicios criptográficos
13. Estructura criptográfica de Oracle Solaris (descripción general)
14. Estructura criptográfica de Oracle Solaris (tareas)
15. Estructura de gestión de claves de Oracle Solaris
Parte V Servicios de autenticación y comunicación segura
16. Uso de servicios de autenticación (tareas)
19. Uso de Oracle Solaris Secure Shell (tareas)
20. Oracle Solaris Secure Shell (referencia)
21. Introducción al servicio Kerberos
22. Planificación del servicio Kerberos
23. Configuración del servicio Kerberos (tareas)
24. Mensajes de error y resolución de problemas de Kerberos
25. Administración de las políticas y los principales de Kerberos (tareas)
26. Uso de aplicaciones Kerberos (tareas)
27. El servicio Kerberos (referencia)
Parte VII Auditoría de Oracle Solaris
28. Auditoría de Oracle Solaris (descripción general)
29. Planificación de la auditoría de Oracle Solaris
30. Gestión de la auditoría de Oracle Solaris (tareas)
La forma más segura de gestionar privilegios para usuarios y roles es limitar el uso del privilegio a los comandos de un perfil de derechos. El perfil de derechos se incluye luego en un rol. Se asigna el rol a un usuario. Cuando el usuario asume el rol asignado, los comandos con privilegios están disponibles para su ejecución en un shell de perfil. Los siguientes procedimientos muestran cómo asignar privilegios, eliminar privilegios y depurar el uso de privilegios.
Este procedimiento muestra cómo determinar los privilegios que están disponibles para los procesos. La lista no incluye privilegios que se asignaron a comandos específicos.
% ppriv pid $ ppriv -v pid
El número de proceso. Utilice un signo de dólar doble ($$) para transferir el número de proceso del shell principal al comando.
Proporciona una lista detallada de los nombres de privilegios.
Ejemplo 11-1 Determinación de los privilegios en el shell actual
En el siguiente ejemplo, se enumeran los privilegios del proceso principal del shell del usuario. En el segundo ejemplo, se enumeran los nombres completos de los privilegios. Las letras individuales que se visualizan hacen referencia a los siguientes conjuntos de privilegios:
El conjunto vigente de privilegios.
El conjunto heredable de privilegios.
El conjunto permitido de privilegios.
El conjunto límite de privilegios.
% ppriv $$ 1200: -csh flags = <none> E: basic I: basic P: basic L: all % ppriv -v $$ 1200: -csh flags = <none> E: file_link_any,net_access,proc_exec,proc_fork,proc_info,proc_session I: file_link_any,net_access,proc_exec,proc_fork,proc_info,proc_session P: file_link_any,net_access,proc_exec,proc_fork,proc_info,proc_session L: cpc_cpu,dtrace_kernel,dtrace_proc,dtrace_user,…,sys_time
Ejemplo 11-2 Determinación de los privilegios de un rol que puede asumir
Los roles utilizan un shell administrativo o shell de perfil. Debe asumir un rol y utilizar el shell del rol para enumerar los privilegios que se asignaron directamente al rol. En el siguiente ejemplo, el rol sysadmin no tiene privilegios asignados directamente.
% su - sysadmin Password: <Type sysadmin password> $ /usr/ucb/whoami sysadmin $ ppriv -v $$ 1400: pfksh flags = <none> E: file_link_any,net_access,proc_exec,proc_fork,proc_info,proc_session I: file_link_any,net_access,proc_exec,proc_fork,proc_info,proc_session P: file_link_any,net_access,proc_exec,proc_fork,proc_info,proc_session L: cpc_cpu,dtrace_kernel,dtrace_proc,dtrace_user,…,sys_time
Este procedimiento determina los privilegios que necesita un comando o proceso para ejecutarse correctamente.
Antes de empezar
El comando o proceso debe haber fallado para que este procedimiento funcione.
% ppriv -eD touch /etc/acct/yearly touch[11365]: missing privilege "file_dac_write" (euid = 130, syscall = 224) needed at ufs_direnter_cm+0x27c touch: /etc/acct/yearly cannot create
% grep 224 /etc/name_to_sysnum creat64 224
Ejemplo 11-3 Utilización del comando truss para examinar el uso de privilegios
El comando truss puede depurar el uso de privilegios en un shell común. Por ejemplo, el siguiente comando depura el proceso con errores touch:
% truss -t creat touch /etc/acct/yearly creat64("/etc/acct/yearly", 0666) Err#13 EACCES [file_dac_write] touch: /etc/acct/yearly cannot create
Las interfaces ampliadas /proc informan el privilegio faltante después del código de error en la salida del comando truss.
Ejemplo 11-4 Utilización del comando ppriv para examinar el uso de privilegios en un shell de perfil
El comando ppriv puede depurar el uso de privilegios en un shell de perfil. Si asigna un perfil de derechos a un usuario y el perfil de derechos incluye comandos con privilegios, los comandos se deben escribir en un shell de perfil. Cuando los comandos con privilegios se escriben un shell común, los comandos no se ejecutan con privilegios.
En este ejemplo, el usuario jdoe puede asumir el rol objadmin. El rol objadmin incluye el perfil de derechos de gestión del acceso a objetos. Este perfil de derechos permite al rol objadmin cambiar permisos en archivos que no son propiedad de objadmin.
En el fragmento siguiente, jdoe no puede cambiar los permisos en el archivo useful.script:
jdoe% ls -l useful.script -rw-r--r-- 1 aloe staff 2303 Apr 10 10:10 useful.script jdoe% chown objadmin useful.script chown: useful.script: Not owner jdoe% ppriv -eD chown objadmin useful.script chown[11444]: missing privilege "file_chown" (euid = 130, syscall = 16) needed at ufs_setattr+0x258 chown: useful.script: Not owner
Cuando jdoe asume el rol objadmin, se modifican los permisos en el archivo:
jdoe% su - objadmin Password: <Type objadmin password> $ ls -l useful.script -rw-r--r-- 1 aloe staff 2303 Apr 10 10:10 useful.script $ chown objadmin useful.script $ ls -l useful.script -rw-r--r-- 1 objadmin staff 2303 Apr 10 10:10 useful.script $ chgrp admin useful.script $ ls -l objadmin.script -rw-r--r-- 1 objadmin admin 2303 Apr 10 10:11 useful.script
Ejemplo 11-5 Modificación de un archivo que es propiedad del usuario root
Este ejemplo ilustra la protección contra la escalada de privilegios. Para ver una explicación, consulte Cómo evitar la escalada de privilegios. El archivo es propiedad del usuario root. El rol menos poderoso, el rol objadmin, necesita todos los privilegios para cambiar la propiedad del archivo, por lo que la operación no se ejecuta correctamente.
jdoe% su - objadmin Password: <Type objadmin password> $ cd /etc; ls -l system -rw-r--r-- 1 root sys 1883 Oct 10 10:20 system $ chown objadmin system chown: system: Not owner $ ppriv -eD chown objadmin system chown[11481]: missing privilege "ALL" (euid = 101, syscall = 16) needed at ufs_setattr+0x258 chown: system: Not owner
Se agregan privilegios a un comando al agregar el comando a un perfil de derechos. Los privilegios permiten al rol que incluye el perfil de derechos ejecutar el comando administrativo, sin obtener otras capacidades de superusuario.
Antes de empezar
El comando o programa debe reconocer privilegios. Para obtener una explicación más detallada, consulte Cómo obtienen privilegios los procesos.
Los roles incluyen autorizaciones y comandos con privilegios. Para obtener más información sobre los roles, consulte Configuración de RBAC (mapa de tareas).
Para obtener instrucciones, consulte Cómo asumir un rol en Solaris Management Console.
Seleccione el comando que desea incluir. Para cada comando incluido, agregue los privilegios que necesita el comando.
Precaución - Al incluir comandos en un perfil de derechos y agregar privilegios a los comandos, los comandos se ejecutan con esos privilegios cuando se ejecutan en un shell de perfil. El orden de los perfiles es importante. El shell de perfil ejecuta un comando o una acción con los atributos de seguridad especificados en el primer perfil de la lista de perfiles de la cuenta. Por ejemplo, si el comando chgrp está en el perfil de derechos de gestión del acceso a objetos con privilegios y la gestión del acceso a objetos es el primer perfil en el que se encuentra el comando chgrp, el comando chgrp se ejecuta con los privilegios especificados en el perfil de gestión del acceso a objetos. |
Puede confiar un determinado privilegio a ciertos usuarios en todo momento. Los privilegios muy específicos que afectan una pequeña parte del sistema son buenos candidatos para asignar a un usuario. Para ver una explicación de las consecuencias de los privilegios asignados directamente, consulte Consideraciones de seguridad al asignar directamente atributos de seguridad.
El siguiente procedimiento permite al usuario jdoe usar temporizadores de alta resolución.
El rol de administrador principal incluye el perfil de administrador principal. Para crear el rol y asignarlo a un usuario, consulte el Capítulo 2, Trabajo con Solaris Management Console (tareas) de Guía de administración del sistema: administración básica.
$ usermod -K defaultpriv=basic,proc_clock_highres jdoe
Los valores de la palabra clave defaultpriv reemplazan los valores existentes. Por lo tanto, para que el usuario conserve los privilegios básicos, se debe especificar el valor basic. En la configuración predeterminada, todos los usuarios tienen privilegios básicos.
$ grep jdoe /etc/user_attr jdoe::::type=normal;defaultpriv=basic,proc_clock_highres
Ejemplo 11-6 Creación de un rol con privilegios para configurar la hora del sistema
En este ejemplo, se crea un rol cuya única tarea es controlar la hora del sistema.
$ /usr/sadm/bin/smrole -D nisplus:/examplehost/example.domain \ -r primaryadm -l <Type primaryadm password> \ add -- -n clockmgr \ -c "Role that sets system time" \ -F "Clock Manager" \ -s /bin/pfksh \ -u 108 \ -P <Type clockmgr password> \ -K defaultpriv=basic,proc_priocntl,sys_cpu_config, proc_clock_highres,sys_time
El texto de la línea -K se ajustó con fines de visualización.
Si el rol se creó de manera local, la entrada user_attr del rol tendría un aspecto similar al siguiente:
clockmgr:::Role that sets system time: type=role;defaultpriv=basic,proc_priocntl,sys_cpu_config, proc_clock_highres,sys_time
Para limitar los privilegios que están disponibles para un usuario o rol, reduzca el conjunto básico o el conjunto límite. Debe tener un buen motivo para limitar los privilegios del usuario de esta manera, porque las limitaciones pueden tener efectos secundarios no deseados.
Precaución - Debe probar exhaustivamente las capacidades en las que el conjunto básico o el conjunto límite se han modificado para un usuario.
|
Para conocer el procedimiento, consulte Cómo determinar los privilegios de un proceso.
$ usermod -K defaultpriv=basic,!priv-name username
Con la eliminación del privilegio proc_session, se impide que el usuario examine cualquier proceso que se encuentre fuera de su sesión actual. Con la eliminación del privilegio file_link_any, se impide que el usuario establezca enlaces físicos con archivos que no sean de su propiedad.
Precaución - No elimine los privilegios proc_fork o proc_exec. Sin estos privilegios, el usuario no podrá utilizar el sistema. De hecho, estos dos privilegios sólo se deben eliminar de los daemons que no necesitan ejecutar fork() o exec() para otros procesos. |
$ usermod -K limitpriv=all,!priv-name username
Inicie sesión como nombre_usuario e intenta realizar las tareas que nombre_usuario debe realizar en el sistema.
Ejemplo 11-7 Eliminación de privilegios del conjunto límite de un usuario
En el siguiente ejemplo, a todas las sesiones que se originan a partir del inicio de sesión inicial de jdoe se les impide utilizar el privilegio sys_linkdir. Es decir, el usuario no puede establecer enlaces físicos a directorios ni anular el enlace a directorios, incluso después de ejecutar el comando su.
$ usermod -K limitpriv=all,!sys_linkdir jdoe $ grep jdoe /etc/user_attr jdoe::::type=normal;defaultpriv=basic;limitpriv=all,!sys_linkdir
Ejemplo 11-8 Eliminación de privilegios del conjunto básico de un usuario
En el siguiente ejemplo, a todas las sesiones que se originan a partir del inicio de sesión inicial de jdoe se le impide utilizar el privilegio proc_session. Es decir, el usuario no puede examinar ningún proceso que se encuentre fuera de su sesión, incluso después de ejecutar el comando su.
$ usermod -K defaultpriv=basic,!proc_session jdoe
$ grep jdoe /etc/user_attr jdoe::::type=normal;defaultpriv=basic,!proc_session;limitpriv=all
Nota - Al crear una secuencia de comandos de shell que ejecuta comandos con privilegios heredados, el perfil de derechos adecuado debe contener los comandos con privilegios asignados a ellos.
#!/bin/pfsh # Copyright (c) 2009, 2011 by Oracle Corporation
% ppriv -eD script-full-path
Para obtener instrucciones, consulte Cómo asumir un rol en Solaris Management Console. Seleccione un rol, por ejemplo, administrador principal, que pueda crear un perfil de derechos.
Seleccione la secuencia de comandos e incluya en el perfil de derechos cada uno de los comandos de la secuencia de comandos de shell que necesitan privilegios para ejecutarse. Para cada comando incluido, agregue los privilegios que necesita el comando.
Precaución - El orden de los perfiles de derechos es importante. El shell de perfil ejecuta la primera instancia de un comando en la lista de perfiles. Por ejemplo, si el comando chgrp está en el perfil de derechos de gestión del acceso a objetos y la gestión del acceso a objetos es el primer perfil en el que se encuentra el comando chgrp, el comando chgrp se ejecuta con los privilegios especificados en el perfil de gestión del acceso a objetos. |
Para ejecutar el perfil, el usuario asume el rol y ejecuta la secuencia de comandos en el shell de perfil del rol.