JavaScript is required to for searching.
Omitir Vínculos de navegación
Salir de la Vista de impresión
Administración de Oracle Solaris 11.1: servicios de seguridad     Oracle Solaris 11.1 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.  Verificación de la integridad de archivos mediante el uso de BART (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)

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

Uso de RBAC (tareas)

Visualización y uso de valores predeterminados de RBAC (tareas)

Visualización y uso de valores predeterminados de RBAC (mapa de tareas)

Cómo visualizar todos los atributos de seguridad definidos

Cómo visualizar los derechos asignados

Cómo asumir un rol

Cómo cambiar los atributos de seguridad de un usuario

Cómo usar los derechos administrativos que tiene asignados

Personalización de RBAC para su sitio (tareas)

Configuración inicial de RBAC (mapa de tareas)

Cómo planificar la implementación de RBAC

Cómo crear un rol

Cómo asignar un rol

Cómo auditar roles

Cómo crear un perfil de derechos

Cómo clonar y modificar un perfil de derechos del sistema

Cómo crear una autorización

Cómo agregar propiedades RBAC a las aplicaciones antiguas

Cómo solucionar problemas de asignación de privilegios y RBAC

Gestión de RBAC (tareas)

Gestión de RBAC (mapa de tareas)

Cómo cambiar la contraseña de un rol

Cómo cambiar los atributos de seguridad de un rol

Cómo volver a ordenar atributos de seguridad asignados

Cómo restringir a un administrador a derechos asignados explícitamente

Cómo permitir que un usuario use su propia contraseña para asumir un rol

Cómo cambiar el rol root a un usuario

Uso de privilegios (tareas)

Cómo enumerar los privilegios en el sistema

Cómo determinar los privilegios que se le asignaron directamente

Cómo determinar los comandos con privilegios que puede ejecutar

Cómo determinar los privilegios de un proceso

Cómo determinar los privilegios que necesita un programa

Cómo aplicar una política de privilegio extendida a un puerto

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

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.  Uso de módulos de autenticación conectables

15.  Uso de Secure Shell

16.  Secure Shell (referencia)

17.  Uso de autenticación simple y capa de seguridad

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

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

Uso de privilegios (tareas)

Los privilegios pueden permitir a los usuarios realizar tareas específicas con derechos administrativos. Los privilegios también se pueden utilizar para limitar a los usuarios a que realicen solamente las tareas que pueden llevar a cabo.

El siguiente mapa de tareas hace referencia a instrucciones paso a paso para ver privilegios, gestionar y usar privilegios en el sistema.

Tarea
Descripción
Para obtener instrucciones
Ver los privilegios definidos.
Enumera los privilegios y sus definiciones en Oracle Solaris.
Ver los privilegios como usuario en cualquier shell.
Muestra sus privilegios directamente asignados. Todos sus procesos se ejecutan con estos privilegios.
Ver los comandos con privilegios en un shell de perfil.
Muestra los comandos con privilegios que puede ejecutar mediante un perfil de derechos asignado.
Limite el acceso de agresores a un sistema cuando se ejecuta con éxito un ataque sobre una aplicación.
Protege un sistema contra ataques aplicando la política de privilegio extendida al puerto NTP.
Determinar los privilegios que hay en un proceso.
Muestra el conjunto vigente, heredable, permitido y límite de privilegios de un proceso.
Determinar los privilegios que faltan en un proceso.
Muestra los privilegios que un proceso con errores necesita para ejecutarse correctamente.
Limite el acceso de agresores a un sistema cuando se ejecuta con éxito un ataque sobre una aplicación.
Crea una política extendida para el servicio NTP.
Agregar privilegios a un comando.
Agrega privilegios a un comando en un perfil de derechos. El perfil de derechos se puede asignar a usuarios o roles. Los usuarios luego pueden ejecutar el comando con los privilegios asignados en un shell de perfil.
Asignar privilegios a un usuario o rol.
Amplía el conjunto heredable de privilegios de un usuario o rol. Utilice este procedimiento con precaución.
Restringir los privilegios de un usuario.
Limita el conjunto básico de privilegios del usuario. Utilice este procedimiento con precaución.
Ejecutar una secuencia de comandos de shell con privilegios.
Agrega privilegios a una secuencia de comandos de shell y a los comandos de la secuencia de comandos de shell. A continuación, ejecuta la secuencia de comandos en un shell de perfil.

Cómo enumerar los privilegios en el sistema

El procedimiento siguiente muestra cómo visualizar los nombres y las definiciones de privilegios.

Cómo determinar los privilegios que se le asignaron directamente

El siguiente procedimiento muestra cómo determinar si se le asignaron privilegios directamente.


Precaución

Precaución - El uso inadecuado de los privilegios asignados directamente puede generar infracciones de seguridad involuntarias. Para ver una explicación, consulte Consideraciones de seguridad al asignar directamente atributos de seguridad.


  1. Enumere los privilegios que los procesos pueden utilizar.

    Consulte Cómo determinar los privilegios de un proceso para conocer el procedimiento.

  2. Invoque acciones y ejecute comandos en cualquier shell.

    Los privilegios que se muestran en el conjunto vigente están en vigor a lo largo de la sesión. Si se le asignaron privilegios directamente, además del conjunto básico, los privilegios se muestran en el conjunto vigente.

Ejemplo 9-33 Determinación de los privilegios asignados directamente

En este ejemplo, se ha asignado el privilegio proc_clock_highres directamente al usuario, por lo que el privilegio está disponible en todos los procesos que son propiedad del usuario.

% ppriv -v $$
1800:   pfksh
flags = <none>
        E: file_link_any,…,proc_clock_highres,proc_session
        I: file_link_any,…,proc_clock_highres,proc_session
        P: file_link_any,…,proc_clock_highres,proc_session
        L: cpc_cpu,dtrace_kernel,dtrace_proc,dtrace_user,…,sys_time
% ppriv -vl proc_clock_highres
        Allows a process to use high resolution timers.

Ejemplo 9-34 Determinación de los privilegios asignados directamente de un rol

En el siguiente ejemplo, al rol realtime se le asignaron privilegios directamente para gestionar los programas relacionados con la fecha y hora.

% su - realtime
Password: <Type realtime password>
$ ppriv -v $$
1600:   pfksh
flags = <none>
        E: file_link_any,…,proc_clock_highres,proc_session,sys_time
        I: file_link_any,…,proc_clock_highres,proc_session,sys_time
        P: file_link_any,…,proc_clock_highres,proc_session,sys_time
        L: cpc_cpu,dtrace_kernel,dtrace_proc,dtrace_user,…,sys_time

Cómo determinar los comandos con privilegios que puede ejecutar

Por lo general, los usuarios y los roles tienen acceso a comandos con privilegios mediante un perfil de derechos. Los comandos de un perfil de derechos se deben ejecutar en un shell de perfil.

  1. Determine los perfiles de derechos que se le asignaron.

    En el siguiente ejemplo, se asigna al usuario varios perfiles de derechos. El sistema lee los perfiles de derechos y su contenido en orden. Para todos los atributos excepto las autorizaciones, el primer valor de atributo definido explícitamente es el que se utiliza. Para obtener más información, consulte Orden de búsqueda para atributos de seguridad asignados.

    % profiles
    Audit Review
    Console User
    Suspend To RAM
    Suspend To Disk
    Brightness
    CPU Power Management
    Network Autoconf
    Desktop Print Management
    Network Wifi Info
    Desktop Removable Media User
    Basic Solaris User
    All
  2. Determine sus derechos del perfil de revisión de auditoría.
    profiles -l
    Audit Review
    
      solaris.audit.read
      
      /usr/sbin/auditreduce  euid=0
      /usr/sbin/auditstat    euid=0
      /usr/sbin/praudit      euid=0

    El perfil de derechos de revisión de auditoría permite ejecutar los comandos auditreduce, auditstat y praudit con el UID efectivo de 0, y le asigna la autorización solaris.audit.read.

Ejemplo 9-35 Determinación de comandos con privilegios de un rol

En este ejemplo, un usuario asume un rol asignado y enumera los comandos que se incluyen en uno de los perfiles de derechos.

% roles
devadmin
% su - devadmin
Password: Type devadmin password
$ profiles -l
Device Security
          /usr/bin/kbd        uid=0;gid=sys
          /usr/sbin/add_allocatable    euid=0
          /usr/sbin/add_drv        uid=0
          /usr/sbin/devfsadm        uid=0
          /usr/sbin/eeprom        uid=0
          /usr/sbin/list_devices        euid=0
          /usr/sbin/rem_drv        uid=0
          /usr/sbin/remove_allocatable    euid=0
          /usr/sbin/strace        euid=0
          /usr/sbin/update_drv        uid=0

Ejemplo 9-36 Ejecución de los comandos con privilegios en su rol

En el siguiente ejemplo, el rol admin puede cambiar los permisos en el archivo useful.script.

% whoami
jdoe
% ls -l useful.script
-rwxr-xr-- 1 elsee eng 262 Apr 2 10:52 useful.script
% chgrp admin useful.script
chgrp: useful.script: Not owner
% su - admin
Password: <Type admin password>
$ chgrp admin useful.script
$ chown admin useful.script
$ ls -l useful.script
-rwxr-xr-- 1 admin admin 262 Apr 2 10:53 useful.script

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 9-37 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 9-38 Determinación de los privilegios de un rol que puede asumir

En el siguiente ejemplo, el rol sysadmin no tiene privilegios asignados directamente.

% su - sysadmin
Password: <Type sysadmin password>
$ /usr/bin/whoami
sysadmin
$ ppriv -v $$
1400:   pfksh
flags = <none>
        E: file_link_any,file_read,file_write,net_access,proc_exec,proc_fork,
           proc_info,proc_session
        I: file_link_any,file_read,file_write,net_access,proc_exec,proc_fork,
           proc_info,proc_session
        P: file_link_any,file_read,file_write,net_access,proc_exec,proc_fork,
           proc_info,proc_session
        L: cpc_cpu,dtrace_kernel,dtrace_proc,dtrace_user,…,win_upgrade_sl

Cómo determinar los privilegios que necesita un programa

Antes de empezar

El comando o proceso debe fallar para que este procedimiento de depuración funcione.

  1. Escriba el comando con errores como un argumento del comando de depuración ppriv.
    % ppriv -eD touch /etc/acct/yearly
    touch[5245]: missing privilege "file_dac_write"
         (euid = 130, syscall = 224) needed at zfs_zaccess+0x258
    touch: cannot create /etc/acct/yearly: Permission denied 
  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 9-39 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 9-40 Utilización del comando ppriv para examinar el uso de privilegios en un shell de perfil

En este ejemplo, el usuario jdoe puede asumir el rol objadmin. El rol objadmin incluye el perfil de derechos de gestión de 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 zfs_zaccess+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 9-41 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 zfs_zaccess+0x258
chown: system: Not owner

Cómo aplicar una política de privilegio extendida a un puerto

El servicio para el protocolo de hora de red (NTP) utiliza el puerto con privilegios 123 para el tráfico udp. Este procedimiento protege otros puertos del acceso por parte de usuarios malintencionados que podrían obtener los privilegios asignados a este puerto.

  1. Lea la entrada de manifiesto de servicio predeterminada para el puerto.

    Desde la siguiente entrada /lib/svc/manifest/network/ntp.xml, los privilegios net_privaddr, proc_lock_memory y sys_time pueden utilizarse en otros procesos.

    privileges='basic,!file_link_any,!proc_info,!proc_session,
    net_privaddr,proc_lock_memory,sys_time'

    Los privilegios eliminados evitan que el servicio indique u observe cualquier otro proceso, y evitan la creación de enlaces físicos como una manera de renombrar archivos.

    Es decir, el proceso que inicia el servicio solamente se puede enlazar con el puerto específico 123, y no se puede enlazar con ningún otro puerto con privilegios. Si un pirata informático quisiera aprovechar el servicio para iniciar otro proceso, el proceso secundario no podría establecer un enlace a ningún otro puerto con privilegios.

  2. Limite el privilegio net_privaddr a este puerto solamente.

    La política de privilegio extendida, que aparece resaltada en el siguiente fragmento, impide el acceso de este servicio a otros puertos con privilegios:

    privileges='basic,!file_link_any,!proc_info,!proc_session,
    {net_privaddr}:123/udp,proc_lock_memory,sys_time'

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

Al crear una secuencia de comandos de shell que ejecuta comandos que requieren privilegios, el perfil de derechos adecuado debe contener los comandos con privilegios asignados a ellos.

Antes de empezar

Debe asumir el rol root. Para obtener más información, consulte Cómo usar los derechos administrativos que tiene asignados.

  1. Inicie la secuencia de comandos con /bin/pfsh, o cualquier otro shell de perfil, en la primera línea.
    #!/bin/pfsh
    # Copyright (c) 2012 by Oracle
  2. Determine los privilegios que necesitan los comandos de la secuencia de comandos.
    % ppriv -eD script-full-path
  3. Conviértase en administrador con los atributos de seguridad necesarios.

    Para obtener más información, consulte Cómo usar los derechos administrativos que tiene asignados.

  4. Cree o modifique un perfil de derechos para la secuencia de comandos.

    Agregue la secuencia de comandos de shell y los comandos en la secuencia de comandos de shell con sus atributos de seguridad necesarios al perfil de derechos. Para conocer los pasos, consulte Cómo crear un perfil de derechos.

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

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