JavaScript is required to for searching.
Omitir V�nculos de navegaci�n
Salir de la Vista de impresi�n
Guía de administración del sistema: servicios de seguridad
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.  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)

11.  Privilegios (tareas)

Gestión y uso de privilegios (mapa de tareas)

Gestión de privilegios (mapa de tareas)

Gestión de privilegios

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

12.  Privilegios (referencia)

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)

17.  Uso de PAM

18.  Uso de SASL

19.  Uso de Oracle Solaris Secure Shell (tareas)

20.  Oracle Solaris Secure Shell (referencia)

Parte VI Servicio Kerberos

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)

31.  Auditoría de Oracle Solaris (referencia)

Glosario

Índice

Gestión de privilegios

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.

Cómo determinar los privilegios de un proceso

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.

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:

E

El conjunto vigente de privilegios.

I

El conjunto heredable de privilegios.

P

El conjunto permitido de privilegios.

L

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

Cómo determinar los privilegios que necesita un programa

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.

  1. Escriba el comando con errores como un argumento del comando de depuración ppriv.
    % 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
  2. Para determinar qué llamada del sistema falla, busque el número syscall en el archivo /etc/name_to_sysnum.
    % 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

Cómo agregar privilegios a un comando

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.

  1. Conviértase en superusuario o asuma un rol similar.

    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).

  2. Abra la interfaz gráfica de usuario de Solaris Management Console.

    Para obtener instrucciones, consulte Cómo asumir un rol en Solaris Management Console.

  3. Utilice la herramienta Rights para actualizar un perfil adecuado.

    Seleccione el comando que desea incluir. Para cada comando incluido, agregue los privilegios que necesita el comando.


    Precaución

    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.


Cómo asignar privilegios a un usuario o rol

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.

  1. Asuma el rol de administrador principal o conviértase en superusuario.

    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.

  2. Agregue el privilegio que afecta los temporizadores de alta resolución al conjunto heredable inicial de privilegios del usuario.
    $ 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.

  3. Lea la entrada user_attr resultante.
    $ 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

Cómo limitar los privilegios de un usuario o rol

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

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.

  • Cuando el conjunto básico es inferior a la configuración predeterminada, es posible que se les impida utilizar el sistema a los usuarios.

  • Cuando el conjunto límite es inferior a todos los privilegios, es posible que fallen los procesos que deben ejecutarse con un UID=0 efectivo.


  1. Determine los privilegios del conjunto básico y el conjunto límite de un usuario.

    Para conocer el procedimiento, consulte Cómo determinar los privilegios de un proceso.

  2. (Opcional) Elimine uno de los privilegios del conjunto básico.
    $ 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

    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.


  3. (Opcional) Elimine uno de los privilegios del conjunto límite.
    $ usermod -K limitpriv=all,!priv-name username
  4. Prueba las capacidades de nombre_usuario.

    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

Cómo ejecutar una secuencia de comandos de shell con comandos con privilegios


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.


  1. Inicie la secuencia de comandos con /bin/pfsh, o cualquier otro shell de perfil, en la primera línea.
    #!/bin/pfsh
    # Copyright (c) 2009, 2011 by Oracle Corporation
  2. Determine los privilegios que necesitan los comandos de la secuencia de comandos.
    % ppriv -eD script-full-path
  3. Abra la interfaz gráfica de usuario de Solaris Management Console.

    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.

  4. Utilice la herramienta Rights para crear o actualizar un perfil adecuado.

    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

    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.


  5. Agregue el perfil de derechos a un rol y asigne el rol a un usuario.

    Para ejecutar el perfil, el usuario asume el rol y ejecuta la secuencia de comandos en el shell de perfil del rol.