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) |
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)
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 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 perfil de derechos
Cómo clonar y modificar un perfil de derechos del sistema
Cómo agregar propiedades RBAC a las aplicaciones antiguas
Cómo solucionar problemas de asignación de privilegios y RBAC
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
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
17. Uso de autenticación simple y capa de seguridad
18. Autenticación de servicios de red (tareas)
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
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.
|
El procedimiento siguiente muestra cómo visualizar los nombres y las definiciones de privilegios.
% man privileges Standards, Environments, and Macros privileges(5) NAME privileges - process privilege model ... The defined privileges are: PRIV_CONTRACT_EVENT Allow a process to request reliable delivery of events to an event endpoint. Allow a process to include events in the critical event set term of a template which could be generated in volume by the user. ...
Este formato de privilegio es utilizado por desarrolladores.
% ppriv -lv | more contract_event Allows a process to request critical events without limitation. Allows a process to request reliable delivery of all events on any event queue. ... win_upgrade_sl Allows a process to set the sensitivity label of a window resource to a sensitivity label that dominates the existing sensitivity label. This privilege is interpreted only if the system is configured with Trusted Extensions.
Este formato de privilegio se utiliza para asignar privilegios a usuarios y roles con los comandos useradd, roleadd, usermod y rolemod, y a perfiles de derechos con el comando profiles.
El siguiente procedimiento muestra cómo determinar si se le asignaron privilegios directamente.
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. |
Consulte Cómo determinar los privilegios de un proceso para conocer el procedimiento.
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
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.
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
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
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 [-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 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:
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 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
Antes de empezar
El comando o proceso debe fallar para que este procedimiento de depuración funcione.
% 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
% 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
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.
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.
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'
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.
#!/bin/pfsh # Copyright (c) 2012 by Oracle
% ppriv -eD script-full-path
Para obtener más información, consulte Cómo usar los derechos administrativos que tiene asignados.
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.
Para ejecutar la secuencia de comandos, el usuario asume el rol y ejecuta la secuencia de comandos en el shell de perfil del rol.
Para agregar un perfil de derechos a un rol, consulte Cómo cambiar los atributos de seguridad de un rol.
Para asignar el rol a un usuario, consulte Cómo cambiar los atributos de seguridad de un usuario.