Guía del administrador de sistemas HP-UX: Administración de la seguridad HP-UX 11i versión 3 Nº de referencia de HP: 5992-3422 Publicado: Marzo de 2008 Edición: 4 © Copyright 2008 Hewlett-Packard Development Company L.P Avisos legales La información que contiene este documento está sujeta a cambios sin previo aviso. Hewlett-Packard no emite ninguna garantía de ningún tipo en relación con este documento, incluidas, a título enunciativo pero no limitativo, las garantías implícitas de comerciabilidad e idoneidad para un fin concreto. Hewlett-Packard no será responsable de los errores que este documento contenga ni de los daños directos, indirectos, especiales, fortuitos o emergentes relacionados con el suministro, el rendimiento o el uso de este material. Garantía Se puede obtener una copia de las condiciones específicas de la garantía correspondientes al producto y los repuestos de Hewlett-Packard en la Oficina de Ventas y Asistencia al Cliente local. Licencia del Gobierno de EE. UU. Software informático con derecho de propiedad registrado. Se precisa una licencia válida de HP en relación con la posesión, la utilización o la copia del mencionado software. De acuerdo con la normativa FAR 12.211 y 12.212, se concede al Gobierno de EE. UU. la licencia del Software Informático Comercial, de la Documentación sobre el Software Informático y de los Datos Técnicos relativos a Artículos Comerciales conforme a los términos de la licencia comercial estándar del proveedor. Avisos de marcas comerciales UNIX® es una marca registrada en Estados Unidos y otros países cuya licencia se concede en exclusiva por mediación de The Open Group. VERITAS® es una marca registrada de Symantec Corporation. Agradecimientos Este producto incluye software desarrollado por Apache Software Foundation. Esta documentación se basa en información obtenida de Apache Software Foundation (http://www.apache.org). Este producto incluye software desarrollado por OpenSSL Project para su uso en OpenSSL Toolkit (http://www.openssl.org). Tabla de contenido Acerca de este documento.........................................................................................................11 I Protección de los sistemas..........................................................................................17 1 Instalación del entorno operativo HP-UX de forma segura......................................................19 1.1 Consideraciones sobre la seguridad de la instalación....................................................19 1.2 Prevención de infracciones de seguridad durante el proceso de inicio.............................20 1.3 Habilitación de la seguridad de inicio de sesión para el usuario root..............................21 1.4 Uso de la autenticación de inicio para impedir el acceso no autorizado..........................21 1.5 Definición de las opciones de seguridad en el momento de la instalación........................21 1.6 Instalación de parches de seguridad...........................................................................22 1.7 Consejos sobre la seguridad posterior a la instalación para la realización de copias de seguridad y la recuperación............................................................................................23 2 Administración de la seguridad de los usuarios y del sistema.................................................25 2.1 Administración del acceso de los usuarios....................................................................25 2.1.1 Supervisión de las cuentas de usuario..................................................................25 2.1.2 Supervisión de las cuentas de invitado.................................................................26 2.1.3 Creación de cuentas de usuario de aplicaciones...................................................27 2.1.4 Administración de las cuentas de grupo...............................................................28 2.2 Autenticación de los usuarios durante el inicio de sesión...............................................28 2.2.1 Explicación del proceso de inicio de sesión..........................................................28 2.2.2 Comprobación de los archivos de seguimiento de inicios de sesión (btmp y wtmp).....................................................................................................................29 2.2.2.1 Ejemplos del comando «last».....................................................................30 2.2.3 Comprobación de quién ha iniciado una sesión...................................................31 2.3 Autenticación de los usuarios con los módulos PAM......................................................31 2.3.1 Descripción general..........................................................................................31 2.3.2 Bibliotecas PAM...............................................................................................33 2.3.3 Configuración de todo el sistema con /etc/pam.conf............................................34 2.3.4 Ejemplo del archivo /etc/pam.conf....................................................................35 2.3.5 Archivo de configuración de usuarios /etc/pam_user.conf.....................................36 2.3.6 Ejemplos: Cómo funcionan los módulos PAM para el inicio de sesión.....................37 2.4 Administración de las contraseñas..............................................................................38 2.4.1 Responsabilidades del administrador del sistema..................................................38 2.4.2 Responsabilidades del usuario...........................................................................39 2.4.3 Criterios para establecer una contraseña correcta................................................39 2.4.4 Modificación del archivo de contraseñas /etc/passwd.........................................40 2.4.4.1 Ejemplos de uso del comando passwd........................................................40 2.4.4.2 Formato del archivo /etc/passwd..............................................................41 Tabla de contenido 3 2.4.5 Archivo de contraseñas ocultas /etc/shadow.......................................................41 2.4.6 Eliminación de las seudocuentas y protección de los subsistemas clave en el archivo /etc/passwd............................................................................................................43 2.4.7 Inicio de sesión seguro con HP-UX Secure Shell....................................................44 2.4.8 Seguridad de las contraseñas almacenadas en el servicio NIS...............................44 2.4.9 Seguridad de las contraseñas almacenadas en un servidor de directorio LDAP........45 2.5 Definición de los atributos de seguridad del sistema.....................................................45 2.5.1 Configuración de los atributos para todo el sistema...............................................46 2.5.2 Configuración de los atributos por usuario...........................................................47 2.5.2.1 Ejemplos de definición de atributos para usuarios específicos con userdbset............................................................................................................48 2.5.2.2 INACTIVITY_MAXDAYS y el archivo de contraseñas ocultas...........................48 2.5.3 Solución de problemas con la base de datos de usuarios......................................49 2.6 Manejo de los programas setuid y setgid....................................................................49 2.6.1 Motivos por los que los programas setuid y setgid representan un riesgo.................50 2.6.2 Definición de los números de identificación.........................................................51 2.6.3 Pautas para acotar la influencia de setuid...........................................................51 2.7 Prevención de ataques de desbordamiento del búfer en la pila......................................52 2.8 Protección de los terminales y las estaciones de trabajos sin vigilancia............................53 2.8.1 Control del acceso con /etc/inittab y niveles de ejecución.....................................53 2.8.2 Protección de los archivos de dispositivo de terminales.........................................54 2.8.3 Configuración del bloqueo de pantalla...............................................................54 2.8.3.1 Configuración de la variable TMOUT..........................................................55 2.8.3.2 Configuración del administrador de bloqueos del entorno CDE......................55 2.9 Protección contra el acceso de dispositivos remotos al sistema.......................................55 2.9.1 Control del acceso con los archivos /etc/dialups y /etc/d_passwd.........................56 2.10 Protección de los titulares de inicio de sesión..............................................................57 2.11 Protección de la cuenta de usuario root......................................................................58 2.11.1 Supervisión del acceso a la cuenta de usuario root...............................................59 2.11.2 Uso de Restricted SMH Builder para el acceso limitado de superusuario.................60 2.11.3 Revisión del acceso de superusuario...................................................................60 3 HP-UX Bastille..................................................................................................................61 3.1 Características y ventajas..........................................................................................61 3.2 Instalación de HP-UX Bastille......................................................................................62 3.3 Uso de HP-UX Bastille...............................................................................................62 3.3.1 Uso interactivo de HP-UX Bastille.........................................................................63 3.3.2 Uso no interactivo de HP-UX Bastille....................................................................64 3.3.3 Configuración de un sistema..............................................................................64 3.4 Uso de HP-UX Bastille para revocar cambios................................................................67 3.5 Ubicación de los archivos..........................................................................................67 3.6 Consejos y solución de problemas..............................................................................69 3.7 Eliminación de HP-UX Bastille....................................................................................70 4 Tabla de contenido 4 HP-UX Standard Mode Security Extensions...........................................................................71 4.1 Descripción general..................................................................................................71 4.2 Atributos de seguridad y la base de datos de usuarios..................................................72 4.2.1 Atributos de seguridad del sistema......................................................................72 4.2.2 Configuración de los atributos para todo el sistema..............................................73 4.2.3 Componentes de la base de datos de usuarios....................................................73 4.2.3.1 Archivos de configuración..........................................................................73 4.2.3.2 Comandos..............................................................................................74 4.2.3.3 Atributos.................................................................................................74 4.2.3.4 Páginas de manual..................................................................................75 4.2.4 Configuración de los atributos de la base de datos de usuarios.............................75 4.2.5 Solución de problemas con la base de datos de usuarios......................................76 5 Administración de la seguridad relativa al acceso remoto......................................................77 5.1 Descripción general de Internet Services y los servicios de acceso remoto........................77 5.1.1 Seguridad del comando ftp................................................................................78 5.1.2 Seguridad del ftp anónimo.................................................................................79 5.1.3 Denegación del acceso mediante el archivo /etc/ftpd/ftpusers...............................80 5.1.4 Otras soluciones de seguridad para simulación.....................................................80 5.2 El demonio inetd......................................................................................................81 5.2.1 Seguridad del demonio inetd.............................................................................82 5.2.1.1 Denegación o concesión de acceso mediante el archivo /var/adm/inetd.sec............................................................................................83 5.3 Protección contra la simulación con TCP Wrappers.......................................................83 5.3.1 Características adicionales de TCP Wrappers.......................................................84 5.3.2 TCP Wrappers no se puede utilizar con servicios de RPC.......................................84 5.4 Secure Internet Services.............................................................................................84 5.5 Control de un dominio administrativo..........................................................................85 5.5.1 Comprobación de las configuraciones de los permisos en los archivos de control de red.....................................................................................................................86 5.6 Seguridad de las sesiones remotas mediante HP-UX Secure Shell (SSH)...........................87 5.6.1 Características de seguridad clave de HP-UX Secure Shell......................................87 5.6.2 Componentes de software de HP-UX Secure Shell.................................................88 5.6.3 Ejecución de HP-UX Secure Shell........................................................................89 5.6.3.1 Ejecución del cliente ssh............................................................................89 5.6.3.2 Ejecución del cliente sftp...........................................................................90 5.6.3.3 Ejecución del cliente scp...........................................................................91 5.6.4 Separación de privilegios con HP-UX Secure Shell................................................91 5.6.5 Autenticación con HP-UX Secure Shell.................................................................92 5.6.5.1 GSS-API..................................................................................................92 5.6.5.2 Autenticación con claves públicas..............................................................93 5.6.5.3 Autenticación con claves públicas y basada en host.....................................93 5.6.5.4 Autenticación con contraseñas...................................................................94 Tabla de contenido 5 5.6.6 Protocolos de comunicación..............................................................................94 5.6.7 HP-UX Secure Shell y el sistema HP-UX................................................................94 5.6.8 Tecnologías asociadas......................................................................................95 5.6.9 Requisito del generador de números aleatorios robusto.........................................96 5.6.10 Compatibilidad con TCP Wrappers...................................................................96 5.6.11 Cárcel de directorio chroot...............................................................................96 II Protección de los datos..............................................................................................97 6 Seguridad de los sistemas de archivos................................................................................99 6.1 Control del acceso a los archivos................................................................................99 6.1.1 Definición de permisos de acceso a los archivos..................................................101 6.1.2 Definición de la propiedad de los archivos.........................................................101 6.1.3 Protección de los directorios.............................................................................102 6.1.4 Protección de los archivos relacionados con las cuentas de usuario.......................102 6.1.5 Localización y reparación de daños de un archivo con el comando fsck.................103 6.2 Definición de listas de control de acceso...................................................................104 6.3 Uso de las listas ACL del sistema de archivos HFS......................................................104 6.3.1 Listas ACL del sistema de archivos HFS y comandos y llamadas de HP-UX..............106 6.4 Uso de las listas ACL del sistema de archivos JFS........................................................108 6.4.1 Definición de una lista ACL del sistema de archivos JFS.......................................108 6.4.2 Cómo genera el sistema una lista ACL del sistema de archivos JFS.......................109 6.4.3 Lista ACL del sistema de archivos JFS mínima.....................................................109 6.4.4 Entradas «user» y «group» adicionales de las listas ACL del sistema de archivos JFS........................................................................................................................110 6.4.5 Entradas «group» y «class» de las listas ACL del sistema de archivos JFS...............110 6.4.6 Uso de los comandos «setacl» y «getacl»..........................................................110 6.4.7 Efecto de chmod en las entradas «class»...........................................................111 6.4.8 Ejemplo de modificación de una lista ACL del sistema de archivos JFS mínima.......111 6.4.9 Listas ACL del sistema de archivos JFS por defecto..............................................113 6.4.10 Modificación de las listas ACL del sistema de archivos JFS con el comando setacl....................................................................................................................114 6.4.10.1 Uso de las opciones de modificación y eliminación...................................114 6.4.10.2 Uso de la opción -f...............................................................................114 6.4.10.3 Los permisos efectivos y el comando setacl -n...........................................115 6.5 Comparación de listas ACL de los sistemas de archivos JFS y HFS................................116 6.5.1 Correlación entre los comandos y las funciones de los sistemas de archivos JFS y HFS.......................................................................................................................116 6.6 Listas ACL y sistemas de archivos NFS.......................................................................117 6.7 Consideraciones sobre la seguridad para los archivos especiales de dispositivo /dev.....117 6.8 Protección de las particiones de disco y los volúmenes lógicos.....................................118 6.9 Pautas de seguridad para montar y desmontar sistemas de archivos.............................119 6.10 Control de la seguridad de los archivos en una red...................................................121 6 Tabla de contenido 6.10.1 Comprobación de las configuraciones de los permisos en los archivos de control de red...................................................................................................................121 6.10.2 Archivos montados en un entorno NFS.............................................................121 6.10.2.1 Vulnerabilidad de los servidores..............................................................122 6.10.2.2 Vulnerabilidad de los clientes.................................................................122 6.10.2.3 Cómo proteger los archivos montados con el sistema NFS..........................123 7 Compartimentos.............................................................................................................125 7.1 Descripción general.................................................................................................125 7.1.1 Arquitectura de compartimentos.........................................................................126 7.1.2 Configuración de compartimentos por defecto....................................................127 7.2 Planificación de la estructura de compartimentos........................................................127 7.3 Activación de compartimentos..................................................................................129 7.4 Modificación de la configuración de compartimentos..................................................130 7.4.1 Modificación de las reglas de compartimentos...................................................130 7.4.2 Modificación de los nombres de compartimentos...............................................131 7.5 Componentes de los compartimentos........................................................................131 7.5.1 Archivos de configuración de compartimentos.....................................................131 7.5.2 Comandos de compartimentos.........................................................................131 7.5.3 Páginas de manual de compartimentos.............................................................132 7.6 Sintaxis y reglas de compartimentos.........................................................................133 7.6.1 Definición de compartimentos...........................................................................133 7.6.2 Reglas de sistema de archivos..........................................................................134 7.6.3 Reglas IPC.....................................................................................................135 7.6.4 Reglas de red................................................................................................137 7.6.5 Reglas varias.................................................................................................139 7.6.6 Archivo de reglas de ejemplo...........................................................................140 7.7 Configuración de aplicaciones en compartimentos......................................................141 7.8 Solución de problemas de los compartimentos...........................................................141 7.9 Uso del modo de detección para generar una configuración inicial de compartimentos....142 7.10 Compartimentos de los clústeres HP Serviceguard......................................................142 8 Privilegios expresos........................................................................................................145 8.1 Descripción general................................................................................................145 8.2 Componentes de los privilegios expresos...................................................................145 8.2.1 Comandos.....................................................................................................146 8.2.2 Páginas de manual........................................................................................146 8.3 Privilegios disponibles.............................................................................................146 8.4 Configuración de aplicaciones con privilegios expresos..............................................149 8.4.1 Modelo de privilegios.....................................................................................150 8.4.2 Privilegios compuestos....................................................................................151 8.5 Consecuencias para la seguridad de los privilegios expresos.......................................152 8.5.1 Incremento de los privilegios............................................................................152 Tabla de contenido 7 8.6 Privilegios expresos de los clústeres HP Serviceguard..................................................152 8.7 Solución de problemas con los privilegios expresos....................................................152 III Protección de la identidad......................................................................................155 9 HP-UX Role-Based Access Control.....................................................................................157 9.1 Descripción general................................................................................................157 9.2 Fundamentos del control del acceso..........................................................................158 9.2.1 Simplificación del control del acceso con funciones.............................................159 9.3 Componentes de HP-UX RBAC..................................................................................160 9.3.1 HP-UX RBAC Access Control Policy Switch..........................................................161 9.3.2 Archivos de configuración de HP-UX RBAC........................................................162 9.3.3 Comandos de HP-UX RBAC..............................................................................162 9.3.4 Páginas de manual de HP-UX RBAC..................................................................163 9.3.5 Arquitectura de HP-UX RBAC............................................................................163 9.3.6 Ejemplo de uso y funcionamiento de HP-UX RBAC...............................................164 9.4 Planificación de la distribución de HP-UX RBAC..........................................................166 9.4.1 Planificación de las funciones...........................................................................166 9.4.2 Planificación de las autorizaciones para las funciones.........................................166 9.4.3 Planificación de las asignaciones de comandos.................................................167 9.4.4 Limitaciones y restricciones de HP-UX RBAC.......................................................168 9.5 Configuración de HP-UX RBAC.................................................................................169 9.5.1 Configuración de las funciones.........................................................................170 9.5.1.1 Creación de las funciones.........................................................................170 9.5.1.2 Asignación de las funciones a usuarios......................................................171 9.5.1.3 Asignación de las funciones a grupos........................................................172 9.5.2 Configuración de las autorizaciones..................................................................172 9.5.3 Configuración de privilegios y autorizaciones adicionales relativos a comandos.....173 9.5.4 Configuración de HP-UX RBAC con privilegios expresos.......................................175 9.5.5 Configuración de HP-UX RBAC con compartimentos............................................177 9.6 Uso de HP-UX RBAC...............................................................................................178 9.6.1 Uso del comando privrun para ejecutar aplicaciones con privilegios......................178 9.6.1.1 HP-UX RBAC en los clústeres Serviceguard..................................................180 9.6.2 Uso del comando privedit para modificar archivos con control de acceso aplicado................................................................................................................181 9.6.3 Personalización de los comandos privrun y privedit con el conmutador ACPS.........182 9.7 Solución de problemas de HP-UX RBAC.....................................................................183 9.7.1 La herramienta de sintaxis de bases de datos rbacdbchk......................................183 9.7.2 Información del comando privrun -v..................................................................184 10 Administración de la auditoría.......................................................................................185 10.1 Auditoría de los componentes.................................................................................186 10.1.1 Comandos....................................................................................................186 10.1.2 Archivos de configuración de auditoría............................................................186 8 Tabla de contenido 10.1.3 Páginas de manual de auditoría.....................................................................187 10.2 Auditoría del sistema............................................................................................187 10.2.1 Planificación de la puesta en ejecución de la auditoría......................................187 10.2.2 Habilitación de la auditoría...........................................................................188 10.2.3 Deshabilitación de la auditoría......................................................................189 10.2.4 Supervisión de los archivos de auditoría..........................................................189 10.2.5 Consideraciones sobre el rendimiento.............................................................190 10.2.6 Pautas para administrar el sistema de auditoría................................................190 10.3 Auditoría de usuarios............................................................................................190 10.4 Auditoría de sucesos.............................................................................................191 10.5 Rastros de auditoría..............................................................................................193 10.5.1 Configuración de rastros de auditoría..............................................................194 10.5.2 Supervisión y administración de rastros de auditoría.........................................195 10.6 Consulta de los archivos de registro de auditoría......................................................196 10.6.1 Ejemplos de uso del comando audisp..............................................................197 10.7 Autoauditoría.......................................................................................................198 10.8 Auditoría con HP-UX RBAC....................................................................................199 10.8.1 Auditoría en función de los criterios de HP-UX RBAC y el archivo /etc/rbac/aud_filter...............................................................................................199 10.8.2 Procedimiento para auditar los criterios de HP-UX RBAC....................................200 A Sistemas de confianza.........................................................................................................201 A.1 Configuración de un sistema de confianza......................................................................201 A.2 Auditoría de un sistema de confianza............................................................................203 A.3 Administración de las contraseñas y del acceso en un sistema de confianza.......................203 A.3.1 Archivos de contraseñas.......................................................................................204 A.3.1.1 El archivo /etc/passwd.................................................................................204 A.3.1.2 La base de datos /tcb/files/auth/.................................................................205 A.3.2 Selección y generación de contraseñas..................................................................207 A.3.3 Caducidad de las contraseñas..............................................................................207 A.3.4 Historial y reutilización de las contraseñas..............................................................208 A.3.5 Control del acceso en función del tiempo...............................................................208 A.3.6 Control del acceso en función del dispositivo..........................................................208 A.3.7 Manejo de las bases de datos de un sistema de confianza......................................209 A.4 Pautas para realizar copias de seguridad y recuperaciones de confianza...........................209 B Otros productos de seguridad...............................................................................................213 B.1 HP-UX HIDS.................................................................................................................213 B.2 Parches de seguridad...................................................................................................213 B.3 HP-UX IPFilter..............................................................................................................214 B.4 HP-UX Secure Shell......................................................................................................214 Glosario................................................................................................................................215 Tabla de contenido 9 Índice...................................................................................................................................223 10 Tabla de contenido Acerca de este documento Historial de publicación La fecha de publicación y el número de referencia del documento indican su edición actual. La fecha de publicación cambia cuando se publica una edición nueva. Para garantizar la recepción de las ediciones nuevas, deberá abonarse al servicio de soporte técnico del producto apropiado. Para obtener detalles, póngase en contacto con el representante de ventas de HP. Las diversas versiones de este documento se facilitan en: http://docs.hp.com Marzo de 2008 Octubre de 2007 Número de referencia 5992-3422 • El documento se ha dividido en tres partes: Protección de los sistemas, Protección de los datos y Protección de la identidad. • Se ha agregado un capítulo para documentar el grupo de características HP-UX Standard Mode Security Extensions (consulte el Capítulo 4). • Security Patch Check se ha sustituido por Software Assistant. • Se ha agregado una figura para ilustrar la interface de usuario de HP-UX Bastille (consulte la Sección 3.3). • Se ha agregado el archivo de registro de configuración de HP-UX Bastille assessment-log.config (consulte la Sección 3.5). • Se han efectuado diversas modificaciones. Número de referencia 5992-2920 • Agosto de 2007 Febrero de 2007 Se ha agregado un capítulo que describe HP-UX Bastille. Número de referencia 5992-1933 (sólo en inglés) • Se eliminó el administrador Process Resource Manager (PRM) de la lista de productos que no admiten contraseñas ocultas (consulte la Sección 2.4.5). • Se corrigió search por nsearch en lista_permisos (consulte la Sección 7.6.2). Número de referencia 5991-6510 Primera edición Historial de publicación 11 NOTA: Los volúmenes que conforman la serie Guía del administrador de sistemas HP-UX se pueden actualizar de forma independiente. Por lo tanto, las versiones más recientes de los volúmenes del juego pueden variar entre sí con el tiempo. Las versiones más recientes de cada volumen se facilitan en el sitio: http://docs.hp.com Público destinatario La serie Guía del administrador de sistemas HP-UX se ha elaborado para los administradores de sistemas HP-UX con cualquier grado de pericia que tengan que administrar sistemas HP-UX a partir de la revisión HP-UX 11i versión 3. Aunque muchos temas de este juego de documentación se aplican a revisiones anteriores, se han introducido muchos cambios en HP-UX 11i versión 3; por lo tanto, para obtener información sobre las revisiones anteriores, consulte el documento Administración de sistemas y grupos de trabajo: Guía para los administradores de sistemas HP-UX. Acerca de este juego de documentos La serie Guía del administrador de sistemas HP-UX documenta el principal conjunto de tareas (y conceptos asociados) que se necesita para administrar los sistemas que ejecutan HP-UX 11i versión 3, y consta de los siguientes volúmenes: Descripción general Proporciona un enfoque avanzado de HP-UX 11i, sus componentes y la relación existente entre ellos. Administración de la configuración Describe muchas de las tareas que deben llevarse a cabo para configurar y personalizar la configuración del sistema y el comportamiento de los subsistemas. Administración de volúmenes lógicos Documenta la forma de configurar volúmenes físicos, grupos de volúmenes y volúmenes lógicos mediante el administrador HP Logical Volume Manager (LVM). Administración de la seguridad Documenta los datos y las características de seguridad del sistema HP-UX 11i. Tareas de administración rutinarias Documenta muchas de las tareas corrientes que deben llevarse a cabo para mantener el sistema funcionando sin dificultades. Guía del administrador de sistemas HP-UX: Administración de la seguridad se divide en tres partes: Protección de los sistemas, Protección de los datos y Protección de la identidad. Estas partes constan de los siguientes temas: 12 Acerca de este documento Capítulo 1 Capítulo 2 Capítulo 3 Capítulo 4 Capítulo 5 Capítulo 6 Capítulo 7 Capítulo 8 Capítulo 9 Capítulo 10 Apéndice A Apéndice B Describe consideraciones sobre la seguridad relativas a los procesos de inicio e instalación. Explica cómo administrar la seguridad de los usuarios y del sistema una vez instalado el sistema operativo. Describe cómo fortalecer y cerrar un sistema con ayuda de HP-UX Bastille para mejorar la seguridad del sistema operativo HP-UX. Describe las características y componentes de HP-UX Standard Mode Security Extentions. Explica la forma de proteger el acceso remoto al sistema. Explica la forma de controlar y proteger los sistemas de archivos. Describe los compartimentos y la forma de aislar los componentes de un sistema. Describe los privilegios expresos y la forma de dividir las capacidades de los superusuarios en conjuntos de privilegios. Describe las características y componentes de HP-UX Role-Based Access Control. Describe la administración del sistema de auditoría. Describe los sistemas de confianza. Describe otros productos de seguridad. Nombres de revisión e identificadores de revisión de HP-UX 11i Con HP-UX 11i, HP distribuye un sistema operativo de alta disponibilidad, seguro y manejable. HP-UX 11i admite entornos empresariales, críticos para la misión y de computación técnica, y se facilita tanto en sistemas HP 9000 como en servidores HP Integrity. Cada revisión de HP-UX 11i lleva asociado un nombre de revisión y un identificador de revisión. El identificador de la revisión se obtiene al utilizar el comando uname con la opción -r. Para obtener una lista de las revisiones disponibles de HP-UX 11i, consulte la siguiente tabla: Identificador de la revisión Nombre de la revisión Arquitectura de procesador compatible B.11.11 HP-UX 11i versión 1 HP 9000 B.11.23 HP-UX 11i versión 2 Intel™ Itanium™ B.11.23 HP-UX 11i versión 2, septiembre de 2004 HP 9000 HP-UX 11i versión 3 HP 9000 B.11.31 Itanium Itanium Nombres de revisión e identificadores de revisión de HP-UX 11i 13 Para obtener información sobre los sistemas y la arquitectura de procesador admitidos para diversas versiones de HP-UX 11i, consulte las notas de la revisión del sistema HP-UX 11i específicas de la versión de HP-UX que ejecute (por ejemplo, Notas de la revisión de HP-UX 11i versión 3). Búsqueda de información sobre HP-UX La siguiente tabla presenta un resumen de las ubicaciones que facilitan información general sobre la administración de sistemas en relación con HP-UX. No obstante, esta tabla no incluye información de productos específicos. Si tiene que: Consulte: Buscar: el documento Notas de la revisión • el medio HP Instant Information de HP-UX 11i específico de su (sólo en inglés) versión de HP-UX. Por ejemplo, tal • http://docs.hp.com vez desee consultar el documento Notas de la revisión de HP-UX 11i • el directorio /usr/share/ versión 3. doc/ (sólo en inglés) • Lo que ha cambiado en las revisiones de HP-UX • El contenido de los entornos operativos • Los requisitos de firmware y los sistemas admitidos para una revisión específica Instalar o actualizar HP-UX Ubicación: El directorio /usr/share/doc contiene sólo la nota de la revisión original correspondiente a la versión del sistema HP-UX. Para obtener las notas de la revisión revisadas, consulte el medio HP Instant Information más reciente o la dirección http://docs.hp.com. • Leer antes de la instalación o la actualización a HP-UX • el kit de medios (suministrado con el entorno operativo) • Guía de instalación y actualización a HP-UX 11i • http://docs.hp.com (Nota: Consulte los documentos de la versión específica de HP-UX.) Administrar un sistema HP-UX Para las revisiones posteriores a HP-UX 11i versión 3: • el medio HP Instant Information (sólo en inglés) • Guía del administrador de sistemas HP-UX (juego de varios volúmenes) • http://docs.hp.com otras fuentes de información sobre administración de sistemas: • nPartition Admnistrator's Guide • Planning Superdome Configurations (libro blanco) 14 Acerca de este documento • Planning Superdome Configurations (libro blanco) Información conexa Se facilita información adicional sobre la seguridad y HP-UX en la dirección http://docs.hp.com. En concreto, se dispone de los siguientes documentos: • HP-UX AAA Server Administrator's Guide • HP-UX Host Intrusion Detection System Administrator's Guide • HP-UX IPFilter Administrator's Guide • HP-UX IPSec Administrator's Guide • HP-UX Secure Shell Release Notes Convenciones Este documento utiliza las siguientes convenciones tipográficas: reboot(1M) Título de libro Página de manual de HP-UX. reboot es el nombre y 1M es la sección de HP-UX Reference. En la Web y en el medio Instant Information, puede ser un enlace activo con la propia página de manual. En la línea de comandos de HP-UX, puede introducir «man reboot» o «man 1M reboot» para consultar la página de manual. Para obtener más información, consulte la página de manual de man(1). El título de un libro. En la Web y en el medio Instant Information, puede ser un enlace activo con el libro en sí. El nombre de una tecla del teclado. Retorno y Entrar hacen referencia a la misma tecla. Texto que se recalca. Texto que se recalca enérgicamente. La presentación de una palabra o expresión importante. Texto que muestra el equipo. Funda de tecla Énfasis Énfasis Término Salida del equipo Entrada del Comandos y otro tipo de texto que escribe el usuario. usuario Comando Nombre de un comando o expresión de comandos válida. Variable El nombre de una variable que se puede sustituir en un comando o una función, o información de una pantalla que representa varios valores posibles. [] El contenido es optativo cuando se trata de formatos y descripciones de comandos. {} El contenido es obligatorio cuando se trata de formatos y descripciones de comandos. Si el contenido es una lista separada por una pleca (|), deberá elegir uno de los elementos. ... El elemento anterior puede repetirse un número arbitrario de veces. Información conexa 15 | 16 Separa los elementos de una lista de opciones. Acerca de este documento Parte I Protección de los sistemas Un factor crítico de la seguridad empresarial es la reducción al mínimo del sistema y su fortalecimiento. HP-UX 11i ofrece un conjunto de características de seguridad diseñadas para abordar los puntos vulnerables conocidos y desconocidos mediante la ejecución sólo de los servicios que sean necesarios, reduciendo de este modo al mínimo un posible punto de ataque. Esta sección analiza las siguientes herramientas HP-UX que protegen a los sistemas contra ataques, y que detectan las amenazas y reaccionan ante ellas: • Instalación del entorno operativo HP-UX de forma segura (Capítulo 1) • Administración de la seguridad de los usuarios y del sistema (Capítulo 2) • HP-UX Bastille (Capítulo 3) • Standard Mode Security Extensions (Capítulo 4) • Administración de la seguridad relativa al acceso remoto (Capítulo 5) 17 18 1 Instalación del entorno operativo HP-UX de forma segura Este capítulo describe las consideraciones de seguridad relacionadas con los procesos de inicio e instalación, incluidos los siguientes temas: • Consideraciones sobre la seguridad de la instalación (Sección 1.1) • Prevención de infracciones de seguridad durante el proceso de inicio (Sección 1.2) • Habilitación de la seguridad de inicio de sesión para el usuario root (Sección 1.3) • Uso de la autenticación de inicio para impedir el acceso no autorizado (Sección 1.4) • Definición de las opciones de seguridad en el momento de la instalación (Sección 1.5) • Instalación de parches de seguridad (Sección 1.6) • Consejos sobre la seguridad posterior a la instalación para la realización de copias de seguridad y la recuperación (Sección 1.7) 1.1 Consideraciones sobre la seguridad de la instalación Antes de instalar o actualizar a un sistema operativo nuevo o a un software nuevo, acostúmbrese a estudiar las consideraciones sobre la seguridad. Haga que las siguientes medidas de seguridad sean parte de la preparación para la instalación: • Revise el contenido del kit de medios. Lea las Notas de la revisión y otra información conexa en http://docs.hp.com. • Decida el software que necesita y el que no. No instale software innecesario. Consulte otros capítulos de este documento para obtener ayuda sobre cómo decidir en relación con los productos de software de seguridad. • Desconecte o desactive el sistema de la red, sobre todo de la red pública, hasta que se hayan completado las modificaciones de seguridad. Considere con qué nivel de seguridad, de haberlo, desea realizar la instalación. Para obtener más información, consulte la Sección 1.5. • Asegúrese de que la consola del sistema está protegida físicamente y de que la consola LAN está desconectada o se utiliza sólo a través de una red donde están permitidos y protegidos los protocolos de texto no cifrado, como telnet. Ésta es una consideración importante sobre la seguridad. Al restringir el acceso a la consola del sistema se ayuda a evitar que personas no autorizadas cambien la configuración de seguridad del sistema. • Instale los parches más recientes, sobre todo los parches de seguridad. Para obtener más información, consulte la Sección 1.6. • Mantenga un sistema de copia de seguridad y de recuperación. Para obtener más información, consulte la Sección 1.7. 1.1 Consideraciones sobre la seguridad de la instalación 19 1.2 Prevención de infracciones de seguridad durante el proceso de inicio Se pueden producir infracciones de seguridad durante la secuencia de inicio. El proceso de inicio se puede interrumpir, permitiendo el acceso al sistema de una persona sin autorización. Si determinados archivos de sistema se han modificado de manera incorrecta o intencionadamente antes del reinicio, el sistema puede tener problemas durante el reinicio y después del mismo. Por lo tanto, lleve a cabo las siguientes tareas preventivas: • Asegúrese de que el sistema y la consola del sistema están físicamente protegidos, y de que sólo los usuarios autorizados pueden tener acceso. • Habilite la característica de autenticación de inicio para permitir que sólo los usuarios especificados puedan iniciar el sistema en modo monousuario. Consulte la Sección 1.4. • Asegúrese de que los archivos de sistema está protegidos contra escritura; es posible que algunos necesiten estar protegidos contra lectura. A continuación, se muestra un resumen de la secuencia de inicio que se produce cuando se enciende o reinicia el equipo. Consulte el documento Guía del administrador de sistemas HP-UX: Tareas de administración rutinarias para obtener más información sobre la secuencia de inicio. 1. Durante el inicio, se produce una espera de unos 10 segundos que permite anular la secuencia de inicio automático. Al llegar a este punto, un intruso puede interrumpir la secuencia de inicio y entrar en el sistema. Puede obtener acceso de usuario root al interrumpir la secuencia de inicio presionando cualquier tecla. El cargador ISL le pide un comando. Escribir el siguiente comando hace que el sistema esté en modo monousuario: ISL> hpux -is Si no utiliza autenticación de inicio, cualquier usuario puede iniciar una sesión como usuario root sin contraseña. La autenticación de inicio sólo permite a usuarios específicos iniciar sesión como usuarios root. 2. 3. Si no se ha interrumpido la secuencia de inicio, el proceso de inicialización continúa. HP-UX lleva a cabo su proceso de inicialización y empieza a funcionar normalmente, listo para iniciar una sesión. Al llegar a este punto, puede producirse otra infracción de seguridad si un intruso ya ha obtenido acceso de usuario root. Si un intruso interrumpe el proceso de inicio, ya ha obtenido acceso de usuario root al sistema y, en teoría, es propietario del sistema. Esta propiedad permite efectuar cambios en el sistema con una gran cantidad de mecanismos. 20 Instalación del entorno operativo HP-UX de forma segura 1.3 Habilitación de la seguridad de inicio de sesión para el usuario root Muchos protocolos de red, como rlogind y telnetd, no cifran las comunicaciones de red, lo que facilita que un intruso detecte las contraseñas administrativas desde la red. Trate de reducir al mínimo el uso de estos protocolos no seguros. Para evitar un inicio de sesión administrativo a través de un protocolo de ese tipo, puede utilizar el archivo /etc/securetty a fin de limitar el inicio de sesión en la cuenta de usuario root sólo a través de la consola del sistema. Por ejemplo, para restringir los inicios de sesión de usuarios root sólo a la consola, cree el archivo /etc/security con una sola línea que consista en la consola. Para obtener más información, consulte la página de manual de login(1). 1.4 Uso de la autenticación de inicio para impedir el acceso no autorizado La característica de autenticación de inicio protege el inicio en modo monousuario con autenticación de contraseñas. Esto permite configurar un sistema para que sólo los usuarios autorizados puedan iniciar el equipo en modo monousuario. La característica de autenticación de inicio se debe habilitar antes de reiniciar el sistema. Dos atributos del archivo /etc/default/security configuran la autenticación de inicio: • BOOT_AUTH habilita o deshabilita la autenticación de inicio. Especifique BOOT_AUTH=1 para habilitar la autenticación de inicio. Por defecto, la autenticación está deshabilitada (BOOT_AUTH=0). • BOOT_USERS define quién puede iniciar una sesión como usuario root cuando la característica de autenticación de inicio está habilitada. Los nombres enumerados en BOOT_USERS se separan con comas. Por ejemplo: BOOT_USERS=root,mary,jack,amy,jane BOOT_USERS=root es el valor por defecto. El archivo de configuración /etc/default/security se explica en el Capítulo 2 y en la página de manual de security(4). 1.5 Definición de las opciones de seguridad en el momento de la instalación Las opciones de seguridad en el momento de la instalación permiten configurar un motor de cierre de seguridad HP-UX Bastille, que puede incluir un servidor de seguridad HP-UX IPFilter. Una vez completada la instalación, tendrá uno de los niveles de seguridad preconfigurados. Durante la instalación puede elegir entre cuatro niveles de seguridad preconfigurados: Sec00Tools Se instala la infraestructura de seguridad pero sin habilitar características de seguridad opcionales. Es el valor por defecto. 1.3 Habilitación de la seguridad de inicio de sesión para el usuario root 21 Sec10Host Sec20MngDMZ Sec30DMZ Se instala un sistema de cierre basado en sistema host, sin la configuración del servidor de seguridad HP-UX IPFilter. Con este nivel de seguridad, la mayoría de los servicios de red están deshabilitados. Estos servicios se pueden reintegrar mediante la ejecución del comando bastille(1M). Se instala un sistema de cierre administrado que bloquea la mayor parte del tráfico entrante con un servidor de seguridad HP-UX IPFilter. Se instala un sistema de cierre completo con una zona desmilitarizada, que es un cierre de red IPFilter y basado en sistema host. HP-UX IPFilter bloquea casi todas las conexiones entrantes. Para obtener información sobre HP-UX Bastille, consulte el Capítulo 3. Para obtener información sobre HP-UX IPFilter, consulte el documento HP-UX IPFilter Administrator's Guide en: http://docs.hp.com/en/internet.html#IPFilter 1.6 Instalación de parches de seguridad Inmediatamente después de la instalación, aplique los parches obligatorios y recomendados con ayuda de HP-UX Software Assistant (SWA). SWA es una herramienta basada en la línea de comandos que consolida y simplifica la administración de parches y la administración de boletines de seguridad en los sistemas HP-UX. La herramienta SWA sustituye a Security Patch Check (SPC) y es la utilidad cuyo uso recomienda HP para mantenerse actualizado en relación con los boletines de seguridad publicados por HP para el software HP-UX. NOTA: El uso de la herramienta de software Software Assistant puede ayudar a mejorar la seguridad del sistema, pero no la garantiza. Para obtener más información sobre SWA, consulte: • El sitio web sobre HP-UX Software Assistant ubicado en: https://www.hp.com/go/swa • swa(1M) • El documento HP-UX Software Assistant System Administration Guide ubicado en: http://docs.hp.com 22 Instalación del entorno operativo HP-UX de forma segura 1.7 Consejos sobre la seguridad posterior a la instalación para la realización de copias de seguridad y la recuperación Una vez que el sistema esté en funcionamiento, aún deberá mantener su seguridad. Sea diligente en el mantenimiento de archivos de copia de seguridad y recuperación del sistema. A continuación, se indican algunas pautas: • Utilice sólo los comandos fbackup y frecover para realizar copias de seguridad y recuperar archivos de forma selectiva. Los comandos fbackup y frecover son los únicos que retienen las listas de control de acceso (ACL). Utilice la opción -A de estos comandos cuando realice una copia de seguridad de archivos y los recupere para utilizarlos en sistemas que no apliquen listas ACL. Consulte las páginas de manual de fbackup(1M) y frecover(1M). • Si prevé recuperar los archivos en otro sistema, asegúrese de que el nombre de usuario del propietario y el nombre de grupo concuerdan en ambos sistemas. • No olvide que los medios de copia de seguridad contienen datos confidenciales. Restrinja el acceso a los medios a los casos de necesidad probada. • Etiquete las cintas de copia de seguridad y almacénelas en lugar seguro. El almacenamiento fuera de las instalaciones ofrece la máxima seguridad. Guarde los archivos de almacenamiento durante un mínimo de 6 meses y, al cumplirse el plazo, recicle los medios. • Realice copias de seguridad incrementales diarias y copias de seguridad completas semanales. Sincronice el programa de copia de seguridad con el flujo de información de la empresa. Por ejemplo, si se actualiza una base de datos importante todos los viernes, podría programar la copia de seguridad semanal para los viernes por la noche. • Si en el momento debido debe hacer una copia de seguridad de todos los archivos, pida a todos los usuarios que cierren su sesión antes de proceder a realizar la copia. El comando fbackup le avisa si se cambia un archivo mientras se realiza la copia de seguridad. • Examine el archivo de registro de las copias de seguridad más recientes para identificar los problemas que se produzcan durante la copia de seguridad. Defina permisos restrictivos en el archivo de registro de copia de seguridad. • Tenga en cuenta que el comando frecover permite sobrescribir un archivo. No obstante, el archivo retiene los permisos de acceso y las listas ACL definidos al realizar la copia de seguridad del archivo. • Pruebe de antemano el proceso de recuperación a fin de asegurarse de que puede recuperar por completo los datos en el caso de producirse una emergencia. • Al recuperar archivos procedentes de otro equipo, es posible que tenga que ejecutar el comando chown para definir el número de identificación de usuario y la identificación de grupo para el sistema en el que residan ahora dichos archivos, 1.7 Consejos sobre la seguridad posterior a la instalación para la realización de copias de seguridad y la recuperación 23 si el usuario y el grupo no existen en el sistema nuevo. Si los archivos se recuperan en un sistema nuevo que no tenga el grupo especificado, los archivos asumen la propiedad de grupo de la persona que ejecute el comando frecover. Si los nombres de propietario y grupo tienen significados diferentes en sistemas diferentes, los resultados de la recuperación pueden ser inesperados y no los deseados. 24 • Aunque un error de alimentación no debería conllevar la pérdida de archivos, si alguien informa de la pérdida de un archivo después de un error de alimentación, búsquelo en el directorio /lost+found antes de restaurarlo a partir de una cinta de copia de seguridad. • Para comprobar el contenido de la cinta desde la que se vaya a realizar la recuperación, utilice la opción -I del comando frecover para obtener una vista preliminar del índice de archivos de la cinta. La copia de seguridad mantiene intactos los permisos existentes de un sistema de archivos. El comando frecover impide la lectura del archivo si los permisos de acceso del archivo lo prohíben. • Nunca recupere en su sitio ningún archivo crítico, por ejemplo, /etc/passwd, ni los ubicados en /tcb/files. En su lugar, restaure el archivo en un directorio temporal (no utilice /tmp), y conceda a este directorio permisos drwx------, lo que impide que nadie más lo utilice. Compare los archivos restaurados con los archivos que hayan de reemplazarse. Efectúe los cambios necesarios. • Asegúrese de que activa la auditoría. La auditoría no se activa automáticamente después de recuperar el sistema. Instalación del entorno operativo HP-UX de forma segura 2 Administración de la seguridad de los usuarios y del sistema Este capítulo aborda la seguridad básica de los usuarios una vez instalado el sistema operativo. Concretamente, se centra en los inicios de sesión, las contraseñas y otras interacciones de los usuarios con el sistema. Se analizan los siguientes temas: • Administración del acceso de los usuarios (Sección 2.1) • Autenticación de los usuarios durante el inicio de sesión (Sección 2.2) • Autenticación de los usuarios con los módulos PAM (Sección 2.3) • Administración de las contraseñas (Sección 2.4) • Definición de los atributos de seguridad del sistema (Sección 2.5) • Manejo de los programas setuid y setgid (Sección 2.6) • Prevención de ataques de desbordamiento del búfer en la pila (Sección 2.7) • Protección de los terminales y las estaciones de trabajos sin vigilancia (Sección 2.8) • Protección contra el acceso de dispositivos remotos al sistema (Sección 2.9) • Protección de los titulares de inicio de sesión (Sección 2.10) • Protección de la cuenta de usuario root (Sección 2.11) 2.1 Administración del acceso de los usuarios Los usuarios autorizados obtienen acceso al sistema al facilitar un nombre de usuario (nombre de inicio de sesión) y una contraseña válidos. Cada usuario se define por medio de una entrada en el archivo /etc/passwd. HP System Management Homepage (HP SMH) puede utilizarse para agregar, eliminar, desactivar, reactivar o modificar la cuenta de un usuario. Para obtener más información sobre las contraseñas, consulte las páginas de manual de passwd(4) y passwd(1), así como la Sección 2.4 de este documento. 2.1.1 Supervisión de las cuentas de usuario A continuación, se indican algunas pautas para supervisar las cuentas de usuario: • Examine periódicamente la salida de los comandos last, lastb y who en busca de inicios de sesión poco comunes. • Compruebe que todos los usuarios con cuentas tienen auténtica necesidad empresarial de tener acceso al sistema. • Esté vigilante del uso compartido por varios usuarios de la misma cuenta de usuario. No permita que dos usuarios compartan la misma cuenta de usuario. 2.1 Administración del acceso de los usuarios 25 • Compruebe que no hay cuentas de usuario que compartan el mismo número de identificación de usuario (UID). • Asegúrese de que todas las cuentas tienen contraseñas seguras que se cambian periódicamente. • Compruebe que todos los directorios iniciales de usuarios cuentan con los permisos adecuados. La mayoría de los directorios iniciales tienen acceso de lectura, pero no de escritura para otros usuarios. Para obtener una mayor protección, defina los permisos de lectura, escritura y ejecución sólo para el propietario del directorio. • Asegúrese de que todos los usuarios comprenden las directivas de seguridad. Coloque un archivo con las directivas de seguridad de la empresa en cada directorio inicial. • Examine el archivo /etc/passwd u otra base de datos de usuarios apropiada en busca de cuentas sin utilizar y, en concreto, de usuarios que ya no trabajen en la empresa. • Examine las cuentas de usuario root para saber quién tiene acceso de usuario root. • Considere la posibilidad de implementar la aplicación HP-UX Role-based Access Control (RBAC) para reducir al mínimo los riesgos asociados a que varios usuarios tengan acceso a la cuenta de usuario root. Para obtener más información, consulte el Capítulo 9. • Examine las cuentas de invitado para saber con qué frecuencia se utilizan. 2.1.2 Supervisión de las cuentas de invitado Para obtener la máxima seguridad, no permita el uso de cuentas abiertas o de invitado. Si en efecto existen cuentas de invitado, dé los pasos siguientes: • Cambie la contraseña de la cuenta de invitado con frecuencia. Puede especificar la contraseña. • Utilice un shell restringido (rsh) para limitar el acceso al sistema. Para obtener información sobre el comando rsh, consulte las páginas de manual de sh(1) y sh-posix(1). • Las cuentas de invitado a menudo se olvidan. Aplique uno de los siguientes métodos para deshabilitar la cuenta de invitado cuando no se utilice: — Utilice atributos de seguridad por cada usuario para deshabilitar automáticamente la cuenta transcurrido un determinado número de días de inactividad. Para obtener más información, consulte la página de manual de security(4) y la Sección 2.5.2.2. — Utilice el siguiente comando para bloquear la cuenta de invitado: # passwd -l guest — Utilice el siguiente comando para eliminar la cuenta de invitado: 26 Administración de la seguridad de los usuarios y del sistema # userdel guest • Programe un trabajo at para bloquear automáticamente cuentas temporales: # at now +14 days passwd -l cuenta_temporal • Analice periódicamente los archivos /var/adm/wtmp y /var/adm/sulog en busca de cuentas sin utilizar. Para obtener más información, consulte las páginas de manual de sh(1) y su(1). 2.1.3 Creación de cuentas de usuario de aplicaciones Si los usuarios utilizan sólo HP-UX para iniciar una aplicación, no necesitan tener acceso a un shell. Estos usuarios únicamente deberían utilizar la aplicación (por ejemplo, un sistema de administración de bases de datos) y no necesitan tener acceso a ninguna funcionalidad de HP-UX. Para restringir el acceso a HP-UX, modifique el archivo /etc/passwd de manera que sólo se ejecute un comando específico después de que el usuario inicie una sesión. El archivo /etc/passwd contiene información fundamental necesaria durante el inicio de la sesión: • Nombre de usuario • Contraseña cifrada • Id. del usuario • Id. de grupo • Campo de comentarios • Directorio inicial • Programa de inicio de sesión Normalmente, el programa de inicio de sesión es un shell, como /bin/sh, pero no es necesario que lo sea. Puede crear una cuenta cautiva (una cuenta que inicia la sesión de un usuario directamente en una aplicación) identificando la aplicación como el shell de inicio de sesión. A continuación, se muestra un ejemplo de cómo restringir la capacidad de un usuario para que ejecute sólo el comando date. La entrada de /etc/passwd es la siguiente: nombre_usuario:rc70x.4,sx2:20:1:run only date command:/home/date:/usr/bin/date En el símbolo de sistema de inicio de sesión, un usuario escribe el nombre_usuario y la contraseña adecuada. El comando date se ejecuta y, a continuación, se cierra inmediatamente la sesión del usuario. login:nombre_usuario Password:xxxxxx Tue Nov 14 18:38:38 PDT 2006 2.1 Administración del acceso de los usuarios 27 2.1.4 Administración de las cuentas de grupo Cuando un grupo deba compartir o tener acceso a archivos relacionados con un proyecto, dé estos pasos para garantizar la seguridad: 1. 2. 3. Compruebe que cada miembro tiene una entrada en el archivo /etc/passwd. Cree una entrada para el grupo en el archivo /etc/group. Cree un directorio compartido para el grupo. drwxrwx-- root project /home/projects 4. Defina el comando umask en el perfil (~/.profile) de cada miembro del grupo. En el siguiente ejemplo, los usuarios del grupo leen, escriben y ejecutan archivos, pero nadie más puede hacerlo: umask u=rwx,g=rwx, o= 2.2 Autenticación de los usuarios durante el inicio de sesión Para obtener acceso a un sistema y sus recursos, los usuarios necesitan iniciar una sesión. Al controlar el acceso al sistema, puede intentar impedir que usuarios no autorizados tengan acceso al mismo. No obstante, aunque usuarios no autorizados obtengan acceso, puede seguir impidiéndoles que ejecuten programas que consuman recursos y que tengan acceso a datos del sistema. Esta sección explica lo que ocurre durante el proceso de inicio de sesión (login), desde el momento en que se escribe el nombre de usuario hasta el momento en que se tiene acceso a un símbolo del sistema del shell. 2.2.1 Explicación del proceso de inicio de sesión Los siguientes pasos describen el proceso de inicio de sesión. Esta información muestra lo importante que es crear nombres de usuario únicos y mantener una directiva de seguridad mediante contraseñas. Para obtener más información, consulte la página de manual de login(1). 1. 2. 3. Una vez instalado el sistema, el Login Manager de escritorio muestra una pantalla de inicio de sesión. Si está instalado, el entorno Common Desktop Environment (CDE) muestra una pantalla de inicio de sesión CDE. El programa init crea un proceso getty, que solicita un nombre de usuario. Escriba su nombre de usuario. El programa getty transmite el nombre de usuario al programa login. El programa login busca el nombre de usuario en el archivo /etc/passwd. • Si el nombre de usuario existe, login continúa con el paso 4. • Si el nombre de usuario no existe, login realiza las siguientes comprobaciones: — Solicita una contraseña (Password: ). — Si se especifica una contraseña no válida, el sistema muestra el mensaje de error Invalid login. 28 Administración de la seguridad de los usuarios y del sistema — Actualiza el archivo /var/adm/btmp, si existe. El archivo /var/adm/btmp realiza un seguimiento de los intentos de inicio de sesión no válidos. Para obtener más información, consulte la Sección 2.2.2. — Se cierra después de tres intentos de inicio de sesión no válidos consecutivos. 4. 5. 6. El proceso login comprueba el archivo /etc/passwd. • Si el campo de contraseña está definido, login solicita una contraseña y continúa con el paso 5. • Si el campo de contraseña no está definido, el usuario no necesita una contraseña y login continúa con el paso 6. El proceso login compara la contraseña con la contraseña cifrada en /etc/passwd. • Si la contraseña coincide, login continúa con el paso 6. • Si la contraseña no coincide, login muestra el mensaje Invalid login. El proceso login permite tres intentos de inicio de sesión consecutivos. Tras el tercer intento de inicio de sesión no válido por parte del usuario, login se cierra. El proceso login actualiza el archivo /var/adm/wtmp, que realiza un seguimiento de los inicios de sesión válidos. Para obtener más información, consulte la Sección 2.2.2. Tras un inicio de sesión fructuoso, se inicializan las identificaciones de usuario y de grupo, la lista de acceso a grupos y el directorio de trabajo. 7. A continuación, el proceso login ejecuta el comando especificado en el campo de comando del archivo /etc/passwd. Normalmente, el campo de comando contiene el nombre de ruta de un shell, como /bin/ksh, /bin/csh o /bin/sh. Si el campo de comando está vacío, el valor por defecto es /bin/sh. No es necesario que el campo de comando especifique un shell. Para obtener un ejemplo de la ejecución de otro comando, consulte la Sección 2.1.3. 8. Una vez realizada la inicialización del shell, el sistema muestra un mensaje de solicitud y espera a que el usuario introduzca la información solicitada. Puede hacer que el proceso login realice una autenticación adicional de los usuarios mediante los módulos de autenticación enchufables (PAM - Pluggable Authentication Modules). Para obtener más información, consulte la página de manual de pam.conf(4) y la Sección 2.3. 2.2.2 Comprobación de los archivos de seguimiento de inicios de sesión (btmp y wtmp) Los siguientes archivos mantienen un registro de los inicios de sesión: • El archivo /var/adm/btmp realiza un seguimiento de los inicios de sesión infructuosos. 2.2 Autenticación de los usuarios durante el inicio de sesión 29 • El archivo /var/adm/wtmp realiza un seguimiento de los inicios de sesión fructuosos. Utilice el comando lastb para leer el archivo /var/adm/btmp y comprobar si algún usuario no autorizado ha intentado iniciar una sesión. Utilice el comando last para leer el archivo /var/adm/wtmp. Los comandos last y lastb muestran la información de usuarios más reciente, en orden descendente. Los archivos wtmp y btmp tienden a aumentar de tamaño sin límite, por lo tanto, compruébelos con regularidad. Periódicamente, elimine información que ya no sea útil para evitar que el archivo se haga demasiado grande. Los archivos wtmp y btmp no son creados por los programas que los mantienen. Si estos archivos se eliminan, el mantenimiento del registro de inicios de sesión se desactivará. Un error habitual que cometen los usuarios durante el inicio de sesión es introducir la contraseña, o parte de ella, en el mensaje de solicitud de inicio de sesión. Este inicio de sesión infructuoso se registra en el archivo btmps y expone la contraseña o parte de ella. Por este motivo, la protección de los archivos en btmps debe definirse para que sólo lo lean los administradores. # chmod 400 /var/adm/btmps Si la directiva de seguridad requiere que las sesiones anteriores de un usuario no las vea otro usuario, es posible que también sea necesario modificar la protección del archivo /var/adm/wtmp. Para obtener más información, consulte las páginas de manual de last(1), utmp(4) y wtmp(4). La base de datos utmp es una base de datos de contabilidad de usuarios administrada y sincronizada según /var/adm/utmp mediante el comando utmpd. Los programas de aplicación pueden tener acceso a la base de datos utmps. Consulte las páginas de manual de utmpd(1M) y utmps(4). 2.2.2.1 Ejemplos del comando «last» Esta sección contiene ejemplos de uso del comando last. El siguiente comando enumera todas las sesiones del usuario root y todas las sesiones en el terminal de consola: # last root console | more root pts/1 Mon Mar 12 16:22 - 18:04 (01:41) abcdeux console Mon Mar 12 10:13 - 10:19 (00:06) root pts/2 Fri Mar 9 13:51 - 15:12 (01:21) abcdeux console Thu Mar 8 12:21 - 12:22 (00:00) root pts/ta Wed Mar 7 15:38 - 18:13 (02:34) El siguiente comando muestra cuándo se han producido reinicios: # last reboot reboot system boot Sun Mar 28 18:06 still logged in reboot system boot Sun Mar 28 17:48 - 18:06 (00:17) 30 Administración de la seguridad de los usuarios y del sistema reboot system boot Sun Mar 28 17:40 - 17:48 (00:08) reboot system boot Thu Feb 19 18:25 - 17:40 (37+23:15) reboot system boot Mon Feb 16 13:56 - 18:25 (3+04:28) 2.2.3 Comprobación de quién ha iniciado una sesión El comando who examina el archivo /etc/utmp para obtener información actualizada de los inicios de sesión de los usuarios. Además, el comando who puede mostrar una lista de los inicios de sesión, cierres de sesión, reinicios, cambios en el reloj del sistema y procesos creados por el proceso init. Utilice el comando who -u para supervisar quién ha iniciado una sesión actualmente. Por ejemplo: # who -u aperson console Aug 5 11:28 old 5796 system.home.company.com aperson pts/0 Aug 17 18:11 0:03 24944 system aperson pts/1 Aug 5 11:28 1:14 5840 system Para obtener más información, consulte la página de manual de who(1). 2.3 Autenticación de los usuarios con los módulos PAM Los módulos de autenticación enchufables (PAM - Pluggable Authentication Modules) constituyen un marco estándar del sector que proporciona servicios de autenticación, administración de cuentas, administración de sesiones y servicios de contraseñas. Esta sección proporciona una descripción general de los módulos PAM y describe los archivos de configuración PAM: /etc/pam.conf y /etc/pam_user.conf. Para obtener más información , consulte las páginas de manual de pam(3), pam_*(5), pam.conf(4), pam_user.conf(4) y security(4). 2.3.1 Descripción general Los módulos PAM proporcionan la flexibilidad de elegir cualquier servicio de autenticación disponible en el sistema. El marco PAM también permite conectar nuevos módulos de servicios de autenticación y ponerlos disponibles sin modificar las aplicaciones. Siempre que un usuario inicie una sesión, ya sea de forma local o remota (por ejemplo, con login o rlogin), es necesario comprobar o autenticar el usuario como usuario válido del sistema. A medida que los métodos de autenticación mejoran y cambian con el tiempo, los servicios de inicio de sesión tendrían que cambiar también. Para evitar el cambio constante de los servicios de inicio de sesión simplemente para revisar el código de autenticación, se desarrollaron los módulos PAM, que permiten utilizar distintos métodos de autenticación sin modificar el código de inicio de sesión. Como consecuencia, la autenticación de inicios de sesión, la comprobación de cuentas y la modificación de contraseñas utilizan la interface PAM. 2.3 Autenticación de los usuarios con los módulos PAM 31 Los programas que exigen la autenticación del usuario transmiten las solicitudes al módulo PAM, el cual determina el método de comprobación correcto y remite la respuesta apropiada. Los programas no tienen por qué saber el método de autenticación que se utiliza. Para obtener una descripción general, consulte la Figura 2-1. Figura 2-1 Módulos de autenticación de HP-UX bajo PAM Servicios de autenticación passwd su login telnet Solicitud de validación Biblioteca PAM UNIX DCE libpam_unix.1 Kerberos Utilice el archivo de configuración PAM, /etc/pam.conf, para indicar qué módulo de autenticación se va a utilizar. LDAP libpam_ntlm.1 libpam_krb5.1 libpam_dce.1 NTLM libpam_ldap.1 Los métodos de autenticación se especifican para todo el sistema y para usuarios individuales utilizando los siguientes archivos de sistema PAM: /etc/pam.conf /etc/pam_user.conf Archivo de control de todo el sistema. Define qué módulos de servicios se van a emparejar con servicios. Se consideran los valores por defecto del sistema. Archivo de control de usuario individual. Define qué opciones van a utilizar los módulos de servicios en usuarios específicos. Se trata de un archivo opcional. Para obtener más información, consulte las páginas de manual de pam(3), pam.conf(4), pam_updbe(5) y pam_user.conf(4). 32 Administración de la seguridad de los usuarios y del sistema 2.3.2 Bibliotecas PAM Los módulos de servicios PAM se ponen en ejecución mediante bibliotecas compartidas. Los módulos PAM permiten que varias tecnologías de autenticación coexistan en HP-UX. El archivo de configuración /etc/pam.conf determina qué módulo de autenticación se va a utilizar. Las bibliotecas PAM son las siguientes: • PAM_DCE Los módulos PAM_DCE permiten la integración de DCE en los servicios de entrada del sistema (como login, telnet, rlogin y ftp). Los módulos PAM_DCE proporcionan la funcionalidad de los módulos de autenticación, y administración de cuentas y contraseñas. Estos módulos se admiten mediante la biblioteca PAM_DCE, /usr/lib/security/pam_dce.sl. Para obtener más información, consulte la página de manual de pam_dce(5). • PAM_HPSEC Los módulos PAM_HPSEC administran las extensiones específicas de HP-UX para la autenticación, y la administración de cuentas, contraseñas y sesiones. El uso de /usr/lib/security/$ISA/libpam_hpsec.so.1 es obligatorio para servicios como login, dtlogin, ftp, su, remsh, rexec y ssh. Estos servicios deben colocar libpam_hpsec.so.1 al principio de la pila, encima de uno o varios módulos no opcionales. El módulo pam_hpsec también aplica diversos atributos definidos en /etc/default/security. Para obtener más información, consulte las páginas de manual de pam_hpsec(5) y security(4). • PAM_KRB5 Kerberos es un protocolo de autenticación de red que permite la comunicación segura a través de redes sin transmitir las contraseñas como texto no cifrado. El centro de distribución de claves (KDC - Key Distribution Center) autentica una contraseña y, a continuación, emite un tíquet TGT (Ticket Granting Ticket - Tíquet de concesión de tíquets). La biblioteca compartida de PAM Kerberos es /usr/lib/ security/libpam_krb5.1. Para obtener más información, consulte la página de manual de pam_krb5(5). • PAM_LDAP El protocolo ligero de acceso a directorios (LDAP - Lightweight Directory Access Protocol) es un estándar para centralizar la información de administración de los usuarios, grupos y la red mediante servicios de directorio. La autenticación tiene lugar en un servidor de directorio LDAP. Para obtener más información, consulte la documentación sobre LDAP-UX en http://docs.hp.com/hpux/11iv2/index.html. 2.3 Autenticación de los usuarios con los módulos PAM 33 • PAM_NTLM El administrador PAM NT LAN Manager permite autenticar a los usuarios de HP-UX en los servidores Windows durante el inicio de sesión en el sistema. PAM NTLM utiliza servidores NT para autenticar los usuarios que inicien una sesión en un sistema HP-UX. Para obtener más información, consulte el documento HP CIFS Client Administrator's Guide en http://docs.hp.com/hpux/11iv2/index.html. • PAM_UNIX Los módulos PAM_UNIX proporcionan la funcionalidad de los cuatro módulos PAM: autenticación, y administración de cuentas, sesiones y contraseñas. Estos módulos se admiten mediante la biblioteca PAM UNIX, /usr/lib/security/ libpam_unix.1. Para obtener más información, consulte la página de manual de pam_unix(5). • PAM_UPDBE El módulo de servicios de definición de directivas de usuarios para PAM, /usr/ lib/security/libpam_updbe.1, lee las opciones definidas en el archivo de configuración de usuarios, /etc/pam_user.conf, y almacena la información en el identificador de PAM para que la puedan utilizar los módulos de servicios posteriores. Para obtener más información, consulte la página de manual de pam_updbe(5). 2.3.3 Configuración de todo el sistema con /etc/pam.conf El archivo de configuración de PAM (/etc/pam.conf) define los mecanismos de seguridad que se utilizan para autenticar usuarios. Los valores por defecto de dicho archivo proporcionan el funcionamiento acostumbrado del sistema tanto en sistemas HP-UX estándar como en sistemas de confianza. Asimismo, el archivo mencionado presta soporte a los controles de los usuarios individuales y a la funcionalidad de inicio de sesión integrada del entorno DCE. NOTA: En el entorno DCE, use la utilidad auth.adm para crear el archivo de configuración deseado. Desde el punto de vista funcional, este archivo equivale al anterior archivo auth.conf de inicio de sesión intregado de HP. Para obtener más información, consulte la página de manual de auth.adm(1m). Las bibliotecas libpam y libpam_unix de PAM y el archivo de configuración /etc/ pam.conf deben estar en el sistema para que los usuarios puedan iniciar una sesión o modificar contraseñas. La autenticación de HP-UX depende del archivo /etc/pam.conf. El propietario de este archivo debe ser el usuario root y debe tener los siguientes permisos de acceso al archivo: -r--r--r-- 1 root sys 34 1050 Nov 8 10:16 /etc/pam.conf Administración de la seguridad de los usuarios y del sistema Si este archivo se daña o no está presente en el sistema, el usuario root puede iniciar una sesión en la consola en modo monousuario para solucionar el problema. Los nombres de servicio protegidos se enumeran en el archivo de control del sistema, /etc/pam.conf, conforme a cuatro categorías de prueba (tipo_módulo): autenticación (authentication), cuenta (account), sesión (session) y contraseña (password). Para obtener más información, consulte las páginas de manual de pam(3), pam.conf(4) y pam_user.conf(4). 2.3.4 Ejemplo del archivo /etc/pam.conf A continuación, se muestra una lista parcial de un archivo /etc/pam.conf de ejemplo. Las líneas precedidas de un signo de número (#) son líneas de comentario. Las secciones del archivo /etc/pam.conf son administración de la autenticación (authentication management), administración de cuentas (account management), administración de sesiones (session management) y administración de contraseñas (password management). # # PAM configuration # # Notes: # # If the path to a library is not absolute, it is assumed to be # relative to the directory /usr/lib/security/$ISA/ # # For PA applications, /usr/lib/security/$ISA/libpam_unix.so.1 is a # symbolic link that points to the corresponding PA (32 or 64-bit) PAM # backend library. # # The $ISA (i.e. Instruction Set Architecture) token will be replaced # by the PAM engine with an appropriate directory string. # See pam.conf(4). # # Also note that the use of pam_hpsec(5) is mandatory for some of # the services. See pam_hpsec(5). # # Authentication management # login auth required libpam_hpsec.so.1 login auth required libpam_hpsec.so.1 su auth required libpam.hpsec.so.1 bypass_setaud su auth required libpam_unix.so.1 dtlogin auth required libpam_hpsec.so.1 dtlogin auth required libpam_unix.so.1 dtaction auth required libpam_hpsec.so.1 dtaction auth required libpam_unix.so.1 ftp auth required libpam_hpsec.so.1 ftp auth required libpam_unix.so.1 rcomds auth required libpam_hpsec.so.1 rcomds auth required libpam_unix.so.1 sshd auth required libpam_hpsec.so.1 sshd auth required libpam_unix.so.1 OTHER auth required libpam_unix.so.1 # 2.3 Autenticación de los usuarios con los módulos PAM 35 # Account management # login account required login account required su account required su account required libpam_hpsec.so.1 libpam_unix.so.1 libpam_hpsec.so.1 libpam_unix.so.1 2.3.5 Archivo de configuración de usuarios /etc/pam_user.conf El archivo de configuración PAM, /etc/pam_user.conf, configura los módulos PAM por usuario. Este archivo es opcional. Sólo se necesita si las aplicaciones PAM tienen que presentar un comportamiento diferente para diversos usuarios. Puede asignar opciones distintas a usuarios individuales enumerando estos últimos en /etc/pam_user.conf. Para cada nombre_inicio_sesión indicado en este archivo, las opciones mencionadas en dicho archivo sustituyen a las opciones especificadas para el tipo_módulo y la ruta_módulo del archivo /etc/pam.conf. Las entradas del archivo /etc/pam_user.conf utilizan la siguiente sintaxis: nombre_inicio_sesión tipo_módulo ruta_módulo opciones donde: nombre_inicio_sesión tipo_módulo ruta_módulo opciones Nombre de inicio de sesión del usuario. El tipo_módulo especificado en el archivo /etc/ pam.conf. La ruta_módulo asociada a tipo_módulo en el archivo /etc/pam.conf. Cero o varias opciones que el módulo reconoce. El contenido por defecto del archivo /etc/pam_user.conf consiste en comentarios: # # # # # # # # # # # # # # # # # # 36 This file defines PAM configuration for a user. The configuration here overrides pam.conf. The format for each entry is: user_name module_type module_path options For example: user_a user_a user_a auth auth password /usr/lib/security/libpam_unix.1 /usr/lib/security/libpam_dce.1 /usr/lib/security/libpam_unix.1 debug try_first_pass debug user_b user_b auth password /usr/lib/security/libpam_unix.1 /usr/lib/security/libpam_unix.1 debug use_psd debug use_psd See the pam_user.conf(4) manual page for more information Administración de la seguridad de los usuarios y del sistema 2.3.6 Ejemplos: Cómo funcionan los módulos PAM para el inicio de sesión En los siguientes ejemplos se describe el proceso auth para login, en función de cómo esté configurado el archivo /etc/pam.conf: • Si el archivo /etc/pam.conf contiene un único login auth estándar (como el que se muestra a continuación), login continuará de la manera habitual: login • auth required /usr/lib/security/libpam_unix.1 Si hay dos o más entradas login auth para todo el sistema (como las que se muestran a continuación), se procesarán en orden: login login auth auth required required /usr/lib/security/libpam_unix.1 /usr/lib/security/libpam_dce.1 En este caso, se ejecuta el proceso login estándar de HP-UX. A continuación, tiene lugar el proceso de autenticación del entorno DCE. Si ambos procesos transcurren con éxito, el inicio de sesión es fructuoso. Se ejecutan ambos procesos aunque el usuario no supere uno. • Si necesita utilizar métodos de autenticación diferentes para usuarios distintos, coloque la entrada especial libpam_udpbe delante de los módulos de autenticación en el archivo /etc/pam.conf (las líneas se numeran para simplificar su consulta): #/etc/pam.conf #1 login auth #2 login auth #3 login auth required /usr/lib/security/libpam_udpbe.1 required /usr/lib/security/libpam_unix.1 required /usr/lib/security/libpam_dce.1 A continuación, coloque las entradas correspondientes a cada usuario afectado en el archivo /etc/pam_user.conf: #/etc/pam_user.conf #4 allan auth /usr/lib/security/libpam_unix.1 #5 allan auth /usr/lib/security/libpam_dce.1 #6 isabel auth /usr/lib/security/libpam_unix.1 debug try_first_pass debug use_psd Cuando allan inicia una sesión, la línea 1 del archivo /etc/pam.conf hace que PAM lea el archivo /etc/pam_user.conf. Puesto que las rutas de módulo de las líneas 4 y 5 del archivo /etc/pam_user.conf coinciden con las rutas de módulo de las líneas 2 y 3 del archivo /etc/pam.conf, PAM sustituye temporalmente los campos de opciones vacíos de las líneas 2 y 3 del archivo /etc/pam.conf por los valores debug y try_first_pass, respectivamente. A continuación, los módulos especificados por las líneas 2 y 3 se ejecutan con las opciones revisadas. 2.3 Autenticación de los usuarios con los módulos PAM 37 Cuando isabel inicia una sesión, la línea 1 del archivo /etc/pam.conf hace que PAM lea el archivo /etc/pam_user.conf y sustituya temporalmente el campo de opciones de la línea 2 del archivo /etc/pam.conf por el valor debug use_psd. La línea 3 permanece igual. A continuación, los módulos especificados por las líneas 2 y 3 se ejecutan con las opciones revisadas. Cuando george inicia una sesión, la línea 1 del archivo /etc/pam.conf hace que el PAM lea el archivo /etc/pam_user.conf. Puesto que no hay ninguna entrada para george, las líneas 2 y 3 del archivo /etc/pam_user.conf permanecen igual. Los módulos especificados por las líneas 2 y 3 se ejecutan sin ningún cambio. 2.4 Administración de las contraseñas La contraseña es el símbolo más importante de identificación individual. El sistema la utiliza para autenticar a un usuario y franquearle el acceso al sistema. Puesto que las contraseñas son susceptibles a su divulgación cuando se utilizan, almacenan o conocen, deben mantenerse en secreto en todo momento. Las siguientes secciones analizan las contraseñas más detalladamente. 2.4.1 Responsabilidades del administrador del sistema El administrador del sistema y todos los usuarios del sistema deben compartir la responsabilidad de la seguridad de las contraseñas. Los administradores de sistemas llevan a cabo las siguientes tareas relacionadas con la seguridad: 38 • Garantizar que todos los usuarios tienen contraseñas. • Mantener los permisos de acceso apropiados en todos los archivos del sistema, incluidos los archivos estándar de contraseñas y de grupos: /etc/passwd y /etc/ group. • Eliminar o anular las identificaciones de usuario y las contraseñas de los usuarios que ya no sean aptos para obtener acceso al sistema. • Comprobar que las contraseñas de todas las aplicaciones están cifradas. • Comprobar que los permisos relativos a /var/adm/btmp y /var/adm/wtmp están definidos correctamente. • Aplicar contraseñas de un solo uso para el acceso único de invitado. • Informar a los usuarios de sus responsabilidades en cuanto a la seguridad de las contraseñas. • Utilizar la caducidad de las contraseñas para obligar a los usuarios a que cambien periódicamente sus contraseñas. • Impedir la reutilización de contraseñas recientes. Administración de la seguridad de los usuarios y del sistema • Configurar atributos de seguridad para todo el sistema en el archivo /etc/ default/security. Para obtener más información, consulte la Sección 2.5 y la página de manual de security(4). • Convertir el sistema para utilizar contraseñas ocultas. Para obtener más información, consulte la Sección 2.4.5 y las páginas de manual de shadow(4) y pwconv(1M). 2.4.2 Responsabilidades del usuario Todos los usuarios deben atenerse a las siguientes reglas: • Recordar la contraseña y guardarla en secreto en todo momento. • Cambiar la contraseña inicial de inmediato y seguir modificándola. • Informar de los cambios de estado y de las presuntas infracciones de seguridad que se produzcan. • Asegurarse de que nadie les observa mientras escriben la contraseña. 2.4.3 Criterios para establecer una contraseña correcta Tenga en cuenta las siguientes pautas al elegir una contraseña y comunique dichas pautas a los usuarios: • Elija una contraseña que tenga 6 caracteres como mínimo y 80 caracteres como máximo. Entre los caracteres especiales se pueden incluir caracteres de control y símbolos, como asteriscos y barras. En modo estándar, sólo se utilizan los 8 primeros caracteres. • No elija una palabra extraída de un diccionario de ningún idioma, aun cuando la escriba al revés. Hay programas de software con capacidad para buscarla con tino. • No elija una contraseña que pueda asociársele fácilmente; por ejemplo: el nombre de un familiar o el de una mascota, o un pasatiempo. • No utilice secuencias de teclado sencillas, como asdfghjkl, ni repeticiones del nombre de inicio de sesión (por ejemplo, si el nombre de inicio de sesión es ana, una opción de contraseña no aconsejable sería anaana). • Considere el uso de palabras escritas incorrectamente o combinaciones de sílabas de dos palabras que no guarden relación entre sí para crear contraseñas adecuadas. Otro método extendido para crear contraseñas consiste en utilizar las iniciales de un título o una frase predilectos. • Considere el uso de un generador de contraseñas que combine sílabas para conformar un galimatías pronunciable. • No comparta contraseñas con otros usuarios. La dirección debe prohibir que se compartan contraseñas. 2.4 Administración de las contraseñas 39 • Utilice siempre una contraseña. No conviene dejar el campo de contraseña vacío en el archivo /etc/passwd. 2.4.4 Modificación del archivo de contraseñas /etc/passwd Un sistema estándar tiene un archivo de contraseñas: /etc/passwd. Todas las contraseñas se cifran inmediatamente después de crear la entrada correspondiente y se almacenan en el archivo de contraseñas: /etc/passwd. En las comparaciones sólo se utilizan contraseñas cifradas. Siga estas pautas si necesita modificar el archivo de contraseñas: • No permita el uso de campos de contraseñas vacíos o nulos, ya que esto supone una infracción de la seguridad. Un campo de contraseña vacío permite que cualquier usuario pueda definir una contraseña para esa cuenta. • No modifique directamente el archivo de contraseñas. Utilice la interface HP SMH o los comandos useradd, userdel o usermod para modificar las entradas del archivo de contraseñas. Si debe modificar directamente el archivo de contraseñas, utilice el comando vipw y compruébelo con el comando pwck. Para obtener más información, consulte las páginas de manual de vipw(1M) y pwck(1M). 2.4.4.1 Ejemplos de uso del comando passwd A continuación, se ofrecen algunos ejemplos útiles del comando passwd: • Para restablecer la contraseña de un usuario: # passwd user1 • Para imponer el cambio de una contraseña en el siguiente inicio de sesión: # passwd -f user1 • Para bloquear o deshabilitar una cuenta: # passwd -l user2 • Para habilitar la caducidad de contraseñas: # passwd -n 7 -x 28 user1 • Para ver el estado de caducidad de la contraseña de un usuario específico: # passwd -s user • Para ver el estado de caducidad de las contraseñas de todos los usuarios: # passwd -sa 40 Administración de la seguridad de los usuarios y del sistema 2.4.4.2 Formato del archivo /etc/passwd El archivo /etc/passwd se utiliza para autenticar a un usuario en el momento de iniciar una sesión. Dicho archivo contiene una entrada para cada cuenta del sistema HP-UX. Cada entrada consta de siete campos separados por dos puntos. Una entrada típica del archivo /etc/passwd presenta este aspecto: robin:Z.yxGaSvxAXGg:102:99:Robin Hood,Rm 3,x9876,408-555-1234:/home/robin:/usr/bin/sh Los campos contienen los siguientes datos (enumerados en orden de aparición) separados por dos puntos: 1. 2. 3. 4. 5. 6. 7. robin: el nombre de usuario (inicio de sesión), que consta de un máximo de ocho caracteres. Z.yxGaSvxAXGg: el campo de contraseña cifrada. 102: el número de identificación de usuario, un número entero que varía entre 0 y MAXINT-1 (igual a 2.147.483.646 o 231 -2). 99: el número de identificación de grupo, de /etc/group, un número entero que varía entre 0 y MAXINT-1. Robin Hood,Rm 3,x9876,408-555-1234: el campo de comentario, que se utiliza para escribir información de identificación, como el nombre completo del usuario, la ubicación y los números de teléfono. Por motivos históricos, este campo también se llama gecos. /home/robin: el directorio inicial, es decir, el directorio de inicio de sesión original del usuario. /usr/bin/sh: el nombre de ruta del shell de inicio de sesión, que se ejecuta cuando el usuario inicia una sesión. El usuario puede cambiar la contraseña al llamar al comando passwd, el campo de comentario (el quinto campo) con el comando chfn y el nombre de ruta del programa de inicio de sesión (el séptimo campo) con el comando chsh. El administrador del sistema configura el resto de los campos. El número de identificación de usuario debe ser único. Para obtener más información, consulte las páginas de manual de chfn(1), chsh(1), passwd(1) y passwd(4). 2.4.5 Archivo de contraseñas ocultas /etc/shadow La creciente potencia computacional a la que tienen acceso los descifradores malintencionados de contraseñas propicia la vulnerabilidad al descifrado de las contraseñas no ocultas que contiene el archivo /etc/passwd. Las contraseñas ocultas (shadow passwords) mejoran la seguridad del sistema puesto que esconden las contraseñas cifradas en un archivo de contraseñas ocultas. Puede trasladar las contraseñas cifradas previamente almacenadas en el archivo /etc/passwd, que presenta acceso de lectura público, al archivo /etc/shadow, cuyo acceso se restringe sólo a un usuario con los privilegios adecuados. 2.4 Administración de las contraseñas 41 Utilice los siguientes comandos para habilitar, comprobar y deshabilitar las contraseñas ocultas: • El comando pwconv crea un archivo de contraseñas ocultas y copia las contraseñas cifradas desde el archivo /etc/passwd al archivo /etc/shadow. • El comando pwck comprueba los archivos /etc/passwd y /etc/shadow en busca de incoherencias. • El comando pwunconv copia las contraseñas cifradas y la información de caducidad desde el archivo /etc/shadow al archivo /etc/passwd y, a continuación, elimina el archivo /etc/shadow. Para obtener más información, consulte las páginas de manual de pwconv(1M), pwck(1M), pwunconv(1M) y shadow(4). Tenga en cuenta lo siguiente acerca de la característica de contraseñas ocultas: • Cuando la característica de contraseñas ocultas está habilitada, las aplicaciones se pueden ver afectadas si obtienen acceso directo al campo de contraseña del archivo /etc/passwd para obtener información sobre la contraseña y su caducidad. Con las contraseñas ocultas habilitadas, este campo contendrá una x, lo que indica que la información se ubica en el archivo /etc/shadow. Las aplicaciones que utilizan las interfaces PAM para autenticar no se ven afectadas. Para tener acceso al archivo /etc/shadow mediante programación, utilice las llamadas a la función getspent(). Estas llamadas se parecen a las llamadas a la función getpwent() para el archivo /etc/passwd. Para obtener más información, consulte las páginas de manual de getspent(3C) y getpwent(3C). • En el archivo /etc/nsswitch.conf, las contraseñas ocultas son compatibles con los servicios de nombres files, NIS y LDAP, pero pueden no serlo con otros servidores de intercambio de servidor de nombres. Para configurar el sistema de manera que utilice sólo files, NIS y/o LDAP, asegúrese de que la línea passwd del archivo /etc/nsswitch.conf contiene únicamente files, NIS y/o LDAP. Si no existe el archivo /etc/nsswitch.conf o la línea passwd, el valor por defecto es sólo files. Para obtener más información, consulte la página de manual de nsswitch.conf(4). • La característica de contraseñas ocultas se basa en la norma de facto integrada en otros sistemas UNIX. Los siguientes atributos, definidos en el archivo /etc/default/security, se aplican a las contraseñas ocultas. Para obtener más información, consulte la Sección 2.5 y la página de manual de security(4). • 42 INACTIVITY_MAXDAYS: número de días antes de que caduque una cuenta por inactividad. Administración de la seguridad de los usuarios y del sistema • PASSWORD_MINDAYS: número mínimo de días que deben transcurrir para poder modificar una contraseña. • PASSWORD_MAXDAYS: número máximo de días durante los cuales las contraseñas son válidas. • PASSWORD_WARNDAYS: número de días antes de avisar a los usuarios de la caducidad de las contraseñas. Las contraseñas ocultas son compatibles con estos productos: • Protocolo ligero de acceso a directorios (LDAP - Lightweight Directory Access Protocol) • Ignite-UX Directory Access Control (LDAP) • Serviceguard Las constraseñas ocultas no son compatibles con las aplicaciones que prevean que las contraseñas estén en el archivo /etc/passwd. Para obtener más información, consulte las siguientes páginas de manual: passwd(1), pwck(1M), pwconv(1M), pwunconv(1M), getspent(3C), putspent(3C), nsswitch.conf(4), passwd(4), security(4), shadow(4) 2.4.6 Eliminación de las seudocuentas y protección de los subsistemas clave en el archivo /etc/passwd Por tradición, el archivo /etc/passwd contiene muchas «seudocuentas», que son entradas que no están asociadas a usuarios individuales y que no tienen auténticos shells de inicio de sesión interactivo. Algunas de dichas entradas, por ejemplo, date, who, sync y tty, se han desarrollado sólo para ofrecer mayor comodidad al usuario, ya que presentan comandos que se pueden ejecutar sin iniciar una sesión. Al efecto de fortalecer la seguridad, estas entradas se han eliminado del archivo /etc/passwd distribuido para que estos programas sólo los pueda ejecutar un usuario que haya iniciado una sesión. El archivo /etc/passwd contiene otras entradas de este tipo porque se corresponden con procesos que son propietarios de archivos. Los programas con propietarios como adm, bin, daemon, hpdb, lp y uucp abarcan subsistemas completos y constituyen un caso especial. Puesto que estos programas conceden acceso a los archivos que protegen o utilizan, debe permitirse que funcionen como seudocuentas con entradas registradas en el archivo /etc/passwd. Las seudocuentas y las cuentas especiales acostumbradas se relacionan en el Ejemplo 2-1. 2.4 Administración de las contraseñas 43 Ejemplo 2-1 Seudocuentas y cuentas especiales del sistema root::0:3::/:/sbin/sh daemon:*:1:5::/:/sbin/sh bin:*:2:2::/usr/bin:/sbin/sh sys:*:3:3::/: adm:*:4:4::/var/adm:/sbin/sh uucp:*:5:3::/var/spool/uucppublic:/usr/lbin/uucp/uucico lp:*:9:7::/var/spool/lp:/sbin/sh nuucp:*:11:11::/var/spool/uucppublic:/usr/lbin/uucp/uucico hpdb:*:27:1:ALLBASE:/:/sbin/sh nobody:*:-2:-2::/: La clave del estado privilegiado de estos subsistemas es la capacidad que tienen para conceder acceso a los programas que están a su cargo, sin otorgar acceso de usuario root (uid 0). En su lugar, se define el bit de setuid del archivo ejecutable y el usuario efectivo del proceso se corresponde con el propietario del archivo ejecutable. Por ejemplo, el comando cancel forma parte del subsistema lp y se ejecuta como el usuario efectivo lp. Una vez definido el bit de setuid, la seguridad del subsistema asociado media para imponer la seguridad de todos los programas que abarque dicho subsistema, no el sistema completo. Por lo tanto, la vulnerabilidad del subsistema a una infracción de la seguridad también se limita sólo a esos archivos del subsistema. Las infracciones de seguridad no pueden afectar a los programas de otros subsistemas. Por ejemplo, los programas de lp no afectan a los programas de daemon. 2.4.7 Inicio de sesión seguro con HP-UX Secure Shell HP-UX Secure Shell proporciona inicio de sesión remoto seguro, transferencia de archivos y ejecución remota de comandos. Toda la comunicación entre el cliente y el servidor se cifra. Las contraseñas que se transmiten a través de la red nunca se envían como texto no cifrado. Para obtener más información, consulte la página de manual de ssh(1) y la Sección 5.6. 2.4.8 Seguridad de las contraseñas almacenadas en el servicio NIS El servicio de información de red (NIS - Network Information Service) forma parte del sistema de archivos de red (NFS - Network File System). NIS permite administrar la configuración de varios sistemas host desde una ubicación central, un servidor maestro. En lugar de tener las configuraciones de los sistemas host almacenadas por separado en cada host, la información se consolida en una ubicación central. El archivo /etc/ password es uno de los diversos archivos de configuración almacenados en el servidor NIS. El archivo de contraseñas ocultas /etc/shadow no es compatible con el servicio NIS. Para obtener información sobre el servicio NIS, consulte el documento NFS Services Administrator's Guide. 44 Administración de la seguridad de los usuarios y del sistema 2.4.9 Seguridad de las contraseñas almacenadas en un servidor de directorio LDAP LDAP-UX Client Services interactúa con los módulos PAM para autenticar las contraseñas almacenadas en un servidor de directorio LDAP. La biblioteca PAM_LDAP proporciona el servicio de autenticación. 2.5 Definición de los atributos de seguridad del sistema Los atributos de seguridad proporcionan un control adicional de la configuración de los sistemas, al agregar mejoras de seguridad a las contraseñas, inicios de sesión y auditoría. Hay más de 20 atributos. Estos atributos se describen en la página de manual de security(4). Las categorías de atributos se pueden resumir de la siguiente manera: Atributos de inicio de sesión Estos atributos controlan las actividades relativas a los inicios de sesión, como las horas de inicio de sesión, el número de inicios de sesión permitidos y el número de errores de inicio de sesión permitidos antes de bloquear una cuenta. Atributos de contraseña Estos atributos controlan las actividades relativas a las contraseñas, como su longitud, número de caracteres y tipos, así como el nivel dentro del historial, el número de días para poder modificar una contraseña y la caducidad de las contraseñas. Atributos de inicio Estos atributos controlan la autenticación de inicio al definir qué usuarios están autorizados para iniciar el sistema en modo monousuario. Para obtener información sobre la autenticación de inicio, consulte el Capítulo 1. Atributos de conmutación de usuarios Estos atributos definen el valor de la variable de (su) entorno PATH, el nombre de grupo raíz para el comando su y si su debe propagar o no determinadas variables de entorno. Para obtener más información, consulte la página de manual de su(1). Atributo de auditoría Este atributo controla si se han de auditar o no los usuarios. El atributo de auditoría se comprueba durante el proceso de inicio de sesión. Para obtener más información sobre la auditoría de HP-UX, consulte la página de manual de audit(5). Atributo umask Este atributo controla el comando umask() de todas las sesiones iniciadas por pam_unix o pam_hpsec. Para obtener más información, 2.5 Definición de los atributos de seguridad del sistema 45 consulte las páginas de manual de pam_unix(5) y pam_hpsec(5). El atributo umask se comprueba durante el proceso de inicio de sesión. El sistema utiliza estos archivos para procesar los atributos: • /etc/default/security • /var/adm/userdb • /etc/security.dsc • /etc/passwd • /etc/shadow Cada atributo tiene un valor por usuario sólo en una de estas ubicaciones: /etc/ password, /etc/shadow o la base de datos de usuarios en /var/adm/userdb. En la página de manual de security(4) se explica cada atributo y su ubicación por cada usuario. El sistema comprueba qué atributos se aplican de las siguientes maneras: • El sistema examina los valores por usuario de los atributos almacenados en la base de datos de usuarios /var/adm/userdb, el archivo /etc/passwd o el archivo /etc/shadow. • Si no encuentra ningún valor por usuario, el sistema examina los atributos por defecto configurables para todo el sistema en el archivo /etc/default/ security. • Si no encuentra atributos de este tipo, el sistema utiliza los atributos por defecto del archivo /etc/security.dsc. El archivo de descripción de atributos de seguridad, /etc/security.dsc, enumera los atributos que se pueden definir en el archivo /etc/default/security y en la base de datos de usuarios de /var/adm/userdb. Algunos atributos se pueden configurar, mientras que otros son internos. No modifique el archivo /etc/ security.dsc de manera alguna. 2.5.1 Configuración de los atributos para todo el sistema Los siguientes pasos explican cómo definir atributos de seguridad para todo el sistema. 1. Revise la página de manual de security(4), que explica los valores por defecto configurables de los atributos para todo el sistema. Estos atributos se configuran en el archivo /etc/default/security, que también se explica en la página de manual de security(4). Si un atributo no está definido en el archivo /etc/default/security, el sistema utilizará el valor por defecto definido en el archivo /etc/security.dsc. Para obtener una explicación del archivo /etc/security.dsc, consulte la página de manual de userdb(4). 46 Administración de la seguridad de los usuarios y del sistema 2. Para modificar un valor por defecto configurable para todo el sistema, modifique el archivo de valores de seguridad por defecto, /etc/default/security, con un editor de texto como vi. Este archivo es de lectura universal y de escritura por el usuario root. Cada línea del archivo /etc/default/security contiene un comentario o información sobre la configuración de atributos. Las líneas de comentario van precedidas de un signo de número (#). Las líneas que no contienen comentarios presentan la forma de pares attribute=value; por ejemplo, PASSWORD_MAXDAYS=30. 2.5.2 Configuración de los atributos por usuario Los siguientes comandos permiten configurar atributos específicos para usuarios individuales. Cuando se configuran atributos por usuario, éstos anulan los valores por defecto para todo el sistema. userdbset Modifica el atributo del usuario especificado para anular el valor por defecto para todo el sistema definido en el archivo /etc/default/ security. Para ver un ejemplo, consulte la Sección 2.5.2.1 y, para obtener información, consulte la página de manual de userdbset(1M). userdbget Muestra los valores definidos por el usuario para un usuario específico o todos los usuarios. Para obtener más información, consulte la página de manual de userdbget(1M). userdbck Comprueba los valores definidos por el usuario o soluciona los problemas relativos a estos valores. Para obtener más información, consulte la página de manual de userdbck(1M). Por ejemplo, puede cambiar el valor de PASSWORD_MAXDAYS de 60 a 30 días sólo para el usuario amy. La contraseña de amy será válida durante 30 días en lugar de 60. Para los demás usuarios, se aplicará el valor de 60 días para todo el sistema. Utilice el siguiente procedimiento para cambiar el valor de un atributo para un usuario: 1. 2. 3. Examine la página de manual de security(4), que explica los atributos para todo el sistema y sus valores, y cómo definir un valor por usuario. No todos los atributos tienen un valor por usuario. Examine las páginas de manual de los comandos userdbset, userdbget y userdbck. Decida qué usuarios se van a modificar y qué atributos se les van a aplicar. Por ejemplo, quizá desee que los usuarios del departamento de contabilidad cambien sus contraseñas cada 30 días y que una clase de alumnos cambien sus contraseñas cada trimestre. 2.5 Definición de los atributos de seguridad del sistema 47 4. Utilice el comando userdbset para cambiar un atributo para un usuario. La información por usuario se almacena en una base de datos de usuarios, en el directorio /var/adm/userdb. Esta base de datos de usuarios se describe en la página de manual de userdb(4). No se puede utilizar el comando userdbset para configurar todos los atributos. Algunos valores por usuario se definen en los archivos /etc/passwd y /etc/ shadow. Para obtener más información, consulte la página de manual de security(4). 5. Utilice el comando userdbget para obtener información sobre los usuarios. 2.5.2.1 Ejemplos de definición de atributos para usuarios específicos con userdbset En el siguiente ejemplo, el comando userdbset elimina todos los atributos definidos por el usuario para el usuario joe. Cuando joe inicie una sesión, los valores por defecto para todo el sistema almacenados en el archivo /etc/default/security se aplicarán a joe. # /usr/sbin/userdbset -d -u joe A continuación, userdbset define la longitud mínima de la contraseña en 7 y UMASK en 0022 (022 en formato octal). Estos cambios se aplican únicamente a joe. # /usr/sbin/userdbset -u joe MIN_PASSWORD_LENGTH=7 UMASK=0022 En el siguiente ejemplo, userdbset muestra todos los atributos del usuario amy: # /usr/sbin/userdbget -u amy amy AUDIT_FLAG=1 amy DISPLAY_LAST_LOGIN=0 En este ejemplo, el indicador de auditoría está habilitado y la característica de último inicio de sesión está deshabilitada para amy. 2.5.2.2 INACTIVITY_MAXDAYS y el archivo de contraseñas ocultas El atributo INACTIVITY_MAXDAYS definido en el archivo /etc/default/security controla si caducan las cuentas inactivas en todo el sistema. Para anular el valor por defecto para todo el sistema y configurar INACTIVITY_MAXDAYS para cada usuario, utilice el comando useradd -f o usermod -f. El comando userdel permite eliminar la configuración por usuario. Para obtener más información, consulte las páginas de manual de useradd(1M), usermod(1M) y userdel(1M). No se puede utilizar el comando userdbset para configurar el atributo INACTIVITY_MAXDAYS para cada usuario. El atributo INACTIVITY_MAXDAYS está relacionado con el campo de inactividad del archivo de contraseñas ocultas. Los comandos useradd y usermod modifican el campo de inactividad del archivo de contraseñas ocultas para el usuario especificado. Para obtener más información, consulte la descripción del atributo INACTIVITY_MAXDAYS en la página de manual de security(4). 48 Administración de la seguridad de los usuarios y del sistema 2.5.3 Solución de problemas con la base de datos de usuarios Utilice los siguientes procedimientos para solucionar problemas relativos a la base de datos de usuarios. Problema 1: Los atributos de seguridad de un usuario parecen no estar configurados correctamente. Si sospecha que la base de datos de usuarios contiene información de un usuario no configurada correctamente, ejecute el siguiente comando: # userdbget -u nombre_usuario Los atributos configurados para el usuario nombre_usuario se mostrarán. Si un atributo no está configurado correctamente, vuelva a configurarlo. Problema 2: La base de datos de usuarios no funciona correctamente. Si necesita comprobar la base de datos de usuarios, ejecute el siguiente comando: # userdbck El comando userdbck identifica y soluciona los problemas de la base de datos de usuarios. 2.6 Manejo de los programas setuid y setgid Dado que suponen un riesgo potencial para la seguridad del sistema, anote los programas que son setuid (definir id. de usuario) y setgid (definir id. de grupo). Los agresores de sistemas pueden explotar los programas setuid y setgid, casi siempre de una de las dos formas siguientes: • Haciendo que un programa setuid o setgid ejecute comandos definidos por el agresor, ya sea de forma interactiva o a través de una secuencia de comandos. • Sustituyendo por datos falsos los datos creados por un programa. Siga estas pautas para proteger los programas setuid y setgid: • Esté alerta en relación con los cambios en los programas setuid y setgid. • Investigue concienzudamente los programas que parezcan ser programas setuid innecesarios. • Cambie el permiso de un programa que sea innecesariamente un programa setuid por un programa setgid. Para obtener más información, consulte las páginas de manual de chmod(1) y chmod(2). La forma larga del comando ls (ll o ls -l) muestra los programas setuid sustituyendo la forma de denotar el permiso de ejecución del propietario, que es - o x, por S o s. Por otro lado, presenta los programas setgid sustituyendo la forma de denotar el permiso de ejecución de grupo, que es - o x, por S o s. Es previsible que encuentre archivos de sistema de setuid y setgid, pero éstos deben tener los mismos permisos que los facilitados en el medio suministrado de fábrica, a no ser que los haya personalizado. 2.6 Manejo de los programas setuid y setgid 49 • En general, los usuarios no deben tener programas setuid, especialmente si los utilizan para otros usuarios que no sean ellos mismos. • Examine el código de todos los programas importados de fuentes externas en busca de programas de destrucción denominados Caballos de Troya. No restaure ni instale nunca un programa setuid de cuyo código fuente no disponga para examinarlo. • Para posibilitar el acceso de los usuarios a determinados programas de superusuario, HP recomienda utilizar la interface SMH de acceso restringido. SMH de acceso restringido permite a los usuarios que no sean superusuarios obtener acceso a zonas concretas de la interface SMH. Para obtener más información, consulte la página de manual de smh(1M). 2.6.1 Motivos por los que los programas setuid y setgid representan un riesgo Siempre que se ejecuta un programa, éste crea un proceso con cuatro números de identificación: la identificación de usuario real y efectiva (ruid y euid) y la identificación de grupo real y efectiva (rgid y egid). Normalmente, estos pares de números de identificación son idénticos. No obstante, la ejecución de un programa setuid o setgid cambia el número de identificación euid o egid del proceso: se sustituye el número asociado al propietario por el del objeto. Los procesos creados adquieren sus atributos del objeto y conceden al usuario los mismos derechos de acceso que al propietario o el grupo del programa. • Si el bit de setuid se activa, los privilegios del proceso se definen en los del propietario del archivo. • Si el bit de setgid se activa, los privilegios del proceso se definen en los del grupo del archivo. • Si no se activa el bit de setuid ni el bit de setgid, los privilegios del proceso permanecen igual. • Un caso especialmente arriesgado es el que se da cuando un programa contiene un setuid, o cambio de identidad, a root, ya que el usuario obtiene todos los privilegios al alcance del usuario root. Esto entraña peligro porque el programa se puede utilizar infringiendo las normas de seguridad del sistema. Este problema también surge, en menor medida, en otros casos de setuid y setgid. Por motivos de seguridad, el kernel de HP-UX suele omitir los bits de setuid y setgid contenidos en las secuencias de comandos. Esta regla se puede omitir modificando el parámetro optimizable secure_sid_scripts, pero se recomienda encarecidamente no cambiar el valor por defecto de este parámetro. Para obtener más información sobre este parámetro optimizable, consulte la página de manual de secure_sid_scripts(5). 50 Administración de la seguridad de los usuarios y del sistema 2.6.2 Definición de los números de identificación Los números de identificación se definen de estas maneras distintas: • Los números de identificación ruid y rgid se heredan del proceso login, que define los números de identificación uid y gid. Los valores de uid y gid se especifican en el archivo /etc/passwd. • El comando login también cambia los valores de ruid, euid, rgid y egid. • El comando su cambia los valores de euid y ruid. • El comando newgrp puede cambiar el valor de gid. • Defina los bits de setuid y setgid con la llamada del sistema chmod() o el comando chmod. Para obtener más información, consulte las páginas de manual de chmod(1) y chmod(2). 2.6.3 Pautas para acotar la influencia de setuid Sea precavido si agrega programas setuid a root en un sistema existente. La adición de un programa setuid a root cambia la configuración del sistema y es posible que ponga en peligro la seguridad. Imponga el uso restrictivo de los programas con privilegios guiándose por las siguientes recomendaciones administrativas y de programación: • Utilice los programas setuid y setgid sólo cuando sea absolutamente necesario. • Asegúrese de que ningún otro usuario tiene acceso de escritura a ningún programa setuid. • Siempre que sea posible, utilice setgid en lugar de setuid para reducir el alcance del daño que pueda producirse como consecuencia de posibles brechas en la codificación o infracciones de la seguridad. • Cada cierto tiempo, realice búsquedas en los sistemas de archivos para detectar programas setuid y setgid nuevos o modificados. Puede utilizar el comando ncheck -s. • Sepa exactamente lo que hacen los programas setuid y setgid, y compruebe que se limitan a hacer sólo lo previsto. Si se extralimitan en sus funciones, elimine el programa o el atributo setuid correspondiente. • Si tiene que copiar un programa setuid, asegúrese de que los modos son correctos en el archivo de destino. • Escriba programas setuid de modo que puedan probarse en datos que no sean críticos, sin atributos setuid ni setgid. Aplique estos atributos sólo después de analizar el código y de que todos los departamentos interesados tengan la certeza de que los programas nuevos no vulneran la seguridad. 2.6 Manejo de los programas setuid y setgid 51 • Asegúrese de que un programa setuid no crea archivos a los que puedan tener acceso de escritura personas distintas del usuario previsto. • Restablezca el valor de euid antes de una llamada del sistema exec*(). Tenga en cuenta que se puede llamar a exec*() desde otras rutinas de las bibliotecas y sea cauto al utilizar rutinas (incluidas popen(), system(), execlp() y execvp()) que bifurquen un shell para ejecutar un programa. Para obtener más información, consulte las páginas de manual de exec(2), popen(3S) y system(3S). • Cuando escriba programas setuid, utilice setresuid() alrededor de las partes del código que exijan privilegios, para reducir la ventana de vulnerabilidad. Para obtener más información, consulte la página de manual de setresuid(2). • Cierre todos los descriptores de archivo innecesarios antes de llamar a exec*(). • Asegúrese de que todas las variables (PATH, IFS) y el valor de umask del entorno del programa son suficientemente restrictivos. • No utilice la llamada del sistema creat() para crear un archivo de bloqueo. En su lugar, utilice lockf() o fcntl(). Para obtener más información, consulte las páginas de manual de lockf(2) y fcntl(2). • Tenga especial cuidado en evitar las saturaciones del búfer, como las que se producen al utilizar sprintf(), strcpy() y strcat() sin la validación oportuna de la longitud del parámetro. Para obtener más información, consulte las páginas de manual de printf(3S) y string(3C). 2.7 Prevención de ataques de desbordamiento del búfer en la pila La transmisión de grandes cantidades de datos a un programa recibe el nombre de ataque de desbordamiento del búfer en la pila. Normalmente, los datos contienen comandos que consiguen engañar al programa para que los ejecute. Estos ataques se emplean para obtener acceso no autorizado al sistema, destruir o modificar datos, o causar la denegación de servicio a usuarios válidos. Para controlar los ataques de desbordamiento del búfer en la pila, observe si se producen los siguientes cambios: • Un programa setuid que ejecuta otros programas. • Un programa que obtiene inesperadamente cero (0) como número de identificación de usuario. Este número de identificación de usuario corresponde únicamente al superusuario o al usuario root. Para evitar ataques de desbordamiento del búfer en la pila: 52 • Habilite el parámetro optimizable executable_stack del kernel. • Utilice el comando chatr +es. Administración de la seguridad de los usuarios y del sistema El parámetro optimizable executable_stack del kernel permite impedir que un programa ejecute código de su pila. Esto salvaguarda el sistema contra la transmisión por parte de un intruso de datos no válidos a un programa, lo que haría que el programa ejecutara un código arbitrario desde su pila de programa. El parámetro optimizable executable_stack del kernel habilita o deshabilita globalmente la protección contra el desbordamiento del búfer en la pila. El valor 0 (cero) hace que no se puedan ejecutar las pilas y es el valor preferido por motivos de seguridad. Por defecto, a efectos de compatibilidad retroactiva, el parámetro optimizable executable_stack se define en 1, lo que permite la ejecución de las pilas y, por lo tanto, no se aplica protección. Utilice la interface HP SMH o el comando kmtune para cambiar el valor del parámetro optimizable executable_stack. Otra forma más de aplicar la protección contra el desbordamiento del búfer en la pila consiste en utilizar la opción +es del comando chatr. Por ejemplo, si executable_stack se define en cero, pero un programa en efecto necesita ejecutar su pila, utilice el siguiente comando chatr para permitir la ejecución de la pila de ese programa: # chatr -es enable programa Para obtener más información, consulte las páginas de manual de chatr(1), kmtune(1M) y executable_stack(5). 2.8 Protección de los terminales y las estaciones de trabajos sin vigilancia Los terminales y las estaciones de trabajo sin vigilancia son muy vulnerables a los usuarios no autorizados. Como una puerta sin cerrar con llave, están abiertos a cualquiera. Esta sección explica las siguientes maneras de reducir este riesgo: • Controle el acceso con /etc/inittab y niveles de ejecución. Modifique el archivo /etc/inittab para identificar los dispositivos que deben ejecutarse en distintos niveles de ejecución. • Proteja los archivos de dispositivo del terminal denegando el acceso universal a las sesiones de usuarios del terminal. • Configure el bloqueo de pantalla. 2.8.1 Control del acceso con /etc/inittab y niveles de ejecución Un nivel de ejecución es un estado del sistema en el que se permite la ejecución de un conjunto específico de procesos. Estos procesos y los niveles de ejecución por defecto se definen en el archivo /etc/inittab. Los niveles de ejecución varían entre 0 y 6, s o S. Si un proceso no tiene el mismo nivel de ejecución que el sistema, se terminará. Si lo tiene, se iniciará o seguirá ejecutándose. A continuación, se muestra un ejemplo en el que se permite la ejecución de terminales y módems en los niveles de ejecución seleccionados. Tanto ttp1 como ttp2 tienen los niveles de ejecución 2 y 3. 2.8 Protección de los terminales y las estaciones de trabajos sin vigilancia 53 ttp1:23:respawn:/usr/sbin/getty -h tty0p1 9600 ttp2:23:respawn:/usr/sbin/uugetty -h ttypd0p2 9600 A continuación, se muestra un ejemplo de cómo cambiar los niveles de ejecución después del horario de trabajo normal para deshabilitar los terminales y módems con un trabajo cron. Durante el día, el nivel de ejecución es 3 y los terminales ttp1 y ttp2 se pueden utilizar, ya que tienen los niveles de ejecución 2 y 3. A las 8:00 h de lunes a viernes, el nivel de ejecución del sistema se define en 3: # crontab -e 0 8 * * 1-5 /sbin/init 3 0 17 * * * /sbin/init 4 Todos los días a las 17:00 h (en el ejemplo anterior, 17 indica las 17:00 h o 5:00 p.m.), el nivel de ejecución del sistema cambia a 4. Los terminales ttp1 y ttp2 no se pueden utilizar después de las 17:00 h porque sus niveles de ejecución son 2 y 3. 2.8.2 Protección de los archivos de dispositivo de terminales Si un intruso obtiene acceso a un terminal abierto, puede desviar un comando a otra ventana de terminal. En el siguiente ejemplo, un comando de eliminación (rm) se desvía a /dev/tty0p0: # echo "\r rm -r / \r\033d" > /dev/tty0p0 Para impedir que se escriban mensajes en un terminal, puede utilizar el comando mesg -n (o mesg n). Este comando revoca los permisos de escritura a los usuarios que no tengan los privilegios adecuados. Para obtener más información, consulte las páginas de manual de mesg(1) y write(1). # vi ~/.shrc mesg n Otra manera de proteger la estación de trabajo o el terminal consiste en utilizar el comando xhost. Para obtener más información, consulte la página de manual de xhost(1). El comando xhost define los nombres de los sistemas host y los usuarios a los que se permite conectarse a la estación de trabajo. # xhost +Otro.sistema Para permitir que todos los sistemas y usuarios tengan acceso a la estación de trabajo (desactivando así el control del acceso), utilice el siguiente comando: # xhost + 2.8.3 Configuración del bloqueo de pantalla Esta sección analiza cómo configurar el bloqueo de pantalla utilizando la variable TMOUT y el administrador de bloqueos del entorno CDE. 54 Administración de la seguridad de los usuarios y del sistema 2.8.3.1 Configuración de la variable TMOUT Puede configurar la variable TMOUT para bloquear automáticamente los terminales inactivos. Si utiliza a menudo otros sistemas y copia el archivo .profile de un sistema en otro, lo más conveniente es agregar la variable TMOUT al archivo .profile. Si suele permanecer en un sistema, puede emplear cualquiera de los dos métodos para bloquear el terminal. Para configurar la variable TMOUT, modifique el archivo .profile como se muestra a continuación: # vi ~/.profile export TMOUT=600 # (bloqueo tras 600 segundos de inactividad) Puede cambiar el valor 600 por otro valor que desee. 2.8.3.2 Configuración del administrador de bloqueos del entorno CDE Puede configurar el administrador de bloqueos del entorno CDE para bloquear la pantalla transcurrido un determinado tiempo de inactividad. Para configurar el administrador de bloqueos del entorno CDE de manera que se bloquee la pantalla tras 10 minutos de inactividad, escriba los siguientes comandos: # cp /usr/dt/config/C/sys.resources /etc/dt/config/C/sys.resources # vi /etc/dt/config/C/sys.resources dtsession*lockTimeout: 10 También puede utilizar el panel de tareas Style Manager para ajustar el administrador de bloqueos del entorno CDE. Para ello, haga clic en el icono screen. 2.9 Protección contra el acceso de dispositivos remotos al sistema Para proteger el sistema contra el acceso remoto, adopte las siguientes medidas de precaución: • Exija el uso de un sistema de marcación de retorno con equipo físico para todos los módems interactivos. • Exija una contraseña adicional a los usuarios de módem; para ello, agregue una entrada para el dispositivo de módem en el archivo /etc/dialups y, de forma opcional, en el archivo /etc/d_passwd. Consulte la Sección 2.9.1. • Exija a los usuarios que renueven con frecuencia las cuentas de marcación de entrada. • Cancele rápidamente el acceso al sistema cuando un usuario deje de trabajar para la empresa. • • Establezca un programa de auditoría periódica para revisar el uso remoto. Conecte los módems y el equipo de marcación de retorno en un solo sistema HP-UX y deje que los servicios de red lleguen al sistema de destino desde este punto. 2.9 Protección contra el acceso de dispositivos remotos al sistema 55 • Establezca excepciones con la marcación de retorno en el caso del acceso UUCP. Se pueden establecer restricciones adicionales mediante la configuración apropiada del protocolo UCCP. Para obtener más información, consulte la página de manual de uucp(1). Otra excepción posible es la transferencia de archivos mediante el comando kermit. Para obtener más información, consulte la página de manual de kermit(1). • Si se produce una infracción de la seguridad debido a factores desconocidos, cierre el acceso tanto a través de la red como del teléfono e informe al administrador de la red. • Para potenciar la seguridad cuando se configure un sistema de módem de marcación de retorno, dedique el mecanismo de marcación de salida sólo a la función de marcación de salida. No debe configurarse para aceptar operaciones de marcación de entrada. Utilice otro módem conectado a otra línea de teléfono para el servicio de marcación de entrada. • No mantenga una lista de los números de teléfono de los módems y téngalos en un sistema distinto de otros teléfonos empresariales. No haga públicos los números de teléfono de marcación de entrada. • Proteja físicamente los módems. • Utilice la característica de identificación del llamante para identificar todas las llamadas entrantes a los módems. • No permita el desvío de llamada u otros servicios telefónicos adicionales en las líneas de los módems. No utilice módems de teléfonos celulares. • Para el acceso de forma local y remota, considere la posibilidad de instalar un producto de servidor AAA de HP-UX. Mediante el protocolo de servicio de usuario de acceso telefónico de autenticación remota (RADIUS - Remote Authentication Dial-In User Service) estándar en el sector, el servidor AAA de HP-UX ofrece servicios de autenticación, autorización y contabilidad del acceso de los usuarios a la red en el punto de entrada a una red. Para obtener más información, consulte el documento HP-UX AAA Server Administrator's Guide. • En lo que respecta a las conexiones móviles con Mobile IPv6, utilice HP-UX IPSec para cifrar y autenticar los mensajes con el protocolo Mobile IPv6 entre el cliente Mobile IPv6 y Home Agent. Para obtener más información, consulte el documento HP-UX IPSec Administrator's Guide. 2.9.1 Control del acceso con los archivos /etc/dialups y /etc/d_passwd Para conseguir una seguridad adicional en la identificación de usuarios remotos, agregue entradas en los archivos /etc/dialups y /etc/d_passwd. Estos archivos se utilizan para controlar la seguridad del inicio de sesión mediante marcación telefónica. Para obtener más información, consulte las páginas de manual de dialups(4) y login(1). 56 Administración de la seguridad de los usuarios y del sistema Si el archivo /etc/dialups existe, el proceso de inicio de sesión compara el terminal con los que se indican en el archivo /etc/dialups. Si el terminal aparece indicado en el archivo /etc/dialups, login solicitará una contraseña. Esta contraseña se compara con las que aparecen en el archivo /etc/d_passwd. Además, el archivo /etc/passwd se utiliza para comprobar la contraseña. A continuación, se muestra un ejemplo de cómo configurar el archivo /etc/dialups: # vi /etc/dialups (enumera los terminales permitidos) /dev/ttyd0p1 /dev/ttyd0p2 # vi /etc/d_passwd /usr/bin/sh:xxxencrypted-passwordxxxxxxxxx:comments /usr/bin/ksh:xxxencrypted-passwordxxxxxxxx:comments /sbin/sh:xxxencrypted-passwordxxxxxxxxx:comments Lo que el usuario ve es: Login: Password: Dialup password: Para modificar contraseñas en el archivo /etc/d_passwd, utilice el comando passwd como sigue: # passwd -F /etc/d_passwd ruta_shell La ruta_shell es la ruta del shell que se indica en el archivo /etc/d_passwd. 2.10 Protección de los titulares de inicio de sesión Los titulares de inicio de sesión se suelen utilizar para mostrar información del sistema como el nombre de sistema, la versión de revisión y la finalidad del sistema. Esta información puede ayudar a que un usuario no autorizado conozca mejor el sistema. A continuación, se indican algunas pautas para crear titulares de inicio de sesión más seguros: • Consulte al departamento jurídico para determinar el mensaje adecuado. • Agregue una advertencia al mensaje del titular para indicar que se prohíbe el uso no autorizado. • Guarde coherencia en la presentación de todos los titulares, con independencia del método de inicio de sesión. Puede modificar un titular de las siguientes maneras: • Modifique el titular login definido en los archivos /etc/copyright y /etc/ motd. 2.10 Protección de los titulares de inicio de sesión 57 • Modifique el titular telnet definido en el archivo /etc/issue. El comando de archivo de titular telnetd -b define un titular personalizado. Para utilizar /etc/ issue como el titular de inicio de sesión, agregue las siguientes líneas al archivo /etc/inetd.conf: telnet stream tcp nowait root /usr/lbin/telnetd \ telnetd -b /etc/issue Cuando inetd inicie telnetd, se utilizará el titular del archivo /etc/issue. Para obtener más información, consulte las páginas de manual de inetd(1M), telnetd(IM) e inetd.conf(4). • Modifique el titular ftp definido en el archivo /etc/ftpd/ftpaccess, que es el archivo de configuración de ftpd. Otros mensajes mostrados se definen en el archivo /etc/ftpd/ftpaccess: saludo, titular, nombre del host y texto del mensaje. Para obtener más información, consulte las páginas de manual de ftpdaccess(4) y ftpd(1M). A continuación, se muestra un ejemplo de telnet no seguro con un titular de inicio de sesión: # telnet computerAmy El titular de inicio de sesión telnet muestra la versión de revisión y el tipo de equipo. Si un usuario no autorizado intenta utilizar telnet para tener acceso a computerAmy, podría ser demasiada información. A continuación, se muestra un ejemplo de telnet con un titular de inicio de sesión más seguro: $ telnet computerMom Trying... Connected to computerMom.city.company.com. Escape character is '^]'. Local flow control on Telnet TERMINAL-SPEED option ON ************************************************************** This is a private system operated for Hewlett-Packard company business. Authorization from HP management is required to use this system. Use by unauthorized persons is prohibited. ************************************************************* login: Connection closed by foreign host. 2.11 Protección de la cuenta de usuario root A continuación, se indican algunas recomendaciones para proteger la cuenta de usuario root: 58 Administración de la seguridad de los usuarios y del sistema • No comparta la contraseña de usuario root. • No utilice la barra, /, como el directorio inicial raíz. • Examine la salida de los comandos last -R y lastb -R en busca de inicios de sesión poco comunes o infructuosos de usuario root y para comprobar quién ha iniciado una sesión como usuario root. • Examine el archivo /var/adm/sulog en busca de intentos de utilizar el comando su root. • Busque cuentas no autorizadas con un cero (0) como número de identificación de usuario; utilice el comando logins -d. Las siguientes secciones analizan más detenidamente cómo proteger la cuenta de usuario root. 2.11.1 Supervisión del acceso a la cuenta de usuario root Si hay dos o más administradores del sistema que necesitan tener acceso de usuario root, a continuación se indican algunas recomendaciones para su seguimiento: • Permita sólo inicios de sesión de usuario root directos en la consola del sistema. Cree el archivo /etc/securetty con una sola entrada, console, como sigue: #echo console > /etc/securetty Esta restricción se aplica a todos los nombres de inicio de sesión con un cero (0) como número de identificación de usuario. Para obtener más detalles, consulte la página de manual de login(1). • Exija a los administradores que utilicen el comando su root desde su cuenta personal para tener acceso de usuario root. Por ejemplo: login:me $ su root password:xxxx • Supervise /var/adm/sulog para comprobar quién ha tenido acceso a la cuenta root con el comando su. • Configure una cuenta de usuario root independiente para cada administrador del sistema. # vipw root:xxx:0:3::/home/root:/sbin/sh root1:xxx:0:3::/home/root1:/sbin/sh root2:xxx:0:3::/home/root2:/sbin/sh • Supervise el archivo de historial de cada administrador del sistema como sigue: #more ~root1/.sh_history #more ~root2/.sh_history 2.11 Protección de la cuenta de usuario root 59 • Supervise los intentos fructuosos e infructuosos de utilizar el comando su en el archivo /var/adm/syslog. 2.11.2 Uso de Restricted SMH Builder para el acceso limitado de superusuario Si necesita proporcionar acceso limitado de superusuario a un usuario que no sea superusuario, puede activar Restricted SMH Builder. Con Restricted SMH Builder, puede habilitar o deshabilitar zonas concretas de la interface SMH para el usuario. Para activar Restricted SMH Builder, escriba: # smh -r Cuando los usuarios con acceso restringido ejecuten la interface SMH, tendrán el estado de superusuario en las zonas definidas y sólo podrán ver estas zonas de SMH en el menú. Todas las demás zonas de la interface SMH estarán ocultas para el usuario. Cuando los usuarios sin los permisos de acceso adecuados ejecuten la interface SMH, recibirán un mensaje de error indicándoles que deben ser superusuarios. También se pueden agregar más aplicaciones a la interface SMH y configurarlas para el acceso restringido. 2.11.3 Revisión del acceso de superusuario El archivo /var/adm/sulog registra todos los intentos de utilizar el comando su root, incluidos los infructuosos. Los intentos fructuosos se indican con un signo más (+), mientras que los infructuosos se indican con un signo menos (-). Sólo el usuario root puede ver el archivo /var/adm/sulog. Por ejemplo: # su root Password: # ll /var/adm/sulog -rw------- 1 root root 690 Aug 17 19:37 /var/adm/sulog En el siguiente ejemplo, userone ha utilizado satisfactoriamente el comando su para tener acceso a la cuenta root. Un segundo usuario, usertwo, no pudo. Además, usertwo tampoco ha podido utilizar satisfactoriamente el comando su para tener acceso a gooduser1. # more /var/adm/sulog SU 08/17 19:10:00 + 0 userone-root SU 08/17 19:36 - 0 usertwo-root SU 08/17 19:36 - 0 usertwo-root SU 08/17 19:36 + 0 userone-root SU 08/17 19:37 - 0 usertwo-gooduser1 60 Administración de la seguridad de los usuarios y del sistema 3 HP-UX Bastille HP-UX Bastille es una herramienta de cierre para el fortalecimiento de la seguridad que se puede utilizar para mejorar la seguridad del sistema operativo HP-UX. Facilita el cierre personalizado de cada sistema individual mediante una función de codificación parecida a la del host bastión y otras listas de comprobación de fortalecimiento y cierre. Bastille se desarrolló en un principio en la comunidad de código fuente abierto para utilizarlo en los sistemas Linux. HP ha realizado contribuciones significativas al contenido de Bastille, utilizándolo como fundamento para el desarrollo de HP-UX Bastille. Este capítulo analiza los siguientes temas: • Características y ventajas (Sección 3.1) • Instalación de HP-UX Bastille (Sección 3.2) • Uso de HP-UX Bastille (Sección 3.3) • Uso de HP-UX Bastille para revocar cambios (Sección 3.4) • Ubicación de los archivos (Sección 3.5) • Consejos y solución de problemas (Sección 3.6) • Eliminación de HP-UX Bastille (Sección 3.7) 3.1 Características y ventajas HP-UX Bastille ofrece las siguientes características y ventajas: • Cierra el sistema — Configura los demonios y los valores del sistema para que sean más seguros — Desactiva los servicios innecesarios, por ejemplo, pwgrd — Capacita a los usuarios a través de su interface de usuario — Configura Software Assistant y Security Patch Check para que se ejecuten automáticamente — Configura un servidor de seguridad basado en IPFilter • Informa del estado de configuración de la seguridad — Genera informes sobre el estado de configuración de la seguridad — Crea puntos de referencia de la configuración de HP-UX y compara el estado actual del sistema con el punto de referencia guardado (deriva) • Se integra en el administrador System Insight Manager (SIM) — Cierra el sistema y genera informes por medio del administrador SIM 3.1 Características y ventajas 61 — Ofrece una configuración probada previamente, SIM.config, para el cierre del servidor de SIM 3.2 Instalación de HP-UX Bastille HP-UX Bastille se incluye como software recomendado en el medio del entorno operativo, y se puede instalar y ejecutar con Ignite-UX o Update-UX. Para obtener información sobre la instalación de HP-UX Bastille, consulte el documento Guía de instalación y actualización a HP-UX 11i v3. Para descargar la versión más reciente de HP-UX Bastille, visite: http://www.hp.com/go/bastille 3.3 Uso de HP-UX Bastille HP-UX Bastille se puede utilizar de forma interactiva o no interactiva para realizar las siguientes acciones: • Para cerrar el sistema (crear un archivo de configuración de seguridad o aplicar otro existente), escriba: # bastille -x • Para duplicar un archivo de configuración de seguridad en varios equipos, escriba: # bastille -b -f archivo • Para generar informes sobre el estado de configuración del sistema, escriba: # bastille --assess • Crear puntos de referencia de configuración de HP-UX Bastille y comparar el estado actual del sistema con un punto de referencia guardado. Para guardar un punto de referencia, escriba: # bastille_drift --save_baseline punto_referencia Para comparar el estado del sistema con el punto de referencia especificado, escriba: # bastille_drift --from_baseline punto_referenciae Para obtener más información, consulte las páginas de manual de bastille(1M) y bastille_drift(1M). NOTA: Vuelva a ejecutar la utilidad bastille_drift siempre que se instalen software o parches nuevos a fin de comprobar y verificar si dichos parches o software han cambiado el estado del sistema. La utilidad bastille_drift también ayuda a identificar el cambio en el estado del sistema cuando swverify se ejecuta mediante la opción -x fix=true o la opción -F para ejecutar secuencias de comandos «fix» específicas del proveedor. 62 HP-UX Bastille 3.3.1 Uso interactivo de HP-UX Bastille HP-UX Bastille se ejecuta interactivamente mediante la interface X puesta en ejecución a través de Perl/Tk. La interface necesita un servidor X y ofrece lo siguiente: • Acceso aleatorio entre los módulos de preguntas. • Indicadores de compleción para mostrar el avance del usuario. • Conducción en forma de túnel del tráfico X11 a través de un canal cifrado mediante la siguiente opción: # ssh -X Para obtener más información, consulte la página de manual de ssh(1). La Figura 3-1 muestra la pantalla principal de la interface de usuario de HP-UX Bastille. Figura 3-1 Interface de usuario de HP-UX Bastille La interface de usuario capacita a los usuarios orientándolos por una serie de preguntas agrupadas por módulos (consulte la Tabla 3-1). Cada pregunta explica un problema de seguridad y describe la acción resultante necesaria para cerrar el sistema HP-UX. Cada pregunta también describe, de forma avanzada, el costo y el beneficio de cada decisión, y el usuario decide cómo ha de tratar los problemas la herramienta. 3.3 Uso de HP-UX Bastille 63 Después de contestar a todas las preguntas, HP-UX Bastille proporciona asistencia automatizada para dar cada paso del proceso de cierre. HP-UX Bastille lleva a cabo las acciones que puede ejecutar automáticamente y, a continuación, genera una lista de tareas pendientes con el resto de las acciones manuales que el usuario debe efectuar. Las acciones pendientes deben llevarse a cabo para completar el proceso de cierre de HP-UX Bastille. Tabla 3-1 Módulos de preguntas de HP-UX Bastille Nombre del módulo Descripción Patches Applications (Aplicaciones de parches) Instala y configura para ayudar con la comprobación de la conformidad con los boletines de seguridad. File Permissions (Permisos de archivos) Ejecuta SUID y otra optimización de los permisos. Account Security (Seguridad de Configura los valores de inicio de sesión y el acceso a cron. cuentas) Secure inetd (inetd seguro) Desactiva los servicios de inetd innecesarios. Miscellaneous Daemons (Varios Desactiva los servicios que con frecuencia resultan innecesarios o que demonios) representan un riesgo para la seguridad. sendmail Configura el correo para que sea más seguro o deja que el usuario lo deshabilite. DNS Desactiva o configura los servidores DNS para que sean más seguros. Apache Configura los servidores Apache Web para que sean más seguros. FTP Configura los servidores FTP para que sean más seguros. HP-UX Lleva a cabo acciones de configuración de la seguridad que son exclusivas de la plataforma HP-UX. IPFilter Crea un servidor de seguridad basado en IPFilter. 3.3.2 Uso no interactivo de HP-UX Bastille El fortalecimiento de la seguridad se puede realizar directamente a través del motor de configuración. Este método es útil para duplicar una configuración de la seguridad en varios equipos que tengan instalados el mismo sistema operativo y las mismas aplicaciones. El motor de configuración utiliza un archivo de configuración predefinido. Esta opción puede utilizar el archivo creado en la ubicación por defecto por una sesión interactiva o bien un archivo alternativo especificado por la opción -f, como sigue: # bastille -b -f archivo 3.3.3 Configuración de un sistema Para configurar un sistema o crear un archivo de configuración que pueda reutilizarse posteriormente en un sistema diferente, dé los siguientes pasos: 64 HP-UX Bastille 1. 2. Cambie a usuario root, ya que HP-UX Bastille tiene que cambiar la configuración y los valores del sistema. Si HP-UX Bastille no se ejecuta localmente, puede optar por conducir por un túnel el tráfico X11 a través de Secure Shell (ssh) o IPSec para limitar la exposición de la red, o por utilizar una solución de distribución en el escritorio más completa que aborda los ataques de los usuarios locales, así como los remotos. Si va a efectuar cambios en el sistema, decida si HP-UX Bastille debe utilizarse de forma interactiva o de forma no interactiva. Los usuarios neófitos deben ejecutar HP-UX Bastille interactivamente para crear un perfil de configuración, a menos que la distribución incluya la entrega de archivos de configuración precreados, por ejemplo, DMZ.config. Cuente con que necesitará una hora para leer y contestar a todas las preguntas. Para obtener más información sobre el uso interactivo y no interactivo de HP-UX Bastille, consulte la Sección 3.3. 3. Siga el procedimiento apropiado (interactivo o no interactivo) en función de la decisión adoptada en el paso 2. Procedimiento interactivo a. Inicie HP-UX Bastille Los usuarios neófitos deben ejecutar HP-UX Bastille interactivamente para crear un perfil de configuración. La herramienta actualiza la variable de entorno PATH al instalarse, así que si ha cerrado una sesión y ha vuelto a iniciarla después de instalar HP-UX Bastille, escriba lo siguiente para iniciar la herramienta: # bastille Si la variable de entorno PATH no se ha actualizado, escriba lo siguiente para iniciar HP-UX Bastille: # /opt/sec_mgmt/bastille/bin/bastille Sólo se muestran las categorías de preguntas correspondientes a la configuración actual. b. Conteste a las preguntas Las preguntas se dividen en categorías según la función y se utilizan marcas de verificación como indicadores de compleción para denotar que una categoría se ha terminado. Esto permite realizar un seguimiento del avance por el programa. Al contestar a las preguntas, utilice el menú Explanation-Detail para alternar entre explicaciones más o menos detalladas. No todas las preguntas tienen contestaciones tanto largas como breves. Procedimiento interactivo 65 c. Guarde la configuración y aplique los cambios Puede utilizar la barra de menús en cualquier momento para guardar o cargar un archivo de configuración. El uso de la opción Save As genera un archivo de configuración más grande puesto que la herramienta da por sentado que el usuario no ha tenido por qué terminar o que podría cambiar la configuración posteriormente. El uso de la opción Save/Apply le indica a la herramienta que el usuario ha terminado y que se puede aplicar más filtrado. Aunque el archivo de configuración generado puede tener un tamaño diferente, la funcionalidad de HP-UX Bastille permanece igual en ambos casos. La opción Save/Apply siempre guarda el archivo de configuración en la ubicación actual enumerada en la barra de título de HP-UX Bastille. Procedimiento no interactivo a. Ejecute HP-UX Bastille interactivamente para crear un archivo de configuración si aún no existe uno. No se facilita un archivo de configuración por defecto para todas las distribuciones. En tal caso, deberá ejecutar interactivamente HP-UX Bastille en un principio para crear un archivo de configuración. Para obtener más información, consulte la sección «Procedimiento interactivo». b. Copie el archivo de configuración en cada equipo que desee replicar Copie el archivo de configuración, /etc/opt/sec_mgmt/bastille/config, desde su ubicación en el primer equipo en la misma ubicación de los demás equipos: # bastille -b -f archivo NOTA: Puesto que parte de las preguntas son específicas del sistema operativo o del software de seguridad instalado, deberá instalarse el mismo sistema operativo con el mismo software instalado en los equipos que hayan de duplicarse que en el equipo donde se creó el archivo de configuración. c. Instale HP-UX Bastille en cada uno de los equipos que haya de replicarse Esto puede llevarse a cabo en conjunto y al mismo tiempo, y se pueden recopilar los archivos de registro de las acciones y errores para su posterior revisión. Escriba: # bastille -b 4. Examine los archivos de registro Para consultar los archivos de registro en tiempo real, escriba: # tail -f archivo_registro 66 HP-UX Bastille El archivo de registro de las acciones, /var/opt/sec_mgmt/bastille/log/ action-log, contiene los pasos específicos que HP-UX Bastille dio al efectuar cambios en el sistema. Sólo se crea si se aplican los cambios en el sistema. El archivo de registro de las errores, /var/opt/sec_mgmt/bastille/log/ error-log, contiene los errores hallados por HP-UX Bastille al efectuar cambios en el sistema. Sólo se crea si se producen errores durante la ejecución. 5. Lleve a cabo las acciones enumeradas en la lista de tareas pendientes La herramienta, después de llevar a cabo las acciones que puede efectuar automáticamente, genera una lista de tareas pendientes, /var/opt/sec_mgmt/ bastille/TODO.txt, que describe las acciones restantes que el usuario debe efectuar manualmente. Esto incluye los reinicios si alguno de los cambios requiere uno. Las acciones de la lista de tareas pendientes deben completarse para garantizar una configuración segura. NOTA: La lista de tareas pendientes sólo se crea cuando se aplican los cambios en el sistema. 3.4 Uso de HP-UX Bastille para revocar cambios Para revocar la configuración de seguridad y recuperar el estado anterior a la ejecución de HP-UX Bastille, escriba: # bastille -r Si debe llevarse a cabo alguna acción manual para restaurar el estado anterior de HP-UX Bastille, el proceso de revocación crea el archivo var/opt/sec_mgmt/ bastille/TOREVERT.txt. Las acciones enumeradas en este archivo deben llevarse a cabo para completar el proceso de revocación. Después de ejecutar la opción de revocación, consulte el archivo TOREVERT.txt en busca de acciones manuales que deban efectuarse para completar el proceso de revocación. El archivo se ubica en /var/opt/sec_mgmt/bastille/TOREVERT.txt. NOTA: Además de algunas opciones del servidor de seguridad, el restablecimiento del sistema es la única forma en que HP-UX Bastille hace que un sistema sea menos seguro. 3.5 Ubicación de los archivos La lista siguiente describe los archivos clave de HP-UX Bastille y muestra la ubicación de los mismos: • Archivo de configuración por defecto: Contiene las respuestas a la sesión guardada más recientemente si no se especifica ningún otro nombre de archivo: 3.4 Uso de HP-UX Bastille para revocar cambios 67 /etc/opt/sec_mgmt/bastille/config • Archivo de registro de configuración: Archivo que, si se aplica por medio de HP-UX Bastille, cierra los elementos pertinentes de Bastille que HP-UX Bastille haya cerrado completamente, en el caso de que ambos sistemas tengan la misma versión de HP-UX, un conjunto de aplicaciones instaladas parecido y una configuración parecida. En los casos en que los sistemas difieren, el archivo de configuración puede contener preguntas extra no aplicables al sistema de destino o preguntas que faltan y que son necesarias en el sistema remoto. HP-UX Bastille le informará en el primer caso y, en el segundo, generará un error. A continuación, le dará la oportunidad de contestar a las preguntas que faltan o de quitar las preguntas extra en la interface gráfica. /var/opt/sec_mgmt/bastille/log/Assessment/ assessment-log.config • Archivo de registro de errores: Contiene los errores hallados por HP-UX Bastille al efectuar cambios en el sistema: /var/opt/sec_mgmt/bastille/log/error-log • Archivo de registro de acciones: Contiene los pasos específicos que HP-UX Bastille dio al efectuar cambios en el sistema: /var/opt/sec_mgmt/bastille/log/action-log • Archivo de la lista de tareas pendientes: Contiene las acciones manuales que el usuario aún debe llevar a cabo para garantizar que el equipo sea seguro: /var/opt/sec_mgmt/bastille/TODO.txt • Secuencia de comandos de las acciones de revocación: Restablece los archivos modificados por HP-UX Bastille al estado en que estaban antes de ejecutar HP-UX Bastille: /var/opt/sec_mgmt/bastille/revert/revert-actions Esta secuencia de comandos forma parte de la caracerística de revocación (revert). • Archivo de acciones por revocar: Contiene las acciones manuales que el usuario debe llevar a cabo para terminar de restablecer el equipo al estado en que estaba antes de ejecutar HP-UX Bastille: /var/opt/sec_mgmt/bastille/TOREVERT.txt • Archivos de informes de valoración: El formato de estos archivos es HTML, texto y como un archivo de registro de HP-UX Bastille: /var/opt/sec_mgmt/bastille/log/Assessment/ assessment-report.HTML 68 HP-UX Bastille /var/opt/sec_mgmt/bastille/log/Assessment/ assessment-report.txt /var/opt/sec_mgmt/bastille/log/Assessment/ assessment-report-log.txt • Archivo de deriva de configuración: Contiene información sobre la deriva de información que el sistema ha experimentado desde la última ejecución de HP-UX Bastille. Este archivo sólo se crea cuando se ha aplicado una configuración anterior de HP-UX Bastille en el sistema: /var/opt/sec_mgmt/bastille/log/Assessment/Drift.txt 3.6 Consejos y solución de problemas Esta sección aporta información básica sobre los problemas de los que se tiene constancia y su solución. • Los cambios efectuados por HP-UX Bastille pueden hacer que otro software deje de funcionar Para solucionar el problema, escriba: # bastille -r Este comando restablece el sistema al estado en que estaba antes de ejecutar HP-UX Bastille, comprobando, a continuación, si el problema se ha eliminado. • $DISPLAY not set, cannot use X. El usuario pidió la interface X, pero la variable de entorno $DISPLAY no estaba definida. Defina la variable de entorno en la presentación deseada para subsanar el problema. • System is in original state... El usuario intentó revocar los cambios efectuados por HP-UX Bastille mediante la opción -r, pero no había cambios que revocar. • Must run HP-UX Bastille as root HP-UX Bastille debe ejecutarse como el usuario root puesto que los cambios que efectúa afectan a archivos del sistema. • Problemas al abrir, copiar o leer archivos Los mensajes de error que enuncian problemas que surgen al llevar a cabo estas operaciones normalmente están relacionados con sistemas de archivos NFS que no confían en el usuario root del equipo local. Para obtener detalles, consulte la sección options de la página de manual de fstab. • Errores relacionados con archivos de configuración individuales 3.6 Consejos y solución de problemas 69 Los errores que exponen quejas sobre archivos de configuración individuales indican que un sistema se ha modificado con demasiada intensidad para que HP-UX Bastille efectúe cambios reales, o que los archivos, las ubicaciones o los permisos de los directorios de instalación de HP-UX Bastille se han modificado. • Si HP Secure Shell le bloquea el acceso al sistema nada más producirse la caducidad de las contraseñas, es posible que necesite un parche PAM: PHCO_24839 (HP-UX 11.11), que se facilita en el Centro de Recursos de Tecnología Informática de HP (ITRC): https://www2.itrc.hp.com/service/patch/mainPage.do • HP-UX Bastille configura un servidor de seguridad mediante IPFilter Los conflictos más comunes son los relacionados con los servidores de seguridad. Cuando un servicio de red no funciona y HP-UX Bastille no lo ha desactivado expresamente, deberá asegurarse de que las reglas del servidor de seguridad aprobarán los puertos que necesita. Para obtener más información, consulte las páginas de manual de ipfstat(8) e ipmon(8). 3.7 Eliminación de HP-UX Bastille Cuando HP-UX Bastille se elimina de un sistema, dicha eliminación no restablece el sistema al estado en el que estaba antes de ejecutar HP-UX Bastille. En cambio, la eliminación del software deja tras de sí la secuencia de comandos revert-actions. Esto permite al administrador revocar los archivos de configuración que HP-UX Bastille ha realizado sin tener instalado HP-UX Bastille. En muchos casos, los cambios de HP-UX Bastille se registran a nivel de archivo, de modo que la secuencia de comandos revert-actions sólo puede revocar los archivos que se han modificado. En otros casos, HP-UX Bastille efectúa cambios más insignificantes que se pueden revocar de forma programática aun cuando se hayan efectuado cambios intermedios propios en el mismo archivo. Por ejemplo, los permisos se pueden restablecer a la forma original aun cuando el archivo en el que se han cambiado los mismos se haya modificado. 1. Utilice el comando swremove para eliminar HP-UX Bastille en un equipo HP-UX. 2. (Opcional) Para revocar los cambios en un sistema donde HP-UX Bastille se ha eliminado, escriba los siguientes comandos: # # # # 3. 70 cd /var/opt/sec_mgmt/bastille/revert/ chmod 0500 revert-actions ./revert-actions mv revert-actions revert-actions.last Compruebe si se ha creado una lista de acciones por revocar (/var/opt/ sec_mgmt/bastille/TOREVERT.txt). Si existe una, lleve a cabo las acciones de la lista para completar el proceso de revocación. HP-UX Bastille 4 HP-UX Standard Mode Security Extensions Este capítulo describe HP-UX Standard Mode Security Extensions (HP-UX SMSE). Se analizan los siguientes temas: • Descripción general (Sección 4.1) • Atributos de seguridad y la base de datos de usuarios (Sección 4.2) 4.1 Descripción general HP-UX Standard Mode Security Extensions (HP-UX SMSE) es un grupo de herramientas que mejora la seguridad tanto del usuario como del sistema operativo. HP-UX SMSE incluye mejoras o cambios en el sistema de auditoría HP-UX, las contraseñas e inicios de sesión para los sistemas en modo estándar. Anteriormente, estas características sólo se admitían en los sistemas convertidos a modo de confianza. Con HP-UX SMSE, estas características se pueden utilizar en un sistema en modo estándar. NOTA: HP no recomienda utilizar HP-UX SMSE en sistemas que se ejecuten en modo de confianza. HP-UX SMSE aporta la disponibilidad en modo estándar de muchas directivas de cuentas y contraseñas que, actualmente, sólo están disponibles mediante la conversión de un sistema HP-UX a modo de confianza. Las directivas configuradas con HP-UX SMSE no se aplican en sistemas que funcionen en modo de confianza. Para determinar si un sistema se ha convertido a modo de confianza, compruebe si existe el siguiente archivo: /tcb/files/auth/system/default Si este archivo existe, el sistema se ejecuta en modo de confianza. Para volver a convertir el sistema a modo estándar, utilice el comando sam(1M). Para obtener más información sobre las configuraciones admitidas con cada una de las características de seguridad de HP-UX SMSE, consulte la página de manual de security(4). HP-UX SMSE ofrece una característica nueva: una base de datos de usuarios. Anteriormente, todos los atributos de seguridad y restricciones de la directiva de contraseñas de HP-UX se definían en todo el sistema. La introducción de la base de datos de usuarios permite definir los atributos de seguridad usuario a usuario, lo que anula los valores por defecto accesibles en el sistema. Las siguientes características en modo de confianza están disponibles en modo estándar con HP-UX SMSE: • Auditoría de todos los usuarios y sucesos de un sistema • Presentación de los últimos inicios de sesión de usuario fructuosos e infructuosos • Bloqueo de una cuenta de usuario si hay demasiados errores de autenticación 4.1 Descripción general 71 • Presentación del historial de contraseñas • Anulación de las cuentas inactivas • Prevención de que los usuarios puedan iniciar una sesión con una contraseña nula • Restricción de los inicios de sesión de usuario a periodos de tiempo específicos • El uso del comando userdbset se puede restringir según las autorizaciones de un usuario. Para obtener más información, consulte la página de manual de userdbset(1M). • El comando userstat muestra el estado de las cuentas de los usuarios locales. Dicho comando comprueba el estado de las cuentas de usuarios locales e informa de las condiciones anómalas, por ejemplo, los bloqueos de cuentas. Para obtener más información, consulte la página de manual de userstat(1M). 4.2 Atributos de seguridad y la base de datos de usuarios Anteriormente, en modo estándar, todos los atributos de seguridad y restricciones de la directiva de contraseñas de HP-UX se definían en todo el sistema. La introducción de la base de datos de usuarios permite definir los atributos de seguridad usuario a usuario, lo que anula los valores por defecto accesibles en el sistema. 4.2.1 Atributos de seguridad del sistema Los atributos de seguridad definen cómo controlar las configuraciones de seguridad, por ejemplo, las contraseñas, los inicios de sesión y la auditoría. El archivo de descripción de atributos de seguridad, /etc/security.dsc, enumera los atributos que se pueden definir en el archivo /etc/default/security y en la base de datos de usuarios de /var/adm/userdb, o en ambos archivos. Algunos atributos se pueden configurar, mientras que otros son internos. ATENCIÓN: No modifique el archivo /etc/security.dsc de manera alguna. Cuando un usuario inicia una sesión, el sistema comprueba si hay atributos de seguridad aplicables en el siguiente orden: 1. El sistema examina los atributos por usuario en las siguientes ubicaciones: • /var/adm/userdb • /etc/passwd • etc/shadow NOTA: Para cada atributo por usuario, se almacena un valor en uno de los tres archivos anteriores. Para ver qué atributos se almacenan en cada archivo, consulte la página de manual de security(4). 72 HP-UX Standard Mode Security Extensions 2. 3. Si no hay ningún valor por usuario, el sistema examina los atributos para todo el sistema configurados en el archivo /etc/default/security. Si no hay ningún atributo para todo el sistema configurado, el sistema utiliza los atributos por defecto del archivo /etc/security.dsc. 4.2.2 Configuración de los atributos para todo el sistema Para configurar atributos accesibles en el sistema, dé los pasos siguientes: 1. 2. Planifique la configuración mediante los recursos disponibles. Para obtener información sobre la configuración de los atributos accesibles en el sistema, consulte la página de manual de security(4). Para modificar un valor por defecto accesible en el sistema, modifique el archivo /etc/default/security con un editor de texto como vi. Los comentarios van precedidos de un signo de número (#). Los atributos se escriben en el formato attributo=valor. Por ejemplo, para definir en dos (2) el número mínimo accesible en el sistema de caracteres en mayúscula de una contraseña, escriba los siguientes valores en /etc/ default/security: PASSWORD_MIN_UPPER_CASE_CHARS=2 NOTA: Los cambios efectuados en los atributos de seguridad accesibles en el sistema no surten efecto inmediatamente. Los atributos de contraseña surtirán efecto la próxima vez que los usuarios cambien la contraseña. Los atributos de inicio de sesión surtirán efecto la próxima vez que los usuarios inicien una sesión. 4.2.3 Componentes de la base de datos de usuarios La característica de base de datos de usuarios de HP-UX SMSE abarca archivos, comandos, páginas de manual y atributos por usuario que se pueden aplicar a usuarios específicos del sistema HP-UX. Todos estos elementos de la base de datos de usuarios se describen en las siguientes secciones. 4.2.3.1 Archivos de configuración La Tabla 4-1 describe brevemente los archivos que se utilizan con la base de datos de usuarios. Tabla 4-1 Archivos de configuración de la base de datos de usuarios Archivo Descripción /var/adm/userdb Almacena la mayor parte de la información por usuario. 4.2 Atributos de seguridad y la base de datos de usuarios 73 4.2.3.2 Comandos La Tabla 4-2 describe brevemente los comandos que se pueden utilizar para modificar y administrar entradas en la base de datos de usuarios. Tabla 4-2 Comandos de la base de datos de usuarios Comando Descripción userdbset Cambia los valores de atributo configurados en la base de datos de usuarios. userdbget Muestra los valores de atributo configurados en la base de datos de usuarios. userdbck Comprueba la integridad de la información en la base de datos de usuarios. userstat Informa del estado de las cuentas de usuario locales. 4.2.3.3 Atributos Se dispone de los siguientes atributos de seguridad para usuarios individuales: Tabla 4-3 Atributos de usuario Atributo Descripción ALLOW_NULL_PASSWORD Permite o deniega el inicio de sesión con una contraseña nula. AUDIT_FLAG Audita o detiene la auditoría del usuario. AUTH_MAXTRIES Define el número de errores de inicio de sesión permitidos antes de bloquear el acceso de un usuario al sistema. DISPLAY_LAST_LOGIN Muestra información sobre el último inicio de sesión del usuario. LOGIN_TIMES Restringe los periodos de tiempo de inicio de sesión. MIN_PASSWORD_LENGTH Define la longitud mínima de la contraseña. NUMBER_OF_LOGINS_ALLOWED Define el número de inicios de sesión simultáneos permitidos por usuario. PASSWORD_HISTORY_DEPTH Define el nivel de detalle del historial de contraseñas. PASSWORD_MIN_LOWER_CASE_CHARS Define la cantidad mínima de caracteres en minúscula necesarios en una contraseña. PASSWORD_MIN_UPPER_CASE_CHARS Define la cantidad mínima de caracteres en mayúscula necesarios en una contraseña. PASSWORD_MIN_DIGIT_CHARS Define la cantidad mínima de caracteres digitales necesarios en una contraseña. PASSWORD_MIN_SPECIAL_CHARS Define la cantidad mínima de caracteres especiales necesarios en una contraseña. UMASK 74 Define umask para la creación de archivos. HP-UX Standard Mode Security Extensions NOTA: La lista anterior sólo contiene los atributos de seguridad que se pueden configurar en la base de datos de usuarios. Para obtener una lista completa de los atributos de seguridad del sistema HP-UX, consulte la página de manual de security(4). 4.2.3.4 Páginas de manual La Tabla 4-4 describe brevemente las páginas de manual que se utilizan con la base de datos de usuarios. Tabla 4-4 Páginas de manual de la base de datos de usuarios Página de manual Descripción userdb(4) Proporciona una descripción general del uso de la base de datos de usuarios. userdbset(1M) Describe la funcionalidad y la sintaxis de userdbset. userdbget(1M) Describe la funcionalidad y la sintaxis de userdbget. userdbck(1M) Describe la funcionalidad y la sintaxis de userdbck. userstat(1M) Describe la funcionalidad y la sintaxis de userstat. 4.2.4 Configuración de los atributos de la base de datos de usuarios En los sistemas HP-UX anteriores, los atributos de seguridad y las restricciones de la directiva de contraseñas se definían en todo el sistema. Con HP-UX SMSE, se pueden configurar algunos atributos de seguridad por usuario. Los atributos configurados por usuario anulan los atributos configurados en todo el sistema. Para modificar los valores de atributo de un usuario, dé los pasos siguientes: 1. Decida qué usuarios se van a modificar y qué atributos se les van a aplicar. Por ejemplo, quiere que el usuario joe pueda iniciar sesión en el sistema sólo entre las 8:00 y las 17:00 h los lunes. 2. Cambie los atributos mediante el comando userdbset como sigue: # userdbset -u nombre_usuario nombre_atributo=valor_atributo Por ejemplo, para especificar que el usuario joe pueda iniciar sesión en el sistema sólo entre las 8:00 y las 17:00 h, escriba: # userdbset -u joe LOGIN_TIMES=Mo0800-1700 4.2 Atributos de seguridad y la base de datos de usuarios 75 4.2.5 Solución de problemas con la base de datos de usuarios Utilice los siguientes procedimientos para solucionar problemas relativos a la base de datos de usuarios. Problema 1: Los atributos de seguridad de un usuario parecen no estar configurados correctamente. Si sospecha que la base de datos de usuarios contiene información de un usuario no configurada correctamente, ejecute el siguiente comando: # userdbget -u nombre_usuario Los atributos configurados para el usuario nombre_usuario se mostrarán. Si un atributo no está configurado correctamente, vuelva a configurarlo. Para obtener instrucciones, consulte la sección «Configuración de los atributos de la base de datos de usuarios». Problema 2: La base de datos de usuarios no funciona correctamente. Si necesita comprobar la base de datos de usuarios, ejecute el siguiente comando: # userdbck El comando userdbck identifica y soluciona los problemas de la base de datos de usuarios. 76 HP-UX Standard Mode Security Extensions 5 Administración de la seguridad relativa al acceso remoto HP-UX ofrece varios servicios de acceso remoto, por ejemplo, la transferencia de archivos, el inicio de sesión remoto, la ejecución de comandos remota, la administración de clientes de la red y direcciones IP, los protocolos de enrutamiento, el intercambio de correo, los servicios de red y un mecanismo de seguridad que ha creado inetd, el super demonio de Internet. Este capítulo analiza los siguientes temas: • Descripción general de Internet Services y los servicios de acceso remoto (Sección 5.1) • El demonio inetd (Sección 5.2) • Protección contra la simulación con TCP Wrappers (Sección 5.3) • Secure Internet Services (Sección 5.4) • Control de un dominio administrativo (Sección 5.5) • Seguridad de las sesiones remotas mediante HP-UX Secure Shell (SSH) (Sección 5.6) 5.1 Descripción general de Internet Services y los servicios de acceso remoto Esta sección facilita una breve descripción del mecanismo de autorización o autenticación que utilizan diversos servicios de Internet y los riesgos para la seguridad. HP-UX Internet Services se documenta en los documentos HP-UX Internet Services Administrator's Guide y Using HP-UX Internet Services ubicados en: http://www.docs.hp.com/en/netcom.html#Internet%20Services Consulte también HP-UX Remote Access Services Administrator's Guide en: http://www.docs.hp.com/en/netcom.html#Internet%20Services HP-UX Internet Services ofrece autenticación, ya sea mediante la comprobación de contraseñas o la autorización que se configura en un archivo de configuración. Consulte la Tabla 5-1 para obtener una lista de los componentes de Internet Services y su mecanismo de comprobación o autorización del acceso. Tabla 5-1 Componentes de Internet Services y autenticación, autorización y comprobación del acceso Componente de Internet Services Mecanismo de comprobación, autorización o autenticación del acceso ftp (transferencia de archivos) Comprobación de contraseña. También se puede utilizar el mecanismo de autenticación Kerberos que se define en /etc/inetsvcs.conf. Consulte la página de manual de ftp(1). 5.1 Descripción general de Internet Services y los servicios de acceso remoto 77 Tabla 5-1 Componentes de Internet Services y autenticación, autorización y comprobación del acceso (continuación) Componente de Internet Services Mecanismo de comprobación, autorización o autenticación del acceso rcp (copia remota) Entrada en el archivo $HOME/.rhosts o /etc/hosts.equiv. También se puede utilizar el mecanismo de autenticación Kerberos que se define en /etc/inetsvcs.conf. Consulte la página de manual de rcp(1). rdist (distribución de archivos remota) Entrada en el archivo $HOME/.rhosts o /etc/hosts.equiv. Consulte la página de manual de rdist(1). remsh, rexec (ejecución desde el shell remoto) Entrada en el archivo $HOME/.rhosts o /etc/hosts.equiv. También se puede utilizar el mecanismo de autenticación Kerberos que se define en /etc/inetsvcs.conf. Consulte la página de manual de remsh(1). rlogin (inicio de sesión remoto) Comprobación de contraseña o entrada en el archivo $HOME/.rhosts o /etc/hosts.equiv. También se puede utilizar el mecanismo de autenticación Kerberos que se define en /etc/inetsvcs.conf. Consulte la página de manual de rlogin(1). telnet (inicio de sesión remoto con el protocolo TELNET) Comprobación de contraseña. Si el demonio telnetd habilita la opción TAC User ID, telnet utiliza el archivo $HOME/.rhosts o /etc/ hosts.equiv. Consulte las páginas de manual de telnet(1) y telnetd(1M). NOTA: La información (incluidas las contraseñas) se transmite entre dos sistemas en texto no cifrado. Utilice Internet Services sólo entre hosts bien conocidos y definidos entre sí y en una red interna privada protegida por un servidor de seguridad. Cuando las comunicaciones se realicen por una red no confiable, protéjalas con IPSec o Kerberos. Los servicios de acceso remoto conectan los sistemas remotos de una red. Por defecto, los servicios de acceso remoto funcionan en un entorno no seguro. Para que funcionen en un entorno seguro, habilite la autenticación de red Kerberos V5. En un entorno no seguro, debe tener un nombre de inicio de sesión y una contraseña para tener acceso al sistema remoto, y el nombre de inicio de sesión no se comprueba para autenticación y autorización. En un entorno seguro, no necesita tener un nombre de inicio de sesión ni una contraseña. Cuando se intenta conectar con un sistema remoto, el protocolo Kerberos comprueba si se permite el acceso del usuario al sistema remoto. 5.1.1 Seguridad del comando ftp Un usuario no autorizado podría tratar de obtener acceso al sistema utilizando el comando ftp. A continuación, se ofrecen algunas recomendaciones para eludir este problema: 78 • Habilite el inicio de sesión ftp en /etc/inetd.conf con el comando ftpd -l. • Revise los archivos de registro ftp en /var/adm/syslog/syslog.log y /var/ adm/syslog/xferlog en busca de intentos de acceso remoto poco comunes. Administración de la seguridad relativa al acceso remoto Consulte las páginas de manual de syslogd(1M) y xferlog(5). • Deniegue el acceso ftp a guest, root y otras cuentas enumerándolos en el archivo /etc/ftpd/ftpusers. Consulte la página de manual de ftpusers(4). • Busque y elimine regularmente los archivos ~/.netrc de los usuarios. El archivo .netrc contiene la información de la cuenta, contraseña e inicio de sesión que utiliza el proceso de inicio de sesión automático ftp, la rutina de biblioteca rexec() y el comando rexec. Consulte la página de manual de netrc(4). 5.1.2 Seguridad del ftp anónimo Si un archivo $HOME/.rhosts se coloca en /home/ftp, un usuario no autorizado podría utilizar el comando rlogin para iniciar una sesión como el usuario, ftp. El archivo .rhosts especifica los sistemas host y los usuarios a los que se les permite obtener acceso a una cuenta local utilizando el comando rcp, remsh o rlogin sin contraseña. Para obtener más información, consulte la página de manual de hosts.equiv(4). A continuación, se ofrecen algunas recomendaciones para hacer que el ftp anónimo sea más seguro: • Asegúrese de que ni /home/ftp ni ninguno de sus secundarios tenga permiso de escritura: $chmod -R a -w /home/ftp • Asegúrese de que la entrada de ftp en /etc/passwd está configurada correctamente: ftp:*:500:100:Anonymous FTP user:/var/ftp:/usr/bin/false • Asegúrese de que todas las contraseñas en ~ftp/etc/passwd son asteriscos (*): $more ~ftp/etc/passwd root:*:0:3::/:/usr/bin/false daemon:*:1:5::/:/usr/bin/false • Si tiene un directorio pub con permiso de escritura, utilice los permisos 1733: $chmod 1733 /home/ftp/pub • Utilice las cuotas de disco o un trabajo del comando cron para controlar el tamaño del archivo /home/ftp/pub: 0 1 * * * find /home/ftp/pub/* -atime +1 exec rm -rf {} \; • Compruebe la actividad del ftp anónimo en el archivo /var/adm/syslog/ syslog.log: $tail /var/adm/syslog/syslog.log 5.1 Descripción general de Internet Services y los servicios de acceso remoto 79 5.1.3 Denegación del acceso mediante el archivo /etc/ftpd/ftpusers El demonio inetd ejecuta el servidor de protocolo de transferencia de archivos, ftpd, cuando se recibe una solicitud de servicio en el puerto indicado en el archivo /etc/ services. El demonio ftpd rechaza los inicios de sesión remotos en las cuentas de usuario locales enumeradas en el archivo /etc/ftpd/ftpusers. A estas cuentas de usuario se las denomina cuentas restringidas. Consulte las páginas de manual de ftpd(1M), privatepw(1) y services(4). En el archivo /etc/ftpd/ftpusers, cada nombre de cuenta restringida debe aparecer sólo en una línea. Agregue también cuentas de usuario con shells de inicio de sesión restringidos que se hayan definido en /etc/passwd, porque ftpd obtiene acceso a las cuentas locales sin utilizar los shells de inicio de sesión correspondientes. Si /etc/ftpd/ftpusers no existe, ftpd no efectúa una comprobación de seguridad. Para obtener más información, consulte la página de manual de ftpusers(4). En HP-UX 11i, el demonio ftpd se basa en WU-FTPD. WU-FTPD es la puesta en ejecución en HP del demonio ftpd desarrollado en la Universidad de Washington. WU-FTPD incluye un control de acceso mejorado, posibilidades de inicio de sesión mejoradas, compatibilidad con hosts virtuales y compatibilidad con RFC1413 (Protocolo de identificación). Para obtener más información, consulte el documento HP-UX Remote Access Services Administrator's Guide en: http://www.docs.hp.com/en/netcom.html#Internet%20Services 5.1.4 Otras soluciones de seguridad para simulación La simulación es un método para hacerse pasar por un usuario o host válido a fin de obtener un acceso no autorizado al sistema. Puesto que los nombres de host y direcciones IP se pueden simular, la utilización del archivo de seguridad /var/adm/inetd.sec de inetd (el demonio de Internet) no es una solución de garantía de la seguridad. Para obtener más información sobre el demonio inetd, consulte la Sección 5.2. Los siguientes productos o características de seguridad son soluciones de seguridad alternativas: • IPFilter es un filtro de paquetes TCP/IP idóneo para utilizar como un servidor de seguridad del sistema para proteger a los servidores de aplicaciones. Para obtener más información, consulte el documento HP-UX IPFilter Administrator's Guide en: http://docs.hp.com/en/internet.html#IPFilter • TCP Wrappers ofrece un demonio empaquetador TCP, tcpd, al que el demonio inetd llama para aportar seguridad adicional. Consulte la Sección 5.3 y el documento HP-UX Internet Services Administrator's Guide en: http://www.docs.hp.com/en/netcom.html#Internet%20Services • 80 Secure Internet Services permite utilizar la autenticación y autorización Kerberos para los comandos ftp, rcp, remsh, rlogin y telnet. En lugar de contraseñas Administración de la seguridad relativa al acceso remoto de usuarios, los registros de autenticación Kerberos cifrados se transmiten a través de la red. Consulte la Sección 5.4, el documento Installing and Administering Internet Services en: http://www.docs.hp.com/en/netcom.html#Internet%20Services y el documento Configuration Guide for Kerberos Client Products on HP-UX en: http://www.docs.hp.com/en/internet.html#Kerberos • IPSec, una serie de protocolos de seguridad IP, ofrece seguridad para redes IP como, por ejemplo, la integridad de los datos, la autenticación, la confidencialidad de los datos, la seguridad transparente de las aplicaciones y el cifrado. Consulte el documento HP-UX IPSec Administrator's Guide en: http://www.docs.hp.com/en/internet.html#IPSec 5.2 El demonio inetd El demonio de Internet, /usr/sbin/inetd, es el servidor maestro de muchos servicios de Internet. El demonio inetd normalmente lo inicia automáticamente la secuencia de comandos /sbin/init.d/inetd como parte del proceso de inicio. El demonio inetd controla las solicitudes de conexión de los servicios enumerados en el archivo de configuración /etc/inetd.conf y crea el servidor apropiado al recibir una solicitud. En otras palabras, los usuarios se conectan a los sistemas remotos utilizando un servicio de Internet como, por ejemplo, telnet. El demonio inetd determina si se permite una conexión de telnet desde el host antes de terminar la conexión. La información del host para permitir o denegar el acceso se ubica en el archivo /var/ adm/inetd.sec. El demonio inetd funciona del modo siguiente: 1. 2. 3. 4. 5. Se inicia en el nivel de ejecución 2 durante el inicio del sistema. (Si el siguiente comando está en la secuencia de comandos de inicio del sistema: /sbin/init.d/inetd start) Comprueba el archivo /etc/inetd.conf para determinar los servicios que se van a prestar. Para obtener más información, consulte las páginas de manual de ftp(1) e inetd.conf(4). Comprueba el archivo /etc/services para determinar los puertos que se van a controlar para los servicios enumerados en el archivo /etc/inetd.conf. El archivo /etc/services asigna nombres de servicio a los números de puerto. Para obtener más información, consulte la página de manual de services(4). Recibe una solicitud de conexión a un servicio de Internet desde un cliente. Por ejemplo, alguien que ejecuta telnet. Consulta el archivo /var/adm/inetd.sec para determinar si el cliente tiene permiso de acceso. Para obtener más información, consulte la página de manual de inetd.sec(4). 5.2 El demonio inetd 81 6. 7. 8. Registra la solicitud en el archivo /var/adm/syslog/syslog.log si se ha habilitado el registro. Para obtener más información, consulte la página de manual de syslogd(1M). Si inetd rechaza la conexión por razones de seguridad, la conexión se cierra. Si la solicitud de conexión es válida, inetd inicia un proceso del servidor para gestionar la solicitud de conexión válida. El proceso del servidor puede presentar otras características de seguridad además de inetd. 5.2.1 Seguridad del demonio inetd El archivo /etc/inetd.conf es el archivo de configuración de inetd que enumera los servicios que el demonio de inetd puede iniciar. Cada servicio enumerado en el archivo /etc/inetd.conf debe aparecer también en el archivo /etc/services. El archivo /etc/services asigna nombres de servicio a los números de puerto. Cada número de puerto tiene un nombre de protocolo asociado como, por ejemplo, tcp o udp. Cada entrada del protocolo debe tener una entrada coincidente en el archivo /etc/protocols. Las siguientes recomendaciones pueden hacer que inetd sea más seguro: 82 • Habilite el registro de inetd en /etc/rc.config.d/netdaemons. Para obtener más información, consulte la página de manual de rc.config.d(4). • Examine los archivos /etc/inetd.conf y /etc/services en busca de cambios. Un usuario no autorizado puede haber obtenido acceso de usuario root y modificado los archivos /etc/services y /etc/inetd.conf. En /etc/inetd.conf, busque los nombres de los servicios que no se utilizan. En /etc/services, busque números de puerto que no estén registrados en la Internet Assigned Numbers Authority (IANA - Agencia de Asignación de Números de Internet) en http://www.iana.org. Compruebe que los números de puerto enumerados para los servicios de Internet coinciden con los números de puerto registrados en la agencia IANA. • Marque como comentario los servicios innecesarios, por ejemplo, finger en el archivo /etc/inetd.conf. El comando finger muestra la información sobre los usuarios sin necesidad de una contraseña. • Marque como comentario los servicios de las llamadas a procedimiento remoto (RPC) en el archivo /etc/inetd.conf. • Marque como comentario servicios «triviales internos» de inetd en/etc/ inetd.conf para evitar ataques de denegación de servicio. Un usuario malintencionado puede sobrecargar inetd con solicitudes (generador de caracteres) de chargen. Para obtener más información, consulte las páginas de manual de inetd(1M) e inetd.conf(4). Administración de la seguridad relativa al acceso remoto 5.2.1.1 Denegación o concesión de acceso mediante el archivo /var/adm/inetd.sec Además de configurar el archivo /etc/inetd.conf, puede configurar un archivo de seguridad opcional denominado /var/adm/inetd.sec para restringir el acceso a los servicios que inicia inetd. El archivo /var/adm/inetd.sec enumera los hosts a los que se concede o deniega acceso a cada servicio. Para obtener más información, consulte la página de manual de inetd.conf(4). Por ejemplo: login allow 10.3-5 192.34.56.5 ahost anetwork login deny 192.54.24.5 cory.example.edu.testlan 5.3 Protección contra la simulación con TCP Wrappers La herramienta TCP (Transmission Control Protocol - Protocolo de control de transmisión) Wrappers aporta una seguridad mejorada de los servicios que crea inetd. TCP Wrappers constituye una alternativa a la utilización del archivo /etc/inetd.sec. TCP Wrappers aporta protección contra la simulación de nombres y direcciones de host. La simulación es un método para hacerse pasar por un usuario o host válido a fin de obtener un acceso no autorizado al sistema. Para impedir la simulación, TCP Wrappers utiliza listas de control de acceso (ACL). Las ACL son listas de sistemas en los archivos /etc/hosts.allow y /etc/hosts.deny. TCP Wrappers aporta cierta protección contra la simulación de IP cuando se ha configurado para comprobar la asignación de nombre de host a dirección IP y para rechazar paquetes con enrutamiento de origen IP. No obstante, TCP Wrappers no facilita la autenticación de cifrado ni el cifrado de datos. Como inetd, la información se transmite en texto no cifrado. TCP Wrappers forma parte del software HP-UX Internet Services. Para obtener más información, consulte el documento HP-UX Internet Services Administrator's Guide en: http://www.docs.hp.com/en/netcom.html#Internet%20Services y las siguientes páginas de manual: tcpd(1M), tcpdmatch(1), tcpdchk(1), tcpd.conf(4), hosts_access(3), hosts_access(5) y hosts_options(5). Al habilitar TCP Wrappers, inetd ejecuta un demonio empaquetador TCP, tcpd, en lugar de ejecutar el servicio solicitado directamente. TCP Wrappers funciona del modo siguiente: 1. 2. Los clientes envían las solicitudes de conexión a inetd como lo hacen normalmente, por ejemplo, telnet. En lugar de hacer la llamada al proceso del servidor, inetd llama al demonio de TCP Wrapper (tcpd). 5.3 Protección contra la simulación con TCP Wrappers 83 3. 4. 5. El demonio de TCP Wrapper determina la validez de la solicitud de conexión del cliente. El demonio tcpd registra la solicitud y comprueba los archivos de control de acceso (/etc/hosts.allow y /etc/hosts.deny). Si el cliente es válido,tcpd llama al proceso del servidor apropiado. El proceso del servidor procesa la solicitud del cliente, por ejemplo, la conexión de telnet termina. 5.3.1 Características adicionales de TCP Wrappers También puede definir los parámetros de configuración en el archivo de configuración /etc/tcpd.conf, como, por ejemplo, el comportamiento de registro, las búsquedas de nombres de usuario y el comportamiento con errores de búsqueda inversa. El demonio tcpd lee este archivo de configuración para buscar los parámetros de configuración durante el tiempo de ejecución. Puede configurar los archivos /etc/hosts.allow y /etc/hosts.deny para buscar otras características de seguridad, por ejemplo, la definición de capturas y los mensajes en titulares. La característica de definición de capturas de TCP Wrappers permite activar la acción apropiada en el host, en función del número de intentos de conexión denegados desde un host remoto. La característica de mensajes en titulares hace que se envíe un mensaje al cliente cuando una regla de las listas ACL se incluye en un archivo de control de acceso. 5.3.2 TCP Wrappers no se puede utilizar con servicios de RPC TCP Wrappers no se puede utilizar con los servicios de llamada a procedimiento remoto (RPC) a través de TCP. Estos servicios se registran como rpc o tcp en el archivo /etc/ inetd.conf. El único servicio importante que se ve afectado por esta limitación es rexd, que utiliza el comando on. 5.4 Secure Internet Services Secure Internet Services (SIS) es un mecanismo habilitado opcionalmente que incorpora la autenticación y autorización Kerberos V5 para los servicios de acceso remoto: ftp, rcp, remsh, rlogin y telnet. Secure Internet Services forma parte del producto HP-UX Internet Services, que se documenta en Using HP-UX Internet Services en la dirección http://www.docs.hp.com/ en/netcom.html#Internet%20Services y las siguientes páginas de manual: sis(5), kinit(1), klist(1), kdestroy(1M), krbval(1M), k5dcelogin(1M), inetsvcs_sec(1M) e inetsvcs(4). Al ejecutar los comandos SIS, la seguridad mejora porque ya no se tiene que transmitir una contraseña en formato legible por la red. 84 Administración de la seguridad relativa al acceso remoto NOTA: Las bibliotecas del producto SIS no cifran la sesión más allá de lo imprescindible para autorizarle a usted o para autenticar el servicio. Por lo tanto, estos servicios no ofrecen comprobación de la integridad de los datos o los servicios remotos ni el cifrado de los mismos. Para cifrar datos, utilice OpenSSL. Para obtener más información, consulte el documento OpenSSL Release Notes: http://docs.hp.com/en/internet.html#OpenSSL. Cuando dos sistemas funcionan en un entorno seguro basado en Kerberos V5, Secure Internet Services garantiza la mutua identificación sin riesgo y confiable de un sistema host local y otro remoto, y que el usuario obtenga autorización para tener acceso a la cuenta remota. Para ftp/ftpd, rlogin/rlogind y telnet/telnetd, el mecanismo de autenticación Kerberos V5 envía tíquets cifrados en lugar de una contraseña por la red a fin de verificar el usuario e identificarlo. Para rcp/remshd y remsh/remshd, las versiones seguras de estos servicios garantizan la autorización de acceso para el usuario a fin de obtener acceso a la cuenta remota. 5.5 Control de un dominio administrativo Todos los programas de administración de la red deben ser propiedad de una cuenta protegida específica de la red (por ejemplo, uucp o nso) o de un demonio, en lugar del usuario root. Un dominio administrativo es un grupo de sistemas conectados por servicios de red que permiten a los usuarios obtener acceso a los sistemas de los demás sin que se compruebe la contraseña. Un dominio administrativo da por sentado que los usuarios de los sistemas ya han sido verificados por el sistema host correspondiente. Dé los siguientes pasos para identificar y controlar un dominio administrativo: 1. Obtenga una lista de los nodos a los que exporte sistemas de archivos en /etc/ exports. El archivo /etc/exports contiene entradas de un nombre de ruta de un sistema de archivos y una lista de sistemas o grupos de sistemas a los que se permite tener acceso al sistema de archivos. Las entradas de /etc/exports pueden contener nombres de grupos de sistemas. Para averiguar los equipos individuales que se incluyen en un grupo, consulte el archivo /etc/netgroup. 2. Obtenga una lista de los nodos que tengan bases de datos de contraseñas equivalentes en /etc/hosts.equiv. 3. Compruebe que cada nodo del dominio administrativo no amplía los privilegios a ningún nodo que no esté incluido. Repita los pasos 2 y 3 para cada nodo del dominio. 4. Controle el acceso de usuario root y la seguridad local en todos los nodos del dominio administrativo. Un usuario con privilegios de superusuario en cualquier equipo del dominio puede adquirir dichos privilegios en todos los equipos del dominio. 5.5 Control de un dominio administrativo 85 5. 6. Mantenga la coherencia del nombre de usuario, el número de identificación de usuario (uid) y la identificación de grupo (gid) en los archivos de contraseñas del dominio administrativo. Mantenga la coherencia de los archivos de grupo en todos los nodos del dominio administrativo. Por ejemplo, para comprobar la coherencia con los sistemas hq y mfg, si el sistema de archivos raíz del sistema mfg se ha montado remotamente en hq como /nfs/mfg/, escriba el siguiente comando diff: $diff /etc/group /nfs/mfg/etc/group Si se muestra alguna diferencia, los dos archivos /etc/group son incoherentes y no deberían serlo. 5.5.1 Comprobación de las configuraciones de los permisos en los archivos de control de red Los archivos de control de red del directorio /etc son blancos de seguridad, ya que franquean el acceso a la propia red. Los archivos de control de red no deben configurarse nunca con permiso de acceso de escritura para el público. Defina cuidadosamente los modos, propietarios y grupos de todos los archivos del sistema. Compruebe regularmente estos archivos en busca de cualquier cambio y corríjalos. Los archivos de control de red utilizados con mayor frecuencia son los siguientes: • /etc/exports Lista de los directorios de archivos que se pueden exportar a clientes NFS. Para obtener más información, consulte la página de manual de exports(4). • /etc/hosts Lista de sistemas host de red y sus direcciones IP. Para obtener más información, consulte la página de manual de hosts(4). • /etc/hosts.equiv Lista de sistemas host remotos a los que se permite tener acceso y que equivalen al host local. Para obtener más información, consulte la página de manual de hosts.equiv(4). • /etc/inetd.conf El archivo de configuración de Internet Services. Para obtener más información, consulte la página de manual de inetd.conf(4). • /etc/netgroup Lista de los grupos accesibles en la red. Para obtener más información, consulte la página de manual de netgroup(4). 86 Administración de la seguridad relativa al acceso remoto • /etc/networks Lista de los nombres de red y los números de red correspondientes. Para obtener más información, consulte la página de manual de networks(4). • /etc/protocols Lista de nombres y números de protocolos. Para obtener más información, consulte la página de manual de protocols(4). • /etc/services Lista de nombres de servicios oficiales y alias con el número de puerto y protocolo que utilizan los servicios. Para obtener más información, consulte la página de manual de services(4). 5.6 Seguridad de las sesiones remotas mediante HP-UX Secure Shell (SSH) HP-UX Secure Shell se basa en el producto OpenSSH, un producto SSH de código fuente abierto (http://www.openssh.org). Permite una conexión segura entre un cliente y un host remoto a través de una red que de otra manera sería insegura. A continuación, se muestran los atributos clave de esta conexión segura: • Autenticación severa para el cliente y el host remoto. • Cifrado y criptografía de claves públicas firmes para la comunicación entre un cliente y el host remoto. • Un canal seguro para que lo utilice el cliente a fin de ejecutar comandos en el host remoto. HP-UX Secure Shell aporta un sustituto seguro para comandos y funciones utilizados tan frecuentemente como, por ejemplo, telnet, remsh, rlogin, ftp y rcp. Para obtener la documentación de HP-UX Secure Shell, consulte la página de manual de ssh(1) para el cliente ssh y la página de manual de sshd(8) para el servidor sshd. Ambas páginas de manual incluyen referencias a las otras páginas de manual de HP-UX Secure Shell que se suministran con el producto. Consulte también el documento HP-UX Secure Shell Release Notes en: http://www.docs.hp.com/en/internet.html#Secure%20Shell 5.6.1 Características de seguridad clave de HP-UX Secure Shell Entre las características de seguridad clave de HP-UX Secure Shell se incluyen las siguientes: • Cifrado firme Todas las comunicaciones entre el cliente y el host remoto se cifran utilizando algoritmos de cifrado exentos de patentes, como, por ejemplo, Blowfish, 3DES, AES y arcfour. La información relativa a la autenticación, como, por ejemplo, las 5.6 Seguridad de las sesiones remotas mediante HP-UX Secure Shell (SSH) 87 contraseñas, nunca se envía en texto no cifrado por la red. El cifrado junto con una firme criptografía basada en claves públicas aporta también protección contra posibles ataques a la seguridad. • Autenticación severa HP-UX Secure Shell admite un conjunto firme de métodos de autenticación entre el cliente y el servidor. La autenticación puede ser de dos vías: el servidor autentica el cliente y el cliente autentica el servidor. Esto protege la sesión de una amplia variedad de problemas de seguridad. Los métodos de autenticación admitidos se describen en la Sección 5.6.5. • Reenvío a través de un puerto El desvío de las conexiones TCP/IP entre un cliente y un host remoto (y viceversa) se denomina reenvío a través de un puerto o túnel SSH. HP-UX Secure Shell admite reenvío a través de un puerto. Por ejemplo, el tráfico de ftp entre un cliente y un servidor (o tráfico de correo electrónico entre un cliente de correo electrónico y un servidor POP/IMAP) se puede desviar utilizando el reenvío a través de un puerto. En lugar de que el cliente se comunique directamente con el servidor, el tráfico se puede desviar hacia un servidor sshd a través de un canal seguro y el servidor sshd puede, a continuación, reenviar el tráfico hacia un puerto designado en el equipo servidor real. • Integración con características de seguridad subyacentes de HP-UX HP-UX Secure Shell es un producto integrado con características de seguridad importantes de HP-UX. Para obtener más información, consulte la Sección 5.6.7. 5.6.2 Componentes de software de HP-UX Secure Shell El software HP-UX Secure Shell consta de un conjunto de componentes de servidor y cliente. Consulte la Tabla 5-2. Tabla 5-2 Componentes de software de HP-UX Secure Shell 88 Componente Descripción Ubicación Componentes no seguros equivalentes ssh El cliente Secure Shell es un sustituto seguro de telnet y remsh; es el más parecido a remsh con características de seguridad. Cliente remsh, telnet, rlogin slogin Enlace simbólico con ssh. Cliente remsh, telnet, rlogin scp Cliente de copia segura y servidor de copia segura. Cliente y servidor rcp sftp Cliente ftp seguro. Cliente ftp Administración de la seguridad relativa al acceso remoto Tabla 5-2 Componentes de software de HP-UX Secure Shell (continuación) Componente Descripción Ubicación Componentes no seguros equivalentes sshd Demonio Secure Shell Servidor remshd, telnetd, rlogind sftp-server Demonio ftp seguro. Servidor ftpd ssh-rand-helper Generador de números aleatorios que se Servidor utiliza cuando el comando sshd no puede encontrar el archivo /dev/random ni /dev/ urandom en el servidor. HP-UX se suministra con un generador de números aleatorios residente en el kernel, rng. Si rng se desconfigura, sshd utiliza prngd. No aplicable ssh-agent Herramienta de inicio de sesión «automático» Cliente y y basado en claves de cliente a servidor servidor Mecanismo del archivo rhosts ssh-add Herramienta para hacer pares de claves del cliente conocido en ssh-agent. Cliente No aplicable ssh-keygen Herramienta para generar pares de claves para la autenticación con claves públicas. Cliente No aplicable ssh-keyscan Herramienta que permite al cliente reunir las Cliente claves públicas para un conjunto de hosts que ejecutan el demonio de Secure Shell (sshd). No aplicable ssh-keysign Herramientas que permiten generar la firma Cliente digital necesaria durante la autenticación basada en el host y que utiliza ssh() para obtener acceso a la autenticación basada en el host de las claves de host locales. No aplicable 5.6.3 Ejecución de HP-UX Secure Shell Antes de ejecutar alguno de los clientes de Secure Shell enumerados en la Tabla 5-2, inicie primero el demonio de servidor de Secure Shell, sshd. El demonio sshd obtiene los valores de configuración iniciales del archivo sshd_config, ubicado en el directorio /opt/ssh/etc del sistema servidor. Una de las directivas de configuración más importantes en el archivo sshd_config es el conjunto de métodos de autenticación que admite el demonio sshd. Para obtener más información, consulte la Sección 5.6.5. 5.6.3.1 Ejecución del cliente ssh La aplicación de cliente ssh establece una conexión de zócalos con el servidor sshd. El servidor sshd crea un proceso secundario sshd. Este proceso secundario hereda el zócalo de conexión y autentica el cliente en función del método de autenticación seleccionado. Se establece una sesión de cliente segura sólo al producirse una autenticación satisfactoria. 5.6 Seguridad de las sesiones remotas mediante HP-UX Secure Shell (SSH) 89 Una vez creada la sesión, toda comunicación posterior se produce directamente entre el cliente y este proceso secundario de sshd. Ahora el cliente puede ejecutar comandos remotos en el servidor. Cada solicitud de comando del cliente ssh hace que el proceso secundario de sshd cree un proceso shell para ejecutar dicho comando. En resumen, una sesión de cliente-servidor de ssh en ejecución consta de los siguientes procesos: • En cada sistema cliente conectado al servidor sshd, hay un proceso de cliente de ssh para cada conexión ssh establecida actualmente desde ese sistema cliente. • En el sistema servidor, hay un proceso primario sshd y tantos procesos secundarios sshd como clientes ssh concurrentes conectados al servidor. El número de procesos secundarios de sshd que se ejecutan en el servidor se duplica si se habilita la separación de privilegios en el servidor. Consulte la Sección 5.6.4. • En el sistema de servidor, para cada solicitud de ejecución de comandos desde un cliente de ssh, el correspondiente proceso secundario de sshd crea un proceso shell y utiliza una canalización UNIX para comunicar la solicitud del comando a este proceso shell. Este proceso shell devuelve los resultados de la ejecución de comandos al proceso secundario de sshd utilizando la canalización UNIX y termina una vez completada la ejecución de comandos. 5.6.3.2 Ejecución del cliente sftp La aplicación de cliente sftp hace que el proceso de cliente sftp cree el cliente ssh y, a continuación, se comunica con él utilizando una canalización UNIX. El cliente ssh establece una conexión de zócalos con el servidor sshd. El resto de la interacción del servidor es parecida al caso del cliente ssh, que se describe en la Sección 5.6.3.1. La diferencia radica en que en lugar de crear un shell para ejecutar el comando remoto, el proceso secundario sshd crea el proceso sftp-server. Toda comunicación posterior durante esta sesión de sftp se produce entre los siguientes procesos: 90 • El cliente sftp y el cliente ssh, en el sistema cliente, mediante una canalización UNIX. • El cliente ssh y el proceso secundario sshd, a través del zócalo de conexión establecido. • El proceso secundario sshd y el proceso del servidor sftp, mediante una canalización UNIX. Administración de la seguridad relativa al acceso remoto 5.6.3.3 Ejecución del cliente scp En lo que respecta al cliente scp, su ejecución es casi idéntica a la del cliente sftp. La diferencia radica en que en lugar de crear el proceso sftp-server, el proceso secundario sshd crea el proceso de scp. Toda comunicación posterior durante la sesión de scp se produce entre los siguientes procesos: • El cliente scp y el cliente ssh, en el sistema cliente, mediante una canalización UNIX. • El cliente ssh y el proceso secundario sshd, a través del zócalo de conexión establecido. • El proceso secundario sshd y el proceso del servidor scp, mediante una canalización UNIX. 5.6.4 Separación de privilegios con HP-UX Secure Shell HP-UX Secure Shell ofrece un nivel de seguridad mejorado a través de la característica de separación de privilegios. Según se describe en la Sección 5.6.3, tanto el proceso primario sshd como el proceso secundario sshd se ejecutan como usuarios con privilegios. Cuando está habilitada la separación de privilegios, se crea un proceso adicional por cada conexión de usuarios. Cuando un cliente ssh se conecta con un servidor sshd configurado para separación de privilegios, el proceso primario sshd crea un proceso secundario sshd con privilegios. Cuando está habilitada la separación de privilegios, el proceso primario sshd crea un proceso secundario adicional y sin privilegios sshd. Este proceso secundario y sin privilegios sshd hereda a continuación el zócalo de conexión. Toda comunicación posterior entre clientes y servidores se produce con este proceso secundario y sin privilegios sshd. La mayoría de las solicitudes de ejecución de comandos remotos procedentes del cliente no tienen privilegios y las maneja un shell creado en este proceso secundario y sin privilegios sshd. Cuando el proceso secundario y sin privilegios sshd necesita que se ejecute una función con privilegios, se comunica con su proceso primario y con privilegios sshd utilizando una canalización UNIX. La separación de privilegios ayuda a contener posibles daños por parte de intrusos. Por ejemplo, si se produce un ataque de desbordamiento del búfer durante la ejecución de comandos de shell, el control está en el proceso que no tiene privilegios y que, por lo tanto, contiene el riesgo potencial para la seguridad. NOTA: La separación de privilegios es la configuración por defecto para HP-UX Secure Shell. Puede desactivar la separación de privilegios definiendo UsePrivilegeSeparation NO en el archivo sshd_config. Por este riesgo potencial para la seguridad, desactive la separación de privilegios sólo después de meditarlo detenidamente. 5.6 Seguridad de las sesiones remotas mediante HP-UX Secure Shell (SSH) 91 5.6.5 Autenticación con HP-UX Secure Shell HP-UX Secure Shell admite los siguientes métodos de autenticación: • GSS-API (autenticación de clientes basada en Kerberos) • Autenticación con claves públicas • Autenticación basada en host • Autenticación con contraseñas Cuando un cliente se conecta con un demonio remoto sshd, selecciona el método de autenticación deseado (uno de los métodos enumerados anteriormente) y bien presenta las credenciales apropiadas como parte de la solicitud de conexión o bien responde a un mensaje enviado por el servidor. Todos los métodos de autenticación funcionan de esta forma. El servidor necesita la clave, el santo y seña, la contraseña o las credenciales apropiadas del cliente para establecer una conexión satisfactoria. Puede optar por que la instancia de sshd admita sólo un subconjunto de los métodos de autenticación admitidos en función de los requisitos de seguridad. Aunque HP-UX Secure Shell admite los métodos de autenticación enumerados anteriormente, los administradores del sistema pueden limitar los métodos de autenticación ofrecidos por una instancia de sshd, en función de los requisitos de seguridad específicos del entorno. Por ejemplo, un entorno HP-UX Secure Shell puede dictar que todos los clientes deben autenticarse utilizando el método de clave pública o Kerberos. Como consecuencia, se pueden deshabilitar el resto de los métodos. La habilitación o deshabilitación de los métodos de autenticación admitidos se produce mediante las directivas de configuración especificadas en el archivo sshd_config. Cuando se realiza una solicitud de conexión de un cliente ssh, el servidor responde primero con la lista de los métodos de autenticación admitidos. Esta lista representa los métodos de autenticación que admite el servidor de sshd y la secuencia en la que estos métodos se van a intentar. El cliente puede omitir uno o varios de estos métodos de autenticación. El cliente también puede cambiar la secuencia en la que se intentan los métodos. Esto se logra con una directiva de configuración en el archivo de configuración de cliente, /opt/ssh/etc/ssh_config. Las siguientes secciones resumen los métodos de autenticación que admite HP-UX Secure Shell. 5.6.5.1 GSS-API Con la interface Generic Security Service Application Programming Interface (GSS-API), un tipo de autenticación de cliente basada en Kerberos, el cliente debe obtener credenciales Kerberos con antelación y debe tener también un archivo de configuración Kerberos presente en el directorio de cliente apropiado. Cuando un cliente se conecta a un demonio sshd, presenta las credenciales en el momento de la conexión. El servidor 92 Administración de la seguridad relativa al acceso remoto compara estas credenciales con una copia de las mismas para este usuario específico. Asimismo, el servidor puede establecer opcionalmente la legitimidad del entorno host del cliente. Para obtener más información, consulte las páginas de manual de gssapi(5) y kerberos(9), y la documentación relativa al administrador Kerberos en: http://www.docs.hp.com/ en/internet.html#Kerberos. 5.6.5.2 Autenticación con claves públicas Para la autenticación con claves públicas, el entorno Secure Shell debe tener la siguiente configuración: • El cliente y el servidor deben tener un par de claves. Cada cliente ssh y cada servidor sshd deben generar un par de claves para sí mismos utilizando la utilidad ssh-keygen. • El cliente debe dar a conocer su clave pública a todos los servidores sshd con los que necesita establecer comunicación. Para hacerlo, copie la clave pública de cada cliente en un directorio predeterminado de cada servidor pertinente. • El cliente debe adquirir la clave pública de cada servidor con el que necesita establecer comunicación. El cliente adquiere las claves públicas con la utilidad ssh-keyscan. Una vez terminada la configuración, los clientes ssh que se conectan a los servidores sshd se autentican utilizando claves públicas y privadas. Para obtener más información sobre la criptografía de claves públicas, consulte la entrada del glosario criptografía de claves públicas. HP-UX Secure Shell ofrece una característica adicional para racionalizar la autenticación con claves públicas. Para algunos entornos, puede que le resulte más cómodo no tener que responder a las solicitudes de contraseñas todo el tiempo. Puede eliminar la necesidad de tener que responder a las solicitudes de contraseñas utilizando una combinación de procesos ssh-agent y ssh-add, ambos ejecutados en el equipo cliente. El cliente registra toda la información clave con el proceso ssh-agent a través de la utilidad ssh-add. A continuación, la autenticación con claves públicas entre cliente y servidor se facilita mediante ssh-agent sin que el demonio sshd tenga que interactuar con el cliente. 5.6.5.3 Autenticación con claves públicas y basada en host La autenticación con claves públicas y basada en host es una extensión más segura del método de autenticación con claves públicas. Además de tener pares de claves tanto para cliente como para servidor, este método permite a los entornos cliente restringir los servidores con los que se van a comunicar. Aplique esta restricción al crear un archivo .rhosts en el directorio inicial del cliente. 5.6 Seguridad de las sesiones remotas mediante HP-UX Secure Shell (SSH) 93 5.6.5.4 Autenticación con contraseñas El método de autenticación con contraseñas se basa en la existencia de un solo inicio de sesión con id. de usuario y contraseña. Este inicio de sesión podría estar basado en el inicio de sesión del usuario que se especifica en el archivo /etc/passwd o estar basado en los módulos PAM. HP-UX Secure Shell está totalmente integrado en los módulos PAM disponibles en el sistema servidor. Para este fin, el archivo /opt/ssh/etc/sshd_config porta una directiva de configuración UsePAM. Si está definida en YES, cualquier solicitud de autenticación con contraseñas del cliente hace que sshd consulte el archivo de configuración PAM (/etc/pam.conf). La autenticación con contraseñas se realiza, a continuación, a través de los módulos PAM configurados, en secuencia, hasta que sea satisfactoria. Para obtener más información sobre la autenticación PAM, consulte la página de manual de pam.conf(4). Defina la directiva UsePAM en NO para hacer caso omiso de la autenticación PAM. En lo sucesivo, cualquier solicitud de autenticación con contraseña del cliente hará que el archivo sshd haga caso omiso de los valores de configuración PAM en el servidor. En su lugar, sshd obtiene información de contraseñas de usuario al hacer directamente una llamada a la biblioteca getpwnam(). HP-UX Secure Shell se ha probado con PAM_UNIX, PAM_LDAP y PAM_KERBEROS. Asimismo, se espera que funcione con otros módulos PAM, por ejemplo, PAM_DCE y PAM_NTLM. 5.6.6 Protocolos de comunicación Los usuarios de HP-UX Secure Shell se pueden conectar con un demonio sshd remoto utilizando el protocolo SSH-1 o SSH-2. El protocolo SSH-2 es más seguro y se recomienda encarecidamente en lugar de SSH-1. 5.6.7 HP-UX Secure Shell y el sistema HP-UX HP-UX Secure Shell no es realmente un auténtico shell. Es un mecanismo que permite crear una conexión segura entre un cliente y un sistema host remoto para poder ejecutar sesiones de shell remotas sin riesgos en el sistema host. Para lograr una conexión segura, HP-UX Secure Shell realiza por sí mismo la mayor parte de la creación de sesiones y la autenticación. A continuación, se muestra una lista parcial de las características que utiliza HP-UX Secure Shell: • Registro de intentos login Al igual que el comando telnet o remsh, HP-UX Secure Shell registra las sesiones fructuosas e infructuosas en los archivos /var/adm/wtmp y /var/adm/btmp, respectivamente. Para obtener más información, consulte la página de manual de utmp(4). 94 Administración de la seguridad relativa al acceso remoto • Módulos PAM Según se describe en la Sección 5.6.5, HP-UX Secure Shell puede utilizar la autenticación PAM para sesiones de cliente. Cuando se selecciona la autenticación PAM, HP-UX Secure Shell utiliza el archivo /etc/pam.conf y llama al módulo PAM apropiado para la autenticación. Para obtener más información sobre el archivo /etc/pam.conf, consulte la página de manual de pam.conf(4). • Uso del archivo /etc/default/security Es un archivo de configuración accesible en el sistema que contiene atributos que definen el comportamiento del inicio de sesión, las contraseñas y demás configuraciones de seguridad. HP-UX Secure Shell permite utilizar estos atributos con algunas restricciones, que se explican en el archivo /opt/ssh/README.hp de HP-UX Secure Shell. Para obtener más información sobre el archivo /etc/default/security, consulte la página de manual de security(4). • Contraseñas ocultas HP-UX Secure Shell tiene integrada la característica de contraseñas ocultas HP-UX. Para obtener más información, consulte la página de manual de shadow(4). • Control del archivo de registro del sistema (syslog) HP-UX Secure Shell utiliza el comando syslog para escribir mensajes importantes. Para obtener más información, consulte las páginas de manual de syslog(3C) y syslogd(1M). • Registro de auditoría HP-UX Secure Shell ha aplicado el registro de auditoría (en modo de confianza) en su propio código. Para obtener más información, consulte la página de manual de audit(5). 5.6.8 Tecnologías asociadas HP-UX Secure Shell se ha probado con las siguientes tecnologías: • Kerberos 5 y GSS-API • OpenSSL • IPv6 • TCP Wrappers • PAM (PAM_UNIX, PAM_Kerberos y PAM_LDAP) • HP-UX Strong Random Number Generator 5.6 Seguridad de las sesiones remotas mediante HP-UX Secure Shell (SSH) 95 5.6.9 Requisito del generador de números aleatorios robusto Al igual que con todos los productos criptográficos basados en claves, HP-UX Secure Shell necesita un generador de números aleatorios. HP-UX Secure Shell busca archivos especiales de dispositivo del generador HP-UX Strong Random Number Generator (/dev/urandom y /dev/random) y utiliza el primer archivo especial de dispositivo que localiza. Si esos dos archivos no existen en el sistema, HP-UX Secure Shell utiliza su propio generador de números aleatorios robusto: ssh-rand-helper. HP-UX Strong Random Number Generator mejora el rendimiento y la entropía (medida de aleatoriedad y, por lo tanto, de la seguridad de las claves generadas) de HP-UX Secure Shell. Genera auténticos números aleatorios irreproducibles. Se recomienda encarecidamente el uso de HP-UX Strong Random Number Generator con HP-UX Secure Shell. HP-UX Strong Random Number Generator se facilita por defecto. Para obtener más información, consulte la página de manual de random(7). 5.6.10 Compatibilidad con TCP Wrappers El demonio de HP-UX Secure Shell, sshd, está enlazado con la biblioteca de archivos de almacenamiento, libwrap.a, para admitir TCP Wrappers. Consulte también la Sección 5.3. 5.6.11 Cárcel de directorio chroot chroot es una cárcel de directorio. Inicia una aplicación en un directorio específico y restringe el acceso de los usuarios a ese directorio y a los directorios que contenga. Impide que los usuarios cambien de directorio por encima del directorio especificado. Se ha pensado para restringir el acceso a archivos y directorios a los usuarios de esa aplicación mientras la utilizan. Deberá habilitar el comando chroot para una aplicación. Deberá crear directorios nuevos y copiar el conjunto de archivos pertinente en los directorios recién creados. Puede configurar opcionalmente ssh, scp y sftp con un directorio chroot. El archivo README de HP-UX Secure Shell ubicado en /opt/ssh/README.hp explica la característica chroot, la secuencia de comandos de configuración de chroot y los archivos específicos que esta secuencia copia para habilitar ssh, sftp y scp para un entorno chroot. Consulte también la página de manual de chroot(1M). La secuencia de comandos de configuración de chroot se ubica en el archivo /opt/ ssh/utils/ssh_chroot_setup.sh, que forma parte del producto de software HP-UX Secure Shell (Secure Shell 4.30.004/005). 96 Administración de la seguridad relativa al acceso remoto Parte II Protección de los datos HP-UX 11i ofrece protección de los datos de numerosas maneras: protección de los datos en tránsito, en uso y en reposo. Al emplear las características de seguridad concebidas para proteger los datos de las tres maneras mencionadas, los clientes de HP-UX 11i pueden reducir al mínimo las posibles infracciones de seguridad no sólo en cuanto a la pérdida de datos, sino también en cuanto a la confianza del cliente. Esta sección describe los siguientes temas: • Seguridad de los sistemas de archivos (Capítulo 6) • Compartimentos (Capítulo 7) • Privilegios expresos (Capítulo 8) 97 98 6 Seguridad de los sistemas de archivos Este capítulo explica la seguridad de los sistemas de archivos. Antes de leer este capítulo, deberá tener unos conocimientos básicos de los archivos y los sistemas de archivos. Puesto que los datos se almacenan en archivos, es importante saber cómo protegerlos. Este capítulo analiza los siguientes temas: • Control del acceso a los archivos (Sección 6.1) • Definición de listas de control de acceso (Sección 6.2) • Uso de las listas ACL del sistema de archivos HFS (Sección 6.3) • Uso de las listas ACL del sistema de archivos JFS (Sección 6.4) • Comparación de listas ACL de los sistemas de archivos JFS y HFS (Sección 6.5) • Listas ACL y sistemas de archivos NFS (Sección 6.6) • Consideraciones sobre la seguridad para los archivos especiales de dispositivo /dev (Sección 6.7) • Protección de las particiones de disco y los volúmenes lógicos (Sección 6.8) • Pautas de seguridad para montar y desmontar sistemas de archivos (Sección 6.9) • Control de la seguridad de los archivos en una red (Sección 6.10) 6.1 Control del acceso a los archivos Los grupos de trabajo, los permisos de acceso a los archivos, la propiedad de los archivos y las reglas de compartimentos determinan quién puede obtener acceso a un archivo dado. Las reglas más sencillas de acceso a los archivos son los permisos de acceso a los archivos estándar de UNIX. Puede dividir a los usuarios en grupos para que puedan compartir en el grupo los archivos que posea el grupo y puedan protegerse de personas ajenas. Los permisos de acceso a los archivos tradicionales de UNIX se muestran mediante el comando ls con el indicador -l. Los permisos indican el tipo de acceso (es decir, la capacidad de lectura, escritura y ejecución) que se concede al propietario y a los grupos en el sistema. Las protecciones de acceso a los archivos tradicionales de UNIX permiten un cierto control sobre quién puede tener acceso a los archivos y directorios, pero no permiten definir el acceso a los archivos para usuarios individuales y grupos más allá del usuario propietario y el grupo propietario. La información siguiente es un breve análisis de los permisos de acceso a los archivos de UNIX. Cada archivo y cada directorio tienen nueve permisos asociados. Los archivos y los directorios tienen los siguientes tres tipos de permisos: 6.1 Control del acceso a los archivos 99 • r (lectura) • w (escritura) • x (ejecución) Estos tres permisos se producen para cada una de las tres clases de usuarios siguientes: • u (usuario/propietario) • g (grupo) • o (los demás; también denominado mundo) El permiso r permite a los usuarios ver o imprimir el archivo. El permiso w permite a los usuarios escribir (modificar) el archivo. El permiso x permite a los usuarios ejecutar el archivo o buscar directorios. La Figura 6-1 muestra los campos de permisos tradicionales. Figura 6-1 Campos de permisos de los directorios y los archivos permiso propietario grupo otros rwx rwx rwx r lectura w escritura x ejecución El usuario/propietario de un archivo o directorio generalmente es la persona que lo creó. Si usted es el propietario de un archivo, puede cambiar los permisos de archivo con el comando chmod. El grupo especifica el grupo al que pertenece el archivo. Si usted es el propietario de un archivo, puede cambiar la identificación de grupo del archivo con el comando chgrp. El significado de los tres tipos de permisos difiere algo entre directorios y archivos corrientes. Para obtener más información, consulte la Tabla 6-1. 100 Seguridad de los sistemas de archivos Tabla 6-1 Diferencias entre los privilegios de archivos y de directorios Permiso Archivo Directorio r (lectura) El contenido se puede ver o imprimir. El contenido se puede leer, pero no buscar. Normalmente, r y x se utilizan juntos. w (escritura) El contenido se puede cambiar o Las entradas se pueden agregar o borrar. eliminar. x (ejecución) El archivo se puede utilizar como El directorio se puede buscar. un programa. 6.1.1 Definición de permisos de acceso a los archivos El comando chmod cambia el tipo de acceso (privilegios de lectura, escritura y ejecución) del propietario del archivo, los miembros del grupo o los demás. Sólo el propietario de un archivo o un usuario con los privilegios apropiados puede cambiar el acceso a los archivos. Consulte la página de manual de chmod(1). Por defecto, el conjunto inicial de permisos de lectura y escritura de los archivos y directorios viene determinado por el valor umask del creador. Para cambiar los permisos de acceso a los archivos por defecto, utilice el comando umask. Consulte la página de manual de umask(1). Cada bit que se establece en la máscara de creación del modo archivo conlleva el correspondiente bit de permiso en el modo archivo que se va a borrar (deshabilitar). A la inversa, los bits que se borran en la máscara permiten la activación de los bits correspondientes del modo archivo en los archivos recién creados. Por ejemplo, un comando umask de 022 en formato octal crea una máscara de u=rwx,g=rx,o=rx, que deshabilita los permisos de acceso de grupo y demás permisos de escritura. 6.1.2 Definición de la propiedad de los archivos El comando chown cambia la propiedad de un archivo. Para cambiar el propietario, hay que ser el titular del archivo o tener los privilegios apropiados. El comando chgrp cambia la propiedad de un grupo de archivos. Para cambiar el grupo, hay que ser el titular del archivo o tener los privilegios apropiados. Para obtener más información, consulte las páginas de manual de chown(1) y chgrp(1). 6.1 Control del acceso a los archivos 101 6.1.3 Protección de los directorios Normalmente, si un directorio tiene permiso de escritura ya sea mediante permisos estándar o listas ACL, cualquier miembro puede eliminar los archivos del directorio, al margen de los permisos definidos para los archivos. Para proteger contra la eliminación de archivos no deseada en un directorio: • Retire los permisos de escritura para los directorios que no deban tenerlos. Esto es especialmente eficaz en el caso de los directorios particulares de los usuarios. El siguiente comando permite a otras personas leer y buscar en el directorio midir, pero el único que puede eliminar archivos en él es el propietario. # chmod 755 midir Consulte las páginas de manual de chmod(1) y chmod(2). • Defina el bit de permanencia en el directorio. • El bit de permanencia es un bit especial en el modo de cada archivo. La definición del bit de permanencia evita que los usuarios eliminen archivos de otros usuarios de ese directorio. La definición del bit de permanencia de un directorio permite sólo al propietario del archivo, al propietario del directorio o a un usuario con los privilegios apropiados, eliminar o cambiar el nombre de los archivos. Esto resulta eficaz para los directorios temporales o de proyectos (por ejemplo, /tmp y /var/tmp) cuyo acceso debe estar abierto a muchos usuarios autorizados. El siguiente comando establece que todos puedan crear, leer y escribir archivos en /mfgproj, pero que sólo el propietario del archivo, el propietario del directorio o un usuario con los privilegios apropiados puedan eliminarlos: # chmod a+rwxt /mfgproj La definición del bit de permanencia es importante para los directorios que se utilizan para archivos temporales. En el caso de que un directorio temporal no se haya definido en permanencia, un intruso podría modificar el comportamiento previsto de los programas de usuario al esperar a que se cree un archivo temporal y, a continuación, eliminarlo y volver a crear un nuevo archivo con el contenido modificado, pero con el mismo nombre. En la mayoría de lo casos, la aplicación no es consciente del cambio y podría realizar acciones maliciosas sin intención en nombre del intruso. 6.1.4 Protección de los archivos relacionados con las cuentas de usuario Siga estas pautas para proteger los archivos relacionados con las cuentas de usuario: • Un directorio inicial no debe tener acceso de escritura para nadie, exceptuando al propietario. De lo contrario, cualquier usuario puede agregar y eliminar archivos del directorio. • El propietario de la cuenta debe ser el único que pueda escribir en los archivos .profile, .kshrc, .login y .cshrc de cada usuario. 102 Seguridad de los sistemas de archivos • El propietario del archivo de usuario .rhosts debe ser el único con capacidad para leer o escribir en él. Esta medida de precaución impide que los demás usuarios adivinen las otras cuentas que usted pueda tener y que alguien modifique el archivo .rhosts a fin de conseguir entrar en esos sistemas. Para obtener más información, consulte la página de manual de hosts.equiv(4). • No utilice un archivo .netrc, ya que prescinde de la autenticación login para el inicio de sesión remoto e incluso contiene la contraseña sin cifrar del usuario. Si se utiliza, el propietario de .netrc debe ser el único con capacidad para leerlo o escribir en él. Para obtener más información, consulte la página de manual de netrc(4). 6.1.5 Localización y reparación de daños de un archivo con el comando fsck Los siguientes problemas pueden indicar un daño en el sistema de archivos: • Un archivo contiene datos incorrectos (basura). • Un archivo se ha truncado o le faltan datos. • Los archivos desaparecen o cambian de ubicación inesperadamente. • Aparecen mensajes de error en el terminal de un usuario, la consola del sistema o el archivo de registro del sistema. • No puede cambiar de directorio ni obtener una lista de archivos. • El sistema no se reinicia. Si usted u otros usuarios no pueden identificar fácilmente los problemas con el sistema de archivos, utilice el comando fsck para comprobar el sistema de archivos. El comando fsck es la principal herramienta para buscar y subsanar las incoherencias en los sistemas de archivos. El comando fsck examina el sistema de archivos que aparece en /etc/fstab. La utilidad fsck no tiene capacidad para detectar los daños del archivo. Si fsck no encuentra ningún error, es probable que el problema no sea un sistema de archivos dañado. Es decir, el sistema de archivos es utilizable, aunque los datos subyacentes se pierdan o dañen. Busque uno o varios de estos otros problemas de archivo: • Un usuario, un programa o una aplicación ha eliminado, sobrescrito, trasladado o truncado el archivo o los archivos. • Es posible que el sistema de archivos asociado a un directorio concreto al crear un archivo no se monte en dicho directorio. • Se ha colocado un archivo o varios archivos en un directorio que actualmente tiene montado un sistema de archivos. Los archivos existen todavía, pero no son accesibles. Desmonte el sistema de archivos para tener acceso a los archivos. • La protección o propiedad del archivo impide tener acceso a él. Utilice el comando chmod o chown para cambiar los permisos de acceso a los archivos. 6.1 Control del acceso a los archivos 103 6.2 Definición de listas de control de acceso Las listas de control de acceso (ACL - Access Control List) aportan una cota mayor de protección para los archivos que los permisos tradicionales de acceso a los archivos. Dichas listas se pueden utilizar para permitir o limitar el acceso a los archivos por parte de usuarios individuales ajenos al grupo de pertenencia. Sólo el propietario de un archivo o un usuario con los privilegios apropiados puede crear listas de control de acceso. El sistema de archivos Journaled File System (JFS) y High-Performance File System (HFS) admiten las listas ACL, pero utilizan sintaxis y mecanismos diferentes. JFS es la puesta en ejecución en HP-UX del sistema de archivos Veritas Journaled File System (VxFS). HFS es la versión en HP-UX del sistema de archivos UNIX File System (UFS) y es compatible con las versiones anteriores de HP-UX. Una lista de control de acceso (ACL) es un conjunto de entradas de usuario, grupo y modo asociadas a un archivo. La lista especifica los permisos de acceso para todas las combinaciones posibles de identificación de usuario e identificación de grupo. Las listas de control de acceso ofrecen una manera más precisa de controlar el acceso a los archivos que los permisos de acceso a los archivos tradicionales de UNIX. Las listas ACL permiten conceder o restringir el acceso a los archivos en función de usuarios individuales y grupos específicos, además del control tradicional. Ambos sistemas de archivos, HFS y JFS, admiten las listas ACL, pero emplean mecanismos diferentes y una sintaxis distinta. NOTA: HFS se ha desaprobado. Se eliminará del sistema operativo en una revisión posterior. HP-UX admite dos productos JFS independientes: el producto JFS básico, incluido en el sistema operativo, y el producto avanzado opcional, OnLineJFS, instalado por separado. Ambos productos JFS admiten las listas ACL. Para obtener más información, consulte las páginas de manual de setacl(1), getacl(1), aclv(5), chacl(1), lsacl(1) y acl(5). 6.3 Uso de las listas ACL del sistema de archivos HFS Los permisos de acceso de las listas ACL del sistema de archivos HFS se definen con el comando chacl y se visualizan con el comando lsacl. Consulte el Ejemplo 6-1. IMPORTANTE: Deberá utilizar el comando chmod con la opción -A cuando trabaje con archivos que tengan asignados permisos de acceso de las listas ACL del sistema de archivos HFS. Sin la opción -A, el comando chmod eliminará del archivo los permisos de acceso de las listas ACL. La sintaxis es: # chmod -A modo archivo 104 Seguridad de los sistemas de archivos El comando chacl es un superconjunto del comando chmod. Todo permiso específico que asigne con el comando chacl se agrega a los permisos de acceso más generales atribuidos con el comando chmod. Cuando un archivo tiene asignadas listas ACL, el comando ll muestra un signo (+) después de la cadena del permiso de acceso. Si un usuario.grupo coincide con más de una entrada de lista ACL del sistema de archivos HFS, tiene precedencia la entrada más específica. Consulte el Ejemplo 6-2. Ejemplo 6-1 Creación de una lista ACL del sistema de archivos HFS En este ejemplo, el comando chmod restringe los permisos de acceso de escritura de myfile sólo al usuario allan. El comando chmod también elimina todas las listas ACL anteriores del sistema de archivos HFS. $ chmod 644 myfile $ ll myfile -rw-r--r-1 allan users 0 Sep 21 16:56 myfile $ lsacl myfile (allan.%,rw-)(%.users,r--)(%.%,r--) myfile El comando lsacl muestra sólo los valores por defecto (no las listas ACL), que se corresponden con los permisos básicos de propietario, grupo y otros. El comando chacl concede permiso de acceso de lectura y escritura al archivo myfile a otro usuario. $ chacl 'naomi.users=rw' myfile $ ll myfile -rw-r--r--+ 1 allan users 0 Sep 21 16:56 myfile $ lsacl myfile (naomi.users,rw-)(allan.%,rw-)(%.users,r--)(%.%,r--) myfile Fíjese en dos elementos: la presentación de los permisos del comando ll tiene adjunto un signo +, el cual indica que existen listas ACL, y la cadena de permisos de ll no ha cambiado. La entrada adicional de la presentación del comando lsacl especifica que la usuaria naomi del grupo users tiene permisos de acceso de lectura y escritura a myfile. 6.3 Uso de las listas ACL del sistema de archivos HFS 105 Ejemplo 6-2 Varias coincidencias con las listas ACL del sistema de archivos HFS Si una combinación usuario.grupo de un usuario coincide con más de una entrada de listas ACL, tiene precedencia la entrada más específica. En este ejemplo, defina primero los permisos del archivo. $ chmod 644 myfile Utilice el comando chacl en myfile para agregar una entrada de sólo escritura para la usuaria naomi: $ chacl naomi.%=w myfile $ lsacl myfile (naomi.%,-w-)(allan.%,rw-)(%.users,r--)(%.%,r--) myfile Ahora la usuaria naomi tiene permiso de acceso de escritura al archivo myfile, por medio de la lista ACL definida para naomi.%, pero no tiene permiso de acceso de lectura a dicho archivo porque naomi.% tiene precedencia sobre las listas ACL definidas para %.users y %.%. El comando lsacl muestra las listas ACL del sistema de archivos HFS en orden decreciente de especificidad. Es decir, las coincidencias de permisos de acceso se intentan de izquierda a derecha. 6.3.1 Listas ACL del sistema de archivos HFS y comandos y llamadas de HP-UX Los siguientes comandos y llamadas del sistema funcionan con las listas ACL en los sistemas de archivos HFS: Tabla 6-2 Comandos de las listas ACL del sistema de archivos HFS Comandos Descripción chacl Cambia las listas ACL del HFS de los archivos. getaccess Presenta una lista de los derechos de acceso del usuario a los archivos. lsacl Presenta una relación de las listas ACL del HFS de los archivos. Tabla 6-3 Llamadas de sistema de las listas ACL del sistema de archivos HFS Llamada de sistema Descripción getaccess() Obtiene los derechos de acceso efectivos de un usuario a un archivo. getacl(), fgetacl() Obtienen información sobre las listas ACL del HFS. setacl(), fsetacl() Definen información sobre las listas ACL del HFS. acltostr() Convierte la estructura de listas ACL del HFS en un formato de cadena. 106 Seguridad de los sistemas de archivos Tabla 6-3 Llamadas de sistema de las listas ACL del sistema de archivos HFS (continuación) Llamada de sistema Descripción chownacl() Cambia el propietario o grupo representado en la lista ACL de un archivo del HFS. cpacl(), fcpacl() Copian las listas ACL del HFS y los bits de modo de un archivo en otro. setaclentry(), fsetaclentry() Agregan, modifican o eliminan una entrada de lista ACL de un archivo del HFS. strtoacl() Analiza y convierte la estructura de listas ACL del HFS en un formato de cadena. strtoaclpatt() Analiza y convierte las cadenas modelo de listas ACL del HFS en matrices. Los siguientes comandos, llamadas de sistema y bibliotecas de subrutinas influyen en las entradas de las listas ACL, algunas veces de forma inesperada. Tabla 6-4 Comandos y llamadas que influyen en las entradas de las listas ACL Comando o llamada Descripción chmod Elimina las listas ACL del HFS por defecto. Utilice la opción -A para conservar las listas ACL del HFS. chmod() Elimina las entradas de listas ACL del HFS. Utilice la función getacl() y la función setacl() para guardar y restaurar las entradas de listas ACL del HFS. cpset No define las entradas opcionales de listas ACL de un archivo. find Identifica los archivos cuyas entradas de listas ACL coincidan con modelos de ACL específicos o los incluyan en los sistemas de archivos HFS o JFS. ls -l La forma larga indica la existencia de listas ACL mostrando un signo + después de los bits de permiso de acceso del archivo. mailx No admite entradas de listas ACL opcionales en los archivos /var/mail/*. compact, compress, cp, ed, pack, unpack Copian las entradas de listas ACL en los archivos nuevos que crean. 6.3 Uso de las listas ACL del sistema de archivos HFS 107 Tabla 6-4 Comandos y llamadas que influyen en las entradas de las listas ACL (continuación) Comando o llamada Descripción frecover, fbackup Comandos que sólo deben utilizarse para recuperar y hacer copias de seguridad de los archivos de forma selectiva. Utilice la opción -A al realizar copias de seguridad desde un sistema compatible con las listas ACL que se vayan a recuperar en un sistema que no admita dichas listas. ar, cpio, ftio, shar, tar, dump, restore Estos comandos no conservan las listas ACL al archivar y restaurar. Utilizan el valor st_mode que remite la función stat(). rcs, sccs Estos comandos no admiten listas ACL. Las listas de control de acceso del HFS utilizan «inodos de continuación» adicionales al crear sistemas de archivos nuevos. Téngalos en cuenta cuando utilice los siguientes comandos: • fsck: remite el número de archivos con entradas de listas ACL en forma de un valor para icont. Utilice la opción -p para borrar los inodos de continuación a los que no se haya hecho referencia. Consulte la página de manual de fsck(1M). • diskusg, ncheck: Hacen caso omiso de los inodos de continuación. Consulte las páginas de manual de diskusg(1M) y ncheck(1M). • mkfs: Tiene en cuenta los inodos de continuación en los discos nuevos. Consulte la página de manual de mkfs(1M). 6.4 Uso de las listas ACL del sistema de archivos JFS Esta sección describe las listas ACL del sistema de archivos JFS y su uso. NOTA: Para utilizar las listas ACL del sistema de archivos JFS, deberá tener un sistema de archivos VxFS que utilice la versión 4 del diseño del disco. Para obtener información sobre la mejora del sistema de archivos a la versión 4, consulte la página de manual de vxupgrade(1M). 6.4.1 Definición de una lista ACL del sistema de archivos JFS Una lista ACL del sistema de archivos JFS contiene entradas de una línea de longitud que designan a usuarios y grupos específicos e indican qué permiso de acceso se otorga a cada uno de ellos. La presencia de una lista ACL del sistema de archivos JFS también modifica el significado de los bits de permiso de group, que se muestran con el comando ls -l. Una lista ACL del sistema de archivos JFS tiene al menos cuatro entradas: una entrada user, una entrada group, una entrada class y una entrada other. Cuando una 108 Seguridad de los sistemas de archivos lista ACL del JFS sólo contiene estas cuatro entradas, los permisos de acceso que concede son exactamente iguales que los permisos que representan los bits de permiso de sistema UNIX estándar. 6.4.2 Cómo genera el sistema una lista ACL del sistema de archivos JFS Siempre que se crea un archivo en un sistema de archivos JFS, el sistema inicializa una lista ACL del JFS mínima para el archivo; dicha lista contiene una entrada user para los permisos de propietario, una entrada group para los permisos de grupo propietario, una entrada class para los permisos de grupo propietario y una entrada other para los otros permisos de grupo. Se pueden agregar entradas adicionales de dos formas: por mediación del usuario o como consecuencia de las entradas por defecto especificadas en el directorio primario. 6.4.3 Lista ACL del sistema de archivos JFS mínima Una lista ACL con las cuatro entradas básicas definidas anteriormente se denomina lista ACL del sistema de archivos JFS mínima. Un ejemplo de lista ACL mínima presenta este aspecto: user::rwgroup::r-class:r-other:--- • La entrada user indica los permisos del propietario del archivo y asigna bits de permiso directamente al propietario. Puesto que la primera entrada se aplica al propietario del archivo, no es necesario que se indique ningún nombre de usuario. La entrada de la lista ACL de ejemplo concede permisos de acceso de lectura y escritura al propietario del archivo. • Las entradas group y class precisan el permiso de acceso concedido a los miembros del grupo propietario. La entrada de la lista ACL de ejemplo concede permisos de acceso de sólo lectura al propietario del archivo. Las entradas group y class se describen con más detalle en la Sección 6.4.5. • La entrada other es una entrada general que especifica los permisos correspondientes a toda persona a la que no se haya concedido ni denegado permiso de acceso en ninguna de las demás entradas. La entrada other deniega el permiso de acceso a todos los usuarios que no sean el propietario del archivo ni el grupo propietario del archivo. Los bits de permiso mostrados por el comando ls -l para este archivo pueden adoptar este aspecto: rw-r----- En la siguiente sección, se describe cómo influye la presencia de entradas de listas ACL del JFS adicionales en el acceso a los archivos y cómo interpretar los bits de permiso. 6.4 Uso de las listas ACL del sistema de archivos JFS 109 6.4.4 Entradas «user» y «group» adicionales de las listas ACL del sistema de archivos JFS Si desea conceder o denegar el acceso a usuarios o grupos específicos ubicados en el sistema, puede agregar un máximo de 13 entradas más de user y group a las cuatro entradas mínimas mencionadas en la sección anterior. Por ejemplo, la siguiente entrada de la lista ACL de un archivo concede permisos de acceso de lectura, escritura y ejecución a un usuario que ha iniciado una sesión como boss: user:boss:rwx En el siguiente ejemplo, una lista ACL con la siguiente entrada deniega el permiso de acceso a un usuario del grupo spies: group:spies:--- 6.4.5 Entradas «group» y «class» de las listas ACL del sistema de archivos JFS En un archivo con una lista ACL mínima, las entradas group propietario y class de una lista ACL son idénticas. Sin embargo, en un archivo con entradas adicionales, las entradas group propietario y class de la lista ACL son distintas. La entrada group propietario concede permisos de acceso a un grupo específico: el group propietario. La entrada class es más general: especifica los permisos de acceso máximos que cualquiera de las entradas user y group adicionales puede conceder. Si no se concede un permiso concreto en la entrada class, ese permiso no puede concederlo ninguna de las entradas de la lista ACL, excepto la primera entrada user («owner», propietario) y la entrada other (otros). Se puede denegar cualquier permiso de acceso a un usuario o grupo concreto. La entrada class funciona como un límite superior para los permisos de acceso a los archivos. Cuando una lista ACL contiene más de una entrada group o user, a la colección de entradas user y group adicionales se alude como las entradas group class, porque la entrada class limita el permiso de acceso efectivo concedido por cualquiera de dichas entradas adicionales. 6.4.6 Uso de los comandos «setacl» y «getacl» Utilice los comandos setacl y getacl para cambiar y ver las listas ACL. Utilice el comando setacl para cambiar la lista ACL de una de las siguientes formas: 110 • Sustituya una lista ACL completa del archivo, incluida la lista ACL por defecto ubicada en el directorio. • Agregue, modifique o elimine una o varias entradas, incluidas las entradas por defecto ubicadas en los directorios. Seguridad de los sistemas de archivos El comando getacl muestra las entradas de la lista ACL. Los bits de permiso de acceso a archivos correspondientes a user y group se convierten en casos especiales de estas entradas: • Los bits que representan los permisos de acceso de propietario se denotan con una entrada user sin especificar un número de identificación de usuario. • Los bits que representan los permisos de acceso de grupo se denotan con una entrada group sin especificar una identificación de grupo. Una lista ACL debe contener una entrada de cada una de estas entradas user y group especiales. La lista ACL puede tener cualquier cantidad de entradas user y group adicionales, pero todas ellas deben contener un número de identificación de usuario o una identificación de grupo, según corresponda. Una lista ACL tiene sólo una entrada other, que representa los bits de permiso que se van a conceder a otros usuarios. Para obtener una descripción de los comandos, consulte las páginas de manual de setacl(1) y getacl(1). 6.4.7 Efecto de chmod en las entradas «class» Cuando un archivo tiene una lista ACL mínima, las entradas group propietario y class de la lista ACL son idénticas y el comando chmod afecta a ambas. No obstante, cuando un archivo contiene entradas opcionales adicionales de la lista ACL, tienen lugar las siguientes consecuencias: • La entrada class de la lista ACL ya no tiene por qué ser igual a la entrada group propietario de la lista ACL • El comando chmod afecta a la entrada class de la lista ACL, no a la entrada group propietario. • Deberá utilizar el comando setacl para cambiar la entrada group propietario. 6.4.8 Ejemplo de modificación de una lista ACL del sistema de archivos JFS mínima Para ilustrar la función de la entrada class de una lista ACL del sistema de archivos JFS, esta sección describe cómo afectan los comandos chmod y setacl a un archivo con una lista ACL del JFS mínima, así como a un archivo con entradas group class. NOTA: Se facilitan más detalles sobre el uso de los comandos getacl y setacl en la Sección 6.4.10. Consulte también las páginas de manual de getacl(1) y setacl(1). Supongamos que tiene un archivo, exfile, con permisos de acceso de sólo lectura (444) y una lista ACL del JFS mínima. El comando ls -l muestra los permisos para exfile: $ ls -l exfile -r--r--r-- 1 jsmith users 12 Sep 20 15:02 exfile 6.4 Uso de las listas ACL del sistema de archivos JFS 111 El comando getacl muestra la lista de la siguiente salida del archivo exfile, que es una lista ACL del JFS mínima: $ getacl exfile # file: exfile # owner: jsmith # group: users user::r-group::r-class:r-other:r-- El uso del comando chmod para agregar permisos de acceso de escritura al archivo exfile cambia ambas entradas de la lista ACL: group propietario y class. Por ejemplo, analice la salida del comando getacl: $ chmod 666 exfile $ getacl exfile # file: exfile # owner: jsmith # group: users user::rwgroup::rwclass:rwother:rw- A continuación, se agregan entradas user y group adicionales, las cuales afectarán a la entrada class de la lista ACL, pero no a la entrada group propietario. El primer comando setacl que sigue concede permiso de acceso de sólo lectura al usuario guest; las demás entradas de la lista ACL no se ven afectadas. Sin embargo, el segundo comando setacl concede permisos de acceso de lectura y ejecución al grupo dev y el límite superior de los permisos (la entrada class) se amplía para incluir el permiso de acceso de ejecución. $ setacl -m u:guest:r-- exfile $ setacl -m g:dev:r-x exfile $ getacl exfile# file: exfile # owner: jsmith # group: users user::rwuser:guest:r-group::rwgroup:dev:r-x class:rwx other:rw- A continuación, el comando chmod elimina los permisos de acceso de ejecución y de escritura de group y reduce realmente los permisos de class a acceso de sólo lectura. Los permisos de acceso de group propietario, mientras permanezcan igual, también se reducen, en efecto, al permiso de sólo lectura. $ chmod g-wx exfile $ getacl exfile 112 Seguridad de los sistemas de archivos # file: exfile # owner: jsmith # group: users user::rwuser:guest:r-group::rw# effective:r-group:dev:r-x # effective:r-class:r-other:rw- Los permisos de acceso de other siguen siendo los mismos. La entrada class no limita el permiso de acceso que pueden conceder la primera entrada user («owner», propietario) o la entrada other. El comando ls -l muestra la lista de los permisos de exfile: El signo + ubicado al final de la cadena de permisos indica que existe una lista ACL para el archivo. $ ls -l exfile -rw-r--rw-+ 1 jsmith users 12 Sep 20 15:02 exfile 6.4.9 Listas ACL del sistema de archivos JFS por defecto Querrá que todos los archivos creados en un directorio tengan determinadas entradas de listas ACL. Por ejemplo, puede autorizar a otra persona para escribir en cualquier archivo de un directorio suyo cuando los dos colaboren en un proyecto. Puede colocar una entrada de lista ACL que conceda el acceso deseado en todos los archivos del directorio, pero tendrá que volver a agregar esta entrada cada vez que cree un archivo nuevo. Si utiliza las entradas de listas ACL por defecto, puede indicarle al sistema que lo haga automáticamente cada vez que cree un archivo. La entrada de la lista ACL por defecto tiene el siguiente aspecto: default:user:boss:rw- Las listas ACL por defecto sólo se pueden ubicar en un directorio y no tienen influencia en el tipo de acceso al directorio que se concede al usuario. La lista ACL por defecto se aplica a los archivos creados en el directorio. Si el archivo recién creado es un directorio, las entradas de listas ACL por defecto tienen dos efectos: • Se crean las entradas correspondientes de listas ACL que no sean por defecto, de modo que se concedan y denieguen los permisos de acceso deseados en relación con el directorio, exactamente igual que en el caso de cualquier archivo creado en el directorio. • Las propias entradas por defecto se copian, de modo que el directorio secundario nuevo tenga las mismas listas ACL por defecto que el directorio primario. Por ejemplo, si desea que determinados usuarios puedan leer los archivos creados en el directorio projectdir, puede crear las entradas por defecto apropiadas del modo siguiente. 6.4 Uso de las listas ACL del sistema de archivos JFS 113 $ setacl -m d:u:boss:r,d:u:jjones:r,d:u:dev:r projectdir $ getacl projectdir # file: projectdir # owner: jsmith # group: users user::rwuser:boss:rwuser:jjones:rwuser:jdoe:--group::rwgroup:dev:rwclass:rwother:--default:user:boss:r--default:user:jjones:r-default:group:dev:r-- Si el archivo recién creado es un directorio, se generan las mismas entradas de las listas ACL. Asimismo, las propias entradas por defecto se ubican también en la lista ACL. Con estas entradas en vigor, los archivos nuevos creados en el directorio projectdir tendrán una lista ACL como la mostrada anteriormente sin las entradas por defecto. 6.4.10 Modificación de las listas ACL del sistema de archivos JFS con el comando setacl Esta sección presenta más ejemplos del uso del comando setacl. 6.4.10.1 Uso de las opciones de modificación y eliminación El siguiente comando setacl utiliza la opción -m (modificar) para conceder acceso de sólo lectura al usuario boss para el archivo junk: $ setacl -m u:boss:r-- junk Para conceder permisos de acceso de lectura y escritura a cualquiera del grupo dev, utilice el parámetro (g:) del grupo con el comando setacl -m: $ setacl -m g:dev:rw- junk La opción -d elimina una entrada. Con -d, no se especifica ningún permiso en la entrada de lista ACL. Por ejemplo, el siguiente comando elimina la entrada correspondiente al grupo dev: $ setacl -d g:dev junk 6.4.10.2 Uso de la opción -f Si se trata de agregar o cambiar varias entradas, puede emplear un procedimiento distinto. Puede guardar la lista ACL en un archivo, modificar el archivo y, a continuación, aplicar esta nueva lista ACL al archivo. Por ejemplo, guarde la lista ACL en un archivo con este comando: $ getacl junk > junk.acl Modifique el archivo para que se muestre del siguiente modo: 114 Seguridad de los sistemas de archivos $ cat junk.acl # file: junk # owner: user1 # group: group1 user::rwuser:user2:rwuser:user3:rwuser:user4:--user:user5:r-group::rwgroup:group2:rwgroup:group3:r-group:group4:--group:group5:rwclass:rwother:r-- Aplique la lista ACL al archivo con el comando setacl -f: $ setacl -f junk.acl junk 6.4.10.3 Los permisos efectivos y el comando setacl -n En general, el comando setacl vuelve a calcular la entrada class para garantizar que los permisos de acceso concedidos en las entradas de la lista ACL adicionales se conceden. Si se especifica la opción -n, la entrada class no se vuelve a calcular, empleándose el valor existente. Esto entraña que algunos permisos de acceso concedidos por las entradas de la lista ACL no se concedan en la práctica. Por ejemplo, esta lista ACL se modifica con el comando setacl -n para agregar permisos de acceso de lectura y de ejecución al grupo dev del siguiente modo: $ getacl exfile # file: exfile # owner: jsmith # group: users user::rwgroup::rwclass:rwother:rw$ setacl -n -m group:dev:r-x exfile $ getacl exfile # file: exfile # owner: jsmith # group: users user::rwgroup::rwgroup:dev:r-x #effective r-class:rwother:rw- La entrada de la lista ACL correspondiente al grupo dev se agrega tal como se ha precisado, pero el permiso de acceso de ejecución no se concede en realidad. La 6.4 Uso de las listas ACL del sistema de archivos JFS 115 entrada class deniega el permiso de ejecución y la entrada class no se ha vuelto a calcular porque se especificó la opción -n. Si no se hubiera utilizado la opción -n, la entrada class se habría restablecido al valor class:rwx y el comentario effective no se mostraría. 6.5 Comparación de listas ACL de los sistemas de archivos JFS y HFS Las listas ACL del sistema de archivos JFS cumplen con la norma ACL POSIX. Las listas ACL del JFS se diferencian de las listas ACL del HFS tanto en cuanto al formato (interno y externo) como a las funciones. Las diferencias funcionales entre las listas ACL de los sistemas de archivos JFS y HFS son las siguientes: • Una lista ACL de un directorio del JFS puede tener entradas por defecto, que se aplican a los archivos creados posteriormente en dicho directorio. Las listas ACL del HFS no presentan dicha posibilidad. • Una lista ACL del HFS tiene un propietario que puede diferir del propietario del archivo que la lista ACL controla. Las listas ACL del JFS son propiedad del propietario del archivo correspondiente. • Una lista ACL del HFS puede presentar entradas distintas para un usuario concreto en grupos específicos. Por ejemplo, el usuario userx podría tener permisos de acceso de lectura y escritura mientras pertenezca al grupo users, pero sólo tiene permiso de acceso de lectura mientras pertenezca al grupo other. 6.5.1 Correlación entre los comandos y las funciones de los sistemas de archivos JFS y HFS La Tabla 6-5 enumera las páginas de manual para los comandos y funciones equivalentes de las listas ACL de los sistemas de archivos JFS y HFS. Tabla 6-5 Equivalencias de las listas ACL de los sistemas de archivos HFS y JFS 116 Nombre en HFS Equivalencia en JFS chacl(1) setacl(1) lsacl(1) getacl(1) getacl(2) acl(2) fgetacl(2) —ninguno— setacl(2) acl(2) fsetacl(2) —ninguno— acltostr(3C) —ninguno— chownacl(3C) —ninguno— Seguridad de los sistemas de archivos Tabla 6-5 Equivalencias de las listas ACL de los sistemas de archivos HFS y JFS (continuación) Nombre en HFS Equivalencia en JFS cpacl(3C) —ninguno— setaclentry(3C) —ninguno— strtoacl(3C) —ninguno— —ninguno— aclsort(3C) acl(5) aclv(5) 6.6 Listas ACL y sistemas de archivos NFS El Network File System (NFS - Sistema de archivos de red) no tiene la posibilidad de transmitir la información de las listas ACL sobre archivos remotos. Por lo tanto, el sistema de archivos NFS no puede ver las listas ACL en los archivos remotos. El comando ls -l no mostrará que existen listas ACL en un archivo remoto, pero el control de las listas ACL sobre los permisos de acceso sigue siendo efectivo. En estas circunstancias, las entradas de las páginas de manual individuales especifican el comportamiento de las diversas llamadas del sistema, las llamadas de las bibliotecas y los comandos. IMPORTANTE: Sea precavido cuando transfiera un archivo con entradas opcionales a través de una red, o cuando manipule un archivo remoto, porque el sistema de archivos NFS puede eliminar las entradas opcionales sin previo aviso. 6.7 Consideraciones sobre la seguridad para los archivos especiales de dispositivo /dev Los archivos especiales de dispositivo, que permiten que los programas funcionen independientemente de los dispositivos, controlan el acceso a todos los dispositivos del sistema. Estos archivos se facilitan con configuraciones de permisos de acceso que posibilitan un uso correcto y la máxima seguridad. Si instala cualquier otro archivo especial de dispositivo, consulte la página de manual de insf(1M) para obtener información sobre las configuraciones correctas de los permisos de acceso. Puesto que los archivos especiales de dispositivo pueden ser tan vulnerables a la adulteración como cualquier otro archivo, adopte las siguientes medidas de precaución: • Guarde todos los archivos especiales de dispositivo en el directorio /dev. • Proteja los archivos de memoria, /dev/mem y /dev/kmem, contra el acceso fortuito, ya que estos archivos contienen información confidencial del usuario. Por ejemplo, un programa que vigile la memoria en relación con una llamada al programa 6.6 Listas ACL y sistemas de archivos NFS 117 login podría copiar la contraseña escrita por un usuario a partir de los búferes de memoria del programa login. Las protecciones de acceso a los archivos deben definirse en: crw-r----crw-r----- • 1 bin 1 bin sys sys 3 0x000001 Jun 3 0x000000 Jun 9 9 2006 /dev/kmem 2006 /dev/mem Proteja todos los archivos especiales de disco: — Proteja contra escritura todos los archivos especiales de disco en el caso de los usuarios corrientes, a fin de impedir el daño accidental de los datos. Desactive el acceso de escritura en el caso de las clases group y other. — Proteja contra lectura los archivos especiales de disco para evitar la divulgación de su contenido. Desactive el acceso de lectura en el caso de la clase other. Las protecciones de acceso a los archivos deben definirse en: brw-r----crw-r----brw-r----crw-r----- 1 1 1 1 bin bin root root sys sys sys sys 31 188 64 64 0x002000 0x002000 0x000002 0x000002 Feb 18 Aug 3 Jun 11 Jun 11 2004 2004 2006 2006 /dev/dsk/c0t2d0 /dev/rdsk/c0t2d0 /dev/vg00/lvol2 /dev/vg00/rlvol2 • Cualquier usuario tendrá acceso de escritura a los puertos de terminal de los sistemas HP-UX, si el administrador permite que los usuarios se comuniquen mediante los programas write o talk. Permita que sólo el propietario tenga permiso de acceso de lectura. • No permita que los usuarios individuales posean más archivos especiales de dispositivo que el archivo de un dispositivo de terminal o una impresora personal. • Antes de poner en funcionamiento un disco u otro dispositivo susceptible de montaje cuyo origen desconozca, compruebe los archivos de los archivos especiales de dispositivo y los programas setuid. Consulte la Sección 6.9. 6.8 Protección de las particiones de disco y los volúmenes lógicos Un administrador Logical Volume Manager (LVM) es una herramienta de administración de discos común. LVM divide el disco más fácilmente que las particiones de disco y los volúmenes pueden abarcar varios discos. Los volúmenes son dispositivos lógicos que aparecen como una partición de disco física. Se puede utilizar un volumen como una partición de disco virtual para aplicaciones como la creación de un sistema de archivos o una base de datos. A continuación, se muestran algunas consideraciones sobre la seguridad en relación con las particiones de disco y los volúmenes lógicos: • 118 Asegúrese de que el acceso de lectura a los archivos especiales de dispositivo correspondientes a las particiones de disco y los volúmenes lógicos debe restringirse al usuario root y, tal vez, a una cuenta que se utilice para realizar copias de seguridad del disco. Consulte la Sección 6.7. Seguridad de los sistemas de archivos • Puesto que la propiedad y los permisos de acceso se almacenan en el inodo, cualquier persona con permiso de acceso de escritura a una partición montada podrá definir el número de identificación de usuario para cualquier archivo de dicha partición. El archivo está sujeto a cambios, al margen del propietario, prescindiendo de la llamada del sistema chmod() y de las demás comprobaciones de la seguridad. Si el archivo especial de dispositivo tiene acceso de escritura, un usuario puede abrir ese archivo y tener acceso a discos sin procesar. A continuación, el usuario puede modificar el sistema de archivos, leer archivos o modificar los permisos de acceso a los archivos y propietarios. Asegúrese de que los permisos de acceso a archivos prohíben el acceso al archivo especial de dispositivo y permiten sólo al usuario root tener acceso de lectura. • Si un programa, como por ejemplo una base de datos, necesita tener acceso directo a la partición, ésta debe reservarse para el uso exclusivo del programa. No monte una partición como un sistema de archivos si los usuarios pueden tener acceso directamente a ella. Si monta una partición como un sistema de archivos, los usuarios podrían modificar el sistema de archivos subyacente. Informe a los usuarios del programa de que la seguridad del archivo la imponen las configuraciones de permisos de acceso del mismo, en lugar del sistema de archivos HP-UX. 6.9 Pautas de seguridad para montar y desmontar sistemas de archivos El comando mount permite asociar sistemas de archivos extraíbles, discos o particiones de disco a un árbol de archivos existente. El comando mount utiliza un archivo denominado /etc/fstab, que contiene una lista de los sistemas de archivos disponibles y sus puntos de montaje correspondientes. Haga que el archivo /etc/fstab tenga permiso de acceso de escritura sólo para el usuario root y permiso de acceso de lectura para los demás usuarios. Para obtener más información sobre el montaje de sistemas de archivos, consulte la página de manual de fstab(4). Adopte las siguientes medidas de precaución al montar un sistema de archivos o disco: • Cree un directorio de punto de montaje (por ejemplo, /mnt) en que montar un sistema de archivos nuevo. No monte nunca un sistema de archivos en un directorio que ya contenga archivos, porque no se podrá tener acceso a estos archivos. El punto de montaje de un sistema de archivos montado adquiere los permisos y la propiedad del directorio raíz del sistema de archivos. • Defina permisos y entradas de listas de control de acceso en los nombres de ruta del disco para controlar el acceso a los discos. 6.9 Pautas de seguridad para montar y desmontar sistemas de archivos 119 • Utilice la opción -r del comando mount para montar el sistema de archivos con permiso de sólo lectura. Los sistemas de archivos físicamente protegidos contra escritura deben montarse de esta forma. • Cuando monte un sistema de archivos nuevo o ajeno, dé por sentado que el medio es inseguro. — Asegúrese de que la variable de entorno PATH no incluye «.» (el directorio actual); si no realiza esta comprobación, es posible que ejecute una versión de Caballo de Troya de ls o de otro comando parecido mientras examina el sistema de archivos nuevo. — Ejecute el comando fsck para comprobar que el sistema de archivos no está dañado desde el punto de vista técnico. Consulte la página de manual de fsck(1M). — Ejecute los comandos ncheck_hfs -s o ncheck_vxfs -s para detectar los programas setuid y setgid y archivos de dispositivo, e investigar los hallazgos sospechosos. La opción -s pretende descubrir las vulneraciones de la directiva de seguridad. Para obtener más información, consulte las páginas de manual de ncheck_hfs(1M) y ncheck_vxfs(1M). — Cree un directorio restringido al usuario root y defina los permisos en 700 (drwx------). # mkdir /securefile # chmod 700 /securefile — Monte el sistema de archivos ajeno con acceso de sólo lectura en esta ubicación: # mount -r /dev/disk1 /securefile — Compruebe todos los directorios en busca de programas con privilegios y verifique la identidad de todos los programas. — Vuelva a montar el sistema con permisos de lectura y escritura, y elimine los permisos setuid y setgid innecesarios de los archivos detectados en el paso anterior. Estas medidas de precaución revisten especial importancia si un usuario le pide que monte un sistema de archivos personal. No debe desmontar el sistema de archivos ni volverlo a montar en la ubicación prevista hasta que haya realizado las pruebas mencionadas. • Asegúrese de que desmonta todos los sistemas de archivos montados de un usuario cuya cuenta vaya a desactivar o eliminar. Para obtener información sobre los archivos montados en un entorno NFS, consulte la Sección 6.10.2. 120 Seguridad de los sistemas de archivos 6.10 Control de la seguridad de los archivos en una red Desde el punto de vista de la seguridad, los sistemas en red son más vulnerables que los sistemas autónomos. La conexión en red aumenta la capacidad de acceso al sistema, pero también incrementa el riesgo de que se vulnere la seguridad. Aunque no se puede controlar la seguridad a través de la red, sí se puede controlar la seguridad de cada nodo de la red para limitar el riesgo de intrusión sin perjuicio de la utilidad del sistema ni de la productividad del usuario. Asegúrese de que todos los programas de administración de la red son propiedad de una cuenta protegida específica de la red, por ejemplo, uucp, nso o daemon, antes que de root. 6.10.1 Comprobación de las configuraciones de los permisos en los archivos de control de red Los modos, los propietarios y los grupos de todos los archivos de sistema se configuran con cuidado. Compruebe regularmente estos archivos en busca de cualquier cambio. Tome nota y corrija cualquier cambio respecto a los valores originales. Preste especial atención a los archivos de control de red que se ubican en el directorio /etc. Estos archivos tienen un señalado interés para los que intentan tener acceso no autorizado, porque conceden acceso a la propia red. Los archivos de control de red no deben configurarse nunca con permiso de acceso de escritura para el público. Dichos archivos incluyen: exports hosts hosts.equiv inetd.conf netgroup networks protocols services La lista de sistemas de archivos que se exportan a clientes NFS Los sistemas host de red y sus direcciones Los sistemas host remotos con permisos de acceso equivalentes al sistema host local El archivo de configuración de Internet Lista de grupos accesibles en la red Los nombres de red y sus direcciones La base de datos de nombres de protocolos La base de datos de nombres de servicios 6.10.2 Archivos montados en un entorno NFS Un Network File System (NFS - Sistema de archivos de red) ofrece las siguientes ventajas: • Ahorra espacio en disco. • Mantiene la coherencia en el uso de los archivos. • Ofrece un entorno de usuario coordinado y sencillo. NFS racionaliza la distribución de archivos entre los sistemas servidor y cliente al controlar el acceso a través del archivo /etc/exports. Las entradas del archivo /etc/exports 6.10 Control de la seguridad de los archivos en una red 121 brindan permiso para montar un sistema de archivos existente en el servidor en cualquier equipo cliente o en una lista especificada de equipos. Cuando se incluye un sistema de archivos en /etc/exports, la información está disponible en potencia para cualquier persona que pueda llevar a cabo un montaje mediante NFS. Por lo tanto, el usuario de un cliente NFS puede obtener acceso a un sistema de archivos del servidor sin tener que iniciar una sesión en el sistema servidor. Consulte la página de manual de exports(4), para ampliar la información sobre el control del acceso a los sistemas de archivos exportados, y la Sección 6.10.2.3, para obtener las pautas de seguridad. 6.10.2.1 Vulnerabilidad de los servidores Mantenga la seguridad de los servidores definiendo permisos de acceso restrictivos en el archivo /etc/exports. Los privilegios de usuario root no se mantienen en el sistema NFS. Por lo tanto, tener privilegios de usuario root en un sistema cliente no comporta ningún acceso especial en el servidor. El servidor lleva a cabo remotamente la misma comprobación de permisos para el cliente que realiza localmente para sus propios usuarios. El lado del servidor controla el acceso a los archivos del servidor por parte del cliente; para ello, compara el número de identificación de usuario y la identificación de grupo del cliente, que recibe a través de la red, con el número de identificación de usuario y la identificación de grupo del archivo del servidor. La comprobación se produce en el interior del kernel. Un usuario que tenga privilegios en un cliente NFS puede aprovechar dichos privilegios para obtener acceso ilimitado a un servidor NFS. NOTA: No exporte nunca ningún sistema de archivos a un nodo en el que se concedan privilegios con más indulgencia que en la directiva de su propio nodo. 6.10.2.2 Vulnerabilidad de los clientes En revisiones anteriores del sistema de archivos NFS para estaciones de trabajo, el inodo /dev tenía que ubicarse en el disco de cliente. En la actualidad, el NFS permite que exista en el lado del servidor el inodo /dev que contenga los números «major» y «minor» de un archivo especial de dispositivo montado en un cliente. Esto conlleva la posibilidad de que alguien cree un Caballo de Troya que anule los permisos definidos en el archivo especial de dispositivo montado del cliente, al obtener acceso al archivo especial de dispositivo a través del archivo y el número de inodo hallado en el lado del servidor. Aunque un intruso del sistema carezca de permiso para crear un archivo de dispositivo en el lado del cliente, puede crear un archivo especial de dispositivo, por ejemplo, /dev/kmem, empleando los permisos de usuario root en el lado del servidor. El nuevo archivo /dev se crea con los mismos números «major» y «minor» que el dispositivo de destino del cliente, pero con los siguientes permisos: crw-rw-rw122 Seguridad de los sistemas de archivos A continuación, el intruso puede obtener acceso al cliente, iniciar una sesión como si fuera un usuario normal y, mediante el sistema NFS, abrir el archivo especial de dispositivo recién creado en el servidor y utilizarlo con fines tortuosos. 6.10.2.3 Cómo proteger los archivos montados con el sistema NFS A continuación, se ofrecen recomendaciones para proteger los archivos montados con el sistema NFS: • Si es posible, asegúrese de que los sistemas cliente y servidor los administra la misma persona. • Mantenga la uniformidad de los números de identificación de usuario y las identificaciones de grupo para los sistemas servidor y cliente. • Compruebe rutinariamente los archivos /dev en los sistemas de archivos exportados desde el servidor. • Restrinja el acceso de escritura a los archivos de cliente /etc/passwd. • A efectos de ejercer el control más estricto, audite todos los sistemas host accesibles a través de la red. • Baraje la posibilidad de utilizar el comando fstab nosuid para proteger el sistema contra los programas setuid que se pueden ejecutar como usuario root y dañar el sistema. La opción por defecto del comando mount es suid, que permite a los programas montados con setuid ejecutarse con los permisos de sus propietarios, al margen de quién los inicia. Por lo tanto, si el propietario de un programa con permiso de setuid es el usuario root, se ejecutará con los permisos de usuario root, al margen de quién lo inicia. 6.10 Control de la seguridad de los archivos en una red 123 124 7 Compartimentos Este capítulo describe la característica de compartimentos de HP-UX 11i v3. Este capítulo aborda los siguientes temas: • Descripción general (Sección 7.1) • Planificación de la estructura de compartimentos (Sección 7.2) • Activación de compartimentos (Sección 7.3) • Modificación de la configuración de compartimentos (Sección 7.4) • Componentes de los compartimentos (Sección 7.5) • Sintaxis y reglas de compartimentos (Sección 7.6) • Configuración de aplicaciones en compartimentos (Sección 7.7) • Solución de problemas de los compartimentos (Sección 7.8) • Uso del modo de detección para generar una configuración inicial de compartimentos (Sección 7.9) • Compartimentos de los clústeres HP Serviceguard (Sección 7.10) 7.1 Descripción general Los compartimentos constituyen un método para aislar entre sí los componentes de un sistema. Cuando están configurados correctamente, pueden ser un método eficaz para proteger el sistema HP-UX y los datos que éste contiene. Los compartimentos le permiten aislar procesos o sujetos entre sí y también de recursos u objetos. Conceptualmente, cada proceso pertenece a un compartimento y los recursos se manejan de una de dos maneras. 1. El recurso está etiquetado con el compartimento del proceso de creación. Es así cómo los recursos transitorios, por ejemplo, los puntos finales de comunicación y la memoria compartida, se asignan a un compartimento. 2. Los recursos se pueden asociar a una lista de acceso que especifica cómo tienen acceso a ellos los procesos de compartimentos diferentes, para recursos persistentes, como archivos y directorios. Es decir, los procesos pueden tener acceso a recursos o comunicarse con procesos que pertenecen a un compartimento distinto sólo si hay una regla entre dichos compartimentos. Los procesos que pertenecen al mismo compartimento pueden comunicarse entre sí y tener acceso a recursos de ese compartimento sin que haya una regla. 7.1 Descripción general 125 Los compartimentos separan sujetos de objetos. Esto permite una agrupación virtual de los sujetos y objetos relacionados. Puede configurar el sistema para que, en caso de que se ponga en peligro un servicio que se ejecuta en un compartimento, esto no afecte a los servicios que se ejecutan en otros compartimentos. Esto limita cualquier daño sólo al compartimento afectado. 7.1.1 Arquitectura de compartimentos Los compartimentos aíslan un proceso y sus procesos secundarios dentro de un sistema. La Figura 7-1 muestra un proceso primario que crea una serie de procesos de identificadores que necesitan obtener acceso a varias partes del sistema. Los compartimentos del sistema están configurados para que los procesos puedan tener acceso a los recursos necesarios. Figura 7-1 Arquitectura de compartimentos Compartimento proceso relación de procesos archivos y/o directorios servidor_primario servidor_secundario cmpt lan 1 acceso a archivos red proceso primario IPC señales grabadora Todo identificador / identificador /var/opt/server logs identificador ra lectu ura rit a esc ur , rit ura t c c s le ,e ra u ct le Red spool 126 Compartimentos En la Figura 7-1, el proceso primario está configurado en un compartimento: compartimento A. Como parte de su funcionamiento, el proceso primario crea una serie de procesos de identificadores en un compartimento diferente: compartimento B. Los procesos de identificadores heredan la configuración del compartimento del proceso primario. La tarjeta de red que conecta el sistema con la LAN se ha configurado en otro compartimento: compartimento C. El sistema de archivos se ha configurado para franquear el acceso al compartimento A, pero sólo permite un acceso parcial al compartimento B. La comunicación entre los componentes del sistema en sus compartimentos separados se ha configurado del modo siguiente: • Todos los procesos de identificadores se han configurado para comunicarse con la red. • El registro puede obtener acceso al sistema de archivos. • Los procesos de identificadores tienen acceso de lectura y lectura/escritura a partes del sistema de archivos. • Los procesos de identificadores pueden comunicarse con el proceso primario y con el registro utilizando la comunicación entre procesos (IPC) y señales. • La red está aislada del registro y del proceso primario. Esta configuración del compartimento ofrece seguridad para el sistema de archivos y el registro. Los dos están aislados por sus compartimentos. Aunque los procesos de identificadores pueden comunicarse con la red, el registro y el proceso primario no pueden tener acceso a la misma. 7.1.2 Configuración de compartimentos por defecto Al habilitar compartimentos, se crea un compartimento por defecto que se llama INIT. Al iniciar el sistema, el proceso init pertenece a este compartimento. El compartimento INIT se ha definido para obtener acceso a todos los compartimentos y no se ha definido en un archivo de reglas de compartimentos. IMPORTANTE: Si redefine el compartimento INIT al crear reglas explícitas en un archivo de reglas, todas las características especiales del compartimento se pierden y no se pueden restaurar sin reiniciar el sistema. 7.2 Planificación de la estructura de compartimentos Planifique la estructura de compartimentos antes de empezar a crear las reglas de compartimentos. Para planificar la estructura de compartimentos, responda a las siguientes preguntas: • ¿Desea aislar diferentes grupos de usuarios que tienen acceso a este sistema? Por ejemplo, ¿utilizan este sistema el departamento de contabilidad y el departamento de recursos humanos, y deben estos grupos de usuarios mantenerse separados? 7.2 Planificación de la estructura de compartimentos 127 • ¿Desea aislar una interface de red en este sistema, que establece comunicación fuera del servidor de seguridad, del resto del sistema, que establece comunicación sólo dentro del servidor de seguridad? • ¿Incluye la directiva de seguridad requisitos o problemas que se pueden solucionar con el uso de estos compartimentos? • ¿Especifica o recomienda la directiva de seguridad una configuración de reglas de compartimentos específica? Cuando haya respondido a estas preguntas, utilice las respuestas para determinar cómo asignar partes del sistema a compartimentos específicos. Considere las siguientes recomendaciones al planificar la configuración de los compartimentos: • Coloque los archivos de configuración de compartimentos en el directorio /etc/ cmpt. Puede utilizar la directiva #include para crear archivos de configuración de compartimentos en cualquier parte del sistema. No obstante, HP recomienda evitar utilizar esta opción. En su lugar, mantenga los archivos de configuración de compartimentos juntos y localizables fácilmente. • Cree una configuración de compartimentos separada para cada componente del sistema. A no ser que se haya definido una dependencia de software específica entre dos componentes, no combine reglas de componentes diferentes. Un compartimento de componentes no contiene reglas que hacen referencia a compartimentos de otro componente. Si debe eliminar un componente, puede modificar la configuración de compartimentos con mayor facilidad si las configuraciones de compartimentos se mantienen separadas. • Cree un solo archivo de configuración de compartimentos para cada componente del software. Esto le permite eliminar la configuración de compartimentos con mayor facilidad si elimina el software del sistema. Asimismo, puede buscar fácilmente todas las reglas del componente del software. • Algunos productos de software se suministran con reglas de compartimentos ya configuradas. Evite modificar estas reglas. Antes de realizar modificaciones en las configuraciones de compartimentos suministradas, asegúrese de comprender la configuración existente. Lea la documentación del producto de software y examine detenidamente la configuración existente. 128 Compartimentos ATENCIÓN: No redefina el compartimento INIT existente. Si trata de redefinir o cambiar el compartimiento INIT, todas las definiciones generadas automáticamente se destruirán y los compartimientos no funcionarán correctamente. 7.3 Activación de compartimentos Para activar las reglas de compartimentos en el sistema, dé los pasos siguientes: 1. Planifique las reglas de compartimentos. Para obtener más información, consulte la Sección 7.2. SUGERENCIA: HP recomienda planificar con cuidado la configuración de las reglas de compartimentos. Una vez modificada y puesta en ejecución la configuración en un sistema de producción, es difícil cambiarla. Al cambiar una configuración de compartimientos, debe realizar cambios en las herramientas, archivos de comandos y procedimientos del usuario. 2. 3. Cree reglas de compartimentos. Consulte la Sección 7.6 para ver las instrucciones sobre cómo completar este paso y para obtener una descripción completa de la sintaxis de las reglas de compartimentos. (Opcional) Obtenga una vista preliminar de las reglas de compartimentos escribiendo el siguiente comando: # setrules -p La opción -p analiza la lista de reglas configuradas e informa de cualquier discrepancia de sintaxis y semántica. HP le recomienda dar este paso antes de habilitar reglas de compartimentos en el sistema. 4. 5. (Opcional) Realice copias de seguridad de los archivos de configuración de compartimentos. Coloque estos archivos fuera del directorio /etc/cmpt u omita el sufijo.rules. Esta acción le permite revertir fácilmente al punto de partida si se produce un error de edición. Habilite la característica de compartimentos escribiendo el siguiente comando: # cmpt_tune -e 6. Reinicie el sistema. Este paso es obligatorio. SUGERENCIA: Guarde los archivos de copia de seguridad: esto facilita la reversión a una configuración anterior. 7.3 Activación de compartimentos 129 7.4 Modificación de la configuración de compartimentos Puede crear compartimentos nuevos y modificar los existentes sin reiniciar el sistema. Si habilita o deshabilita la característica de compartimentos o elimina por completo alguno, deberá reiniciar el sistema. No obstante, si elimina todas las reglas asociadas a un compartimento y todas las referencias al mismo, puede dejar el compartimento en el sistema hasta el siguiente reinicio. Consulte la Sección 7.4.2 para obtener más información sobre las consecuencias de cambiar el nombre de un compartimento. Puede agregar nuevas reglas de compartimentos, eliminar reglas innecesarias y modificar las existentes. También puede cambiar los nombres de compartimentos existentes. Las siguientes secciones describen cómo modificar la configuración de los compartimentos. 7.4.1 Modificación de las reglas de compartimentos 1. 2. (Opcional) Realice copias de seguridad temporales de los archivos de configuración que prevea modificar. Coloque estos archivos fuera del directorio /etc/cmpt u omita el sufijo.rules. Esta acción le permite revertir fácilmente al punto de partida si se produce un error de edición. Utilice el siguiente comando para examinar las reglas de compartimentos actuales: # getrules 3. 4. Cree o modifique las reglas de compartimentos. Consulte la Sección 7.6 para ver las instrucciones sobre cómo completar este paso y para obtener una descripción completa de la sintaxis de las reglas de compartimentos. (Opcional) Obtenga una vista preliminar de las reglas de compartimentos escribiendo el siguiente comando: # setrules -p La opción -p analiza la lista de reglas configuradas e informa de cualquier discrepancia de sintaxis y semántica. HP le recomienda dar este paso antes de habilitar reglas de compartimentos en el sistema. 5. 6. (Opcional) Realice copias de seguridad de los archivos de configuración de compartimentos. Ejecute el comando setrules para cargar las reglas configuradas: # setrules 130 Compartimentos 7.4.2 Modificación de los nombres de compartimentos Puede cambiar los nombres de compartimentos. No obstante, el cambio de nombre de un compartimento puede afectar a las aplicaciones que ya están configuradas con los nombres de compartimentos existentes. Si cambia el nombre de un compartimento, deberá reconfigurar también las aplicaciones configuradas en ese compartimento. NOTA: Si cambia el nombre de un compartimento, fundamentalmente lo que hace es crear un nuevo compartimento y eliminar el compartimento con el nombre antiguo. Deberá cambiar todas las referencias para ver el compartimento nuevo. El compartimento antiguo sigue existiendo en el sistema hasta que se reinicie. 7.5 Componentes de los compartimentos La característica de compartimentos consta de un conjunto de comandos y archivos de configuración que se utilizan para configurar y administrar compartimentos. Se incluyen páginas de manual para ayudarle a utilizar las características de compartimentos. Estos componentes se enumeran en las siguientes secciones: 7.5.1 Archivos de configuración de compartimentos La Tabla 7-1 describe brevemente los archivos que se utilizan con los componentes de compartimentos. Tabla 7-1 Archivos de configuración de compartimentos Archivo de configuración Descripción /etc/cmpt El directorio en el que se ubican los archivos de reglas de compartimentos. /etc/cmpt/*.rules El archivo que contiene las reglas de compartimentos configuradas para el sistema. /etc/cmpt/hardlinks/ hardlinks.config El archivo que contiene los puntos de montaje válidos que se van a analizar para comprobar la coherencia de las reglas de compartimentos de archivos con varios enlaces permanentes (hardlinks) señalándolos. 7.5.2 Comandos de compartimentos La Tabla 7-2 contiene los comandos utilizados para administrar los compartimentos. Tabla 7-2 Comandos de compartimentos Comando Descripción cmpt_tune Consulta, habilita y deshabilita la característica de compartimentos. setfilexsec Define los atributos de seguridad de los archivos binarios, incluido el atributo de compartimentos. 7.5 Componentes de los compartimentos 131 Tabla 7-2 Comandos de compartimentos (continuación) Comando Descripción getfilexsec Muestra los atributos de seguridad asociados a los archivos ejecutables binarios, incluido el atributo de compartimentos. getprocxsec Muestra los atributos de seguridad de los procesos, incluido el atributo de compartimentos. getrules Muestra las reglas de compartimentos actualmente activas en el kernel. setrules Activa reglas nuevas o modificadas en el kernel. La opción -p permite mostrar las reglas modificadas para revisar sin transmitirlas al kernel. vhardlinks Comprueba la coherencia de las reglas de compartimentos de archivos con varios enlaces físicos para garantizar que no existen conflictos de reglas para obtener acceso. 7.5.3 Páginas de manual de compartimentos La Tabla 7-3 contiene las páginas de manual asociadas a los compartimentos. Tabla 7-3 Páginas de manual de compartimentos 132 Página de manual Descripción compartments(4) Describe la sintaxis de la regla de compartimentos. compartments(5) Ofrece una descripción general de la funcionalidad de compartimentos y describe el uso de las reglas de compartimentos. cmpt_tune(1M) Describe la funcionalidad y la sintaxis de cmpt_tune. setfilexsec(1M) Describe la funcionalidad y la sintaxis de setfilexsec. getfilexsec(1M) Describe la funcionalidad y la sintaxis de getfilexsec. getprocxsec(1M) Describe la funcionalidad y la sintaxis de getprocxsec. getrules(1M) Describe la funcionalidad y la sintaxis de getrules. setrules(1M) Describe la funcionalidad y la sintaxis de setrules. vhardlinks(1M) Describe la funcionalidad y la sintaxis de vhardlinks. Compartimentos 7.6 Sintaxis y reglas de compartimentos Un compartimento consta de un nombre y un conjunto de reglas. Esta sección describe los cuatro tipos de reglas de compartimentos: • Reglas de sistema de archivos • Reglas IPC • Reglas de red • Reglas varias Agregue reglas al archivo de reglas que se crea en el directorio /etc/cmpt. Puede modificar este archivo utilizando vi o un editor de texto parecido. El archivo de reglas debe tener una extensión .rules. Para obtener información adicional, consulte la página de manual de compartments(5). 7.6.1 Definición de compartimentos Defina compartimentos al configurar un nombre para cada compartimento y asociar una o varias reglas de compartimentos al nombre de compartimento. Puede especificar reglas en cualquier orden. La sintaxis de una definición de compartimento es la siguiente: [sealed] [discover] compartment nombre_ compartimento_nuevo { reglas } donde: sealed (Opcional) Un proceso de este compartimento no puede obtener privilegios ni cambiar compartimentos al llamar a execve(). discover (Opcional) Detecta y agrega reglas automáticamente para que las infracciones de compartimentos se omitan. Es una característica de desarrollo para determinar las reglas necesarias y no debe utilizarse en un sistema de producción. Para obtener más información sobre esta palabra clave, consulte la Sección 7.9. compartment Designa que la regla es una definición de compartimento. nombre_ compartimento_nuevo La etiqueta asociada al compartimento nuevo. Esta etiqueta distingue entre mayúsculas y minúsculas. Por ejemplo, compartmenta y CompartmentA son compartimentos diferentes. {} Adjunta las reglas de este compartimento. Por ejemplo: 7.6 Sintaxis y reglas de compartimentos 133 sealed compartment server_children { /* Denegar todo el acceso a cualquier objeto de sistema de archivos ... */ permission none / } NOTA: El nombre de compartimento INIT no distingue entre mayúsculas y minúsculas. El sistema trata a INIT, init e Init como si fueran el mismo compartimento. Las especificaciones de compartimento se preprocesan con cpp() antes de comenzar el análisis. Éste es el motivo por el que se utilizan directivas cpp() como #include, #define, #ifdef y comentarios de estilo de C para organizar y documentar los archivos de reglas. 7.6.2 Reglas de sistema de archivos Las reglas de sistema de archivos rigen el acceso por los procesos a los archivos y directorios en el sistema. Las reglas de sistema de archivos se heredan de un directorio primario en todos los subdirectorios y archivos del directorio primario, a menos que una regla explícita anule la herencia. Por defecto, si no se han especificado permisos, se conceden todos los permisos para un objeto del sistema de archivos. La sintaxis de las reglas de sistema de archivos es como sigue: (permission|perm) lista_permisos objeto_archivo donde: permission o perm lista_permisos 134 Compartimentos Define los permisos para un archivo o un directorio. Los tipos de permisos que puede aplicar a un archivo o directorio son: • none: deniega todos los permisos a un archivo o directorio. • read: controla el acceso de lectura al objeto. Si el objeto es un archivo, la lectura y ejecución del archivo están controladas. Si el objeto es un directorio, la búsqueda y listado del directorio están controlados. Asimismo, debido a la herencia, la lectura de todos los archivos del directorio está controlada. Los archivos deben tener acceso de lectura para que se puedan abrir para ejecutar. • write: controla el acceso de escritura al objeto. Si el objeto es un archivo, la escritura en el archivo está controlada. Si el objeto es un directorio, debido a la herencia, la escritura de todos los archivos del directorio está controlada. objeto_archivo • create: controla la capacidad para crear objetos. Esto se aplica sólo a los objetos del directorio. Todos los directorios heredan esto en el directorio especificado. • unlink: controla la capacidad para eliminar objetos. Esto se aplica sólo a los objetos del directorio. Todos los directorios heredan esto en el directorio especificado. • nsearch: controla la capacidad de buscar un elemento si el objeto_archivo es un directorio. Este atributo no lo heredan todos los subdirectorios. El nombre de ruta completo del archivo o directorio. Por ejemplo: /* denegar todos los permisos salvo lectura a todo el sistema */ perm read / /* excepto para este directorio */ perm read,write,create,unlink /var/opt/server /* sólo leer y escribr archivos de registro, no crearlos */ perm read,write /var/opt/server/logs NOTA: Para conceder un permiso en relación con un objeto del sistema de archivos, el compartimento debe tener un mínimo de permisos de lectura en cada directorio que esté por encima de ese objeto. Por ejemplo, para conceder permisos de lectura y escritura en /var/opt/tmp/file1, debe conceder permisos de lectura en /var/opt/tmp, /var/opt, /var y /. 7.6.3 Reglas IPC Las reglas de comunicación entre procesos (IPC) rigen la forma en que los procesos utilizan entre compartimentos los métodos de comunicación entre procesos. Los métodos de comunicación IPC incluyen la comunicación directa proceso a proceso o el acceso compartido a un objeto IPC. Cuando un objeto está asociado a un proceso, el objeto existe en el mismo compartimento como el proceso que lo creó. Se definen reglas de compartimentos para describir la relación entre el proceso que tiene acceso al objeto y el objeto al que se tiene acceso. Cuando la regla describe dos procesos que se comunican entre sí, trate el segundo proceso como un objeto. El comportamiento por defecto para los objetos IPC consiste en que todas las operaciones entre compartimentos diferentes están prohibidas a menos que una regla lo permita explícitamente. Hay dos tipos de reglas IPC. La sintaxis del primer tipo de regla es la siguiente: (grant|access) (pty|fifo|uxsock|ipc) nombre_compartimento donde: 7.6 Sintaxis y reglas de compartimentos 135 Acceso Método nombre_compartimento Especifica si la regla está centrada en el objeto o en el sujeto. Consta de las siguientes opciones: • grant: especifica una regla centrada en el objeto. Esta regla permite a los procesos del compartimento nombre_compartimento tener acceso al mecanismo IPC especificado en el compartimento actual. • access: especifica una regla centrada en el sujeto. Esta regla permite a los procesos del compartimento actual tener acceso al mecanismo IPC especificado en el compartimento nombre_compartimento. Especifica el método de comunicación al que se aplica esta regla. Consta de las siguientes opciones: • pty: especifica que la regla se aplica a pty utilizada en comunicación entre procesos. • fifo: especifica que la regla se aplica al principio de primero en entrar primero en salir (FIFO). • uxsock: especifica que la regla se aplica a zócalos de dominio UNIX. • ipc: especifica que la regla se aplica a objetos IPC SYSV y POSIX, por ejemplo, memoria compartida, semáforos y colas de mensajes. El nombre del otro compartimento en el que los procesos de este compartimento se pueden comunicar. Por ejemplo: /* dejar que el secundario tenga acceso al dominio UNIX */ /* zócalos creados por el compartimento primario */ grant uxsock server_children El segundo tipo de regla IPC rige el acceso del proceso. La sintaxis de este tipo de regla es la siguiente: (send|receive) signal nombre_compartimento donde: Dirección Especifica si los procesos del compartimento actual tienen acceso para ver y modificar el comportamiento del proceso desde otro compartimento especificado. Consta de las siguientes opciones: • 136 Compartimentos send: especifica una regla centrada en el sujeto. Permite a los procesos del compartimento actual enviar señales y ver los datos de proceso en el compartimento nombre_compartimento. • signal nombre_compartimento receive: especifica una regla centrada en el objeto. Permite a los procesos del compartimento nombre_compartimento enviar señales y ver los datos de proceso en el compartimento actual. Especifica que esta regla se aplica a la visibilidad del proceso y las señales. El nombre del otro compartimento al que los procesos del compartimento actual pueden tener acceso para obtener información de los procesos o desde el que ser vistos. Por ejemplo: /* dejar que el primario envíe señales al secundario */ send signal server_children 7.6.4 Reglas de red Las reglas de red rigen el acceso a las interfaces de red. Las reglas de red también rigen la comunicación entre los procesos que utilizan la comunicación del dominio INET (zócalos y flujos TCP/IP). El comportamiento por defecto es denegar el acceso a la red. Los puntos finales de la red se tratan como objetos etiquetados con el compartimento del proceso que los crea. No obstante, un proceso puede crear un punto final de red y, a continuación, transmitirlo a otro proceso que se puede ejecutar en otro compartimento. Las comprobaciones de obtención de acceso se realizan en el compartimento que contiene el punto final cuando éste se creó y no en el compartimento actual. Asimismo, el punto final transmite la configuración del compartimento a los puntos finales de aceptación cuando se reciben conexiones nuevas. Los puntos finales del dominio INET se utilizan frecuentemente para comunicaciones entre procesos. Asegúrese de configurar los compartimentos en consecuencia. La sintaxis de una regla de red es la siguiente: (grant|deny) (server|client|bidir) (tcp|udp|raw [nº_protocolo] ) [port nº_puerto] [peer[portpuerto]] nombre_compartimento donde: Acceso Concede o deniega el acceso de compartimento al tráfico de la red en el compartimento especificado. Consta de las siguientes opciones: • grant • deny 7.6 Sintaxis y reglas de compartimentos 137 Dirección Protocolo nº_protocolo port puerto peer nombre_compartimento Especifica la dirección a la que se aplica la regla. Consta de las siguientes opciones: • server: esta regla se aplica sólo a las solicitudes entrantes. Para TCP, esta regla sólo controla las conexiones entrantes. Para UDP y RAW, esta regla se aplica a todos los paquetes entrantes. • client: esta regla se aplica sólo a las solicitudes salientes. Para TCP, esta regla sólo controla las iniciaciones de conexión. Para UDP y RAW, esta regla se aplica a todos los paquetes salientes. • bidir: esta regla se aplica a las solicitudes entrantes y salientes. Para TCP, esta regla controla las conexiones que inicia y recibe el punto final. Para UDP y RAW, esta regla se aplica a todos los paquetes que atraviesan el punto final. Especifica el protocolo de red que se aplica a esta regla. Consta de las siguientes opciones: • tcp: esta regla se aplica al protocolo TCP. • udp: esta regla se aplica al protocolo UDP. • raw: esta regla se aplica a cualquier otro protocolo en el dominio INET. El número de protocolo especificado para esta regla. La opción nº_protocolo es pertinente sólo para la especificación raw. (Opcional) Especifica que esta regla se aplica a un puerto específico. Identifica el puerto especificado en esta regla. (Opcional) La información del puerto se aplica al punto final homólogo implicado en la comunicación para esta regla. El nombre de compartimento asociado al punto final homólogo o la interface a los que se aplica esta regla. Por ejemplo: /* permitir todas las conexiones TCP entrantes (cualquier puerto) desde interfaces con la etiqueta lancmpt1 */ grant server tcp lancmpt1 /* permitir consultas de clientes de DNS (TCP y UDP) a través de la interface con la etiqueta lancmpt1 */ 138 Compartimentos grant client tcp port 53 lancmpt1 grant bidir udp port 53 lancmpt1 /* permitir sólo conexiones telnet salientes a través de la interface con la etiqueta ifacelan0 */ grant client tcp peer port 23 ifacelan0 /* permitir todo el tráfico TCP excepto telnet entrante a través de la interface con la etiqueta ifacelan0 */ /* las siguientes dos líneas se pueden especificar en cualquier orden */ grant bidir tcp ifacelan0 deny server tcp port 23 ifacelan0 /* permitir el tráfico de servidor web entrante a través de la interface lan1cmpt */ grant server tcp port 80 lan1cmpt Para obtener más información sobre las reglas de red, consulte la página de manual de compartments(4). 7.6.5 Reglas varias Estas reglas no se ajustan claramente a ninguna otra categoría de reglas. Reglas de interface de red Una regla de interface de red especifica el compartimento al que pertenece una interface. Una interface de red que no está en un compartimento no puede ponerse en línea. NOTA: Para definir directivas de seguridad más estrictas, configure las interfaces de red en compartimentos separados de los asignados a los procesos. Defina en consonancia reglas para la obtención de acceso a la red para cada compartimento. Los compartimentos iguales obtienen siempre acceso pleno entre sí. La sintaxis de la regla de interface de red es la siguiente: compartment nombre_compartimento { interface interface_o_ip[,interface_o_ip][...] } donde: interface Especifica que ésta es una definición de interface. interface_o_ip[,interface_o_ip][...] Una lista separada por comas de nombres de interfaces, direcciones IP o intervalos de direcciones IP. Las direcciones o intervalos IP se pueden especificar como direcciones IPv4 o direcciones IPv6 con una máscara opcional. 7.6 Sintaxis y reglas de compartimentos 139 Por ejemplo: compartment iface0 { /* Definir el compartimento para la interface de red lan0 */ interface lan0 /* Todas las direcciones del intervalo 192.168.0.0-192.168.0.255 */ interface 192.160.0.0/24 } compartment other_ifaces { /* Definir el compartimento para dos de las otras interfaces de red */ interface lan1,lan5 Reglas para la limitación de los privilegios Una regla para la limitación de los privilegios controla la herencia de privilegios. No se puede obtener un privilegio que se nombre en una regla para la limitación de los privilegios al llamar al comando execve(2). La sintaxis de las reglas para la limitación de los privilegios es la siguiente: disallowed privileges privilegio[,privilegio[...]] donde: disallowed privileges Especifica que se trata de una regla para la limitación de los privilegios. privilegio[,privilegio[...]] Una lista de privilegios separados por comas. Puede utilizar las siguientes palabras clave adicionales: • all: rechaza todos los privilegios • none: permite todos los privilegios • !: denota «excepto» Por ejemplo: /* Rechazar todos los privilegios excepto mount. */ disallowed privileges all,!mount /* Rechazar sólo mount. */ disallowed privileges none,mount Si no se han especificado reglas para la limitación de los privilegios en relación con un compartimento, la limitación por defecto es basicpolicy,mknod para cada compartimento excepto el compartimento INIT. La limitación de los privilegios por defecto del compartimento INIT es none. 7.6.6 Archivo de reglas de ejemplo Un archivo de reglas de ejemplo se ubica en /etc/cmpt/examples/ sendmail.example. 140 Compartimentos 7.7 Configuración de aplicaciones en compartimentos Puede configurar una aplicación para ejecutarla en un compartimento concreto. Utilice el comando setfilexsec para configurar el atributo de compartimento de un archivo binario. Por ejemplo, para configurar la aplicación apple en el compartimento fruit, escriba el siguiente comando: # setfilexsec -c fruit apple También puede utilizar HP-UX RBAC para configurar una aplicación a fin de que se ejecute en un compartimento. Consulte la Sección 9.5.5. 7.8 Solución de problemas de los compartimentos Si algo no funciona en el sistema y sospecha que el problema se produce debido a la estructura de compartimentos, puede comprobar las reglas de compartimentos del modo siguiente. Problema 1: El acceso no se controla según las reglas de compartimentos I configuradas. Solución: es posible que las reglas no estén definidas en el kernel. Para comprobar que las reglas están definidas en el kernel, dé los siguientes pasos: 1. Utilice el siguiente comando para mostrar la lista de reglas de compartimentos válidas en el kernel. # getrules 2. Utilice el siguiente comando para mostrar la lista de todas las reglas configuradas en el sistema, incluidas las reglas que no se han cargado en el kernel. # setrules -p 3. Compare la salida de los dos comandos. Si son iguales, todas las reglas se han cargado en el kernel. En caso contrario, tendrá que cargar reglas en el kernel. 4. El siguiente comando permite cargar reglas en el kernel: # setrules Problema 3: El acceso a un archivo no funciona correctamente. Solución: Si varios enlaces físicos señalan a este archivo, la configuración de las reglas de compartimentos puede contener reglas no coherentes para obtener acceso al archivo. Para comprobar las incoherencias, dé los siguientes pasos: 1. Ejecute el siguiente comando: # vhardlinks Si la salida muestra una incoherencia, continúe con el paso 2. 2. Modifique las reglas para eliminar la incoherencia. Siga el procedimiento descrito en la Sección 7.4. 7.7 Configuración de aplicaciones en compartimentos 141 Problema 4: Las reglas del servidor de red no aparecen en la salida de getrules. Solución: Debido al modo en que se administran las reglas internamente, las reglas del servidor de red para un compartimento dado se pueden enumerar en la salida del compartimento de destino del comando getrules. Por ejemplo: /* regla de compartimento telnet para permitir solicitudes telnet entrantes a través del compartimendo con la etiqueta ifacelan0 */ grant server tcp port 23 ifacelan0 Si se ha especificado esta regla, aparece en la salida del compartimento ifacelan0 del comando getrules. ACCESS Grant client PROTOCOL tcp SRCPORT 0 DESPORT 23 DESCMPT telnet 7.9 Uso del modo de detección para generar una configuración inicial de compartimentos Una definición de compartimentos puede tener la etiqueta con la palabra clave discover. Consulte la Sección 7.6.1. La palabra clave discover da instrucciones al sistema para que detecte todas las reglas necesarias que hacen que la aplicación funcione correctamente. Esta característica se ha pensado sólo para utilizarse en un entorno de prueba. Para utilizar el modo discover, marque un compartimento como discover y ejecute la aplicación como lo haría normalmente. El sistema identifica todos los accesos a los recursos y crea las reglas necesarias. Después de la ejecución inicial de la aplicación, utilice el comando getrules –m nombre_compartimento para generar una versión de las reglas en lenguaje máquina. Las reglas generadas por el sistema son necesarias para que la aplicación funcione correctamente en el entorno de prueba, pero es posible que tengan que generalizarse. Por ejemplo, el sistema puede generar una regla que conlleva un número de puerto en un intervalo de puertos anónimos, donde el kernel, y no la aplicación, selecciona el número de puerto. Cuando la aplicación se ejecuta de nuevo, es posible que termine con un número de puerto diferente, necesitando una regla diferente. Es posible que sea necesario generalizar la regla de modo que se especifiquen todos los puertos o, al menos, los números de puerto en el intervalo de puertos anónimos. 7.10 Compartimentos de los clústeres HP Serviceguard Si utiliza compartimentos con HP Serviceguard, deberá configurar todos los demonios Serviceguard en el compartimento INIT por defecto. No obstante, puede configurar paquetes Serviceguard en otros compartimentos. Consulte las ediciones más recientes de los documentos Managing Serviceguard y Using Serviceguard Extension for RAC 142 Compartimentos para obtener los demonios necesarios en Serviceguard y las extensiones Serviceguard para Oracle Real Application Cluster (RAC). Los paquetes Serviceguard pueden pertenecer a compartimentos específicos. Las aplicaciones controladas como parte de un paquete Serviceguard también se pueden configurar en compartimentos específicos. Al configurar el compartimento para un paquete, asegúrese de que dicho compartimento puede tener acceso a los recursos que necesita ese paquete (por ejemplo, grupos de volúmenes, sistemas de archivos, direcciones de red, etcétera). Las reglas de compartimentos son específicas de nodo y no se conservan durante las operaciones de conmutación por error de Serviceguard. Para garantizar un funcionamiento apropiado después de una conmutación por error, todos los nodos del clúster deben tener configuraciones de compartimentos idénticas. Cuando una interface LAN primaria conmuta por error a una interface LAN de reserva, la etiqueta del compartimento de la interface primaria se copia automáticamente en la interface de reserva siempre que esta última no esté en línea. Si la interface de reserva ya está configurada en línea, la interface de reserva y la interface primaria deben estar configuradas en el mismo compartimento para conmutar por error correctamente. Si la interface de reserva está configurada en un compartimento diferente de la interface primaria, pero está sin conexión en el momento de la conmutación por error, la interface de reserva se actualiza a la configuración de compartimentos de la interface primaria cuando la interface conmuta por error. Para mantener las operaciones de Serviceguard apropiadas al distribuir compartimentos en los nodos o paquetes HP Serviceguard: • No modifique las especificaciones del compartimento INIT de ningún modo. • Asegúrese de que el comando inetd se ejecuta en el compartimento INIT. • Asegúrese de que todos los demonios de Serviceguard en un clúster se ejecutan en el compartimento INIT. Por ejemplo, los demonios para Serviceguard versión A.11.16 incluyen cmclconfd, cmcld, cmlogd, cmlvmd, cmomd y cmsnmpd. Para obtener una lista de todos los demonios de Serviceguard, consulte el documento Managing Serviceguard. • Asegúrese de que todos los requisitos de clúster Serviceguard se cumplen para las extensiones Serviceguard para clústeres RAC. Asimismo, los clústeres con Serviceguard Extension for RAC versión A.11.16 necesitan que el demonio cmsmgd se ejecute en el compartimento INIT. Los procesos RAC deben tener acceso a la biblioteca libnmapi2 y deben comunicarse con el comando cmsmgd. Para obtener los demonios y bibliotecas necesarios, consulte el documento Using Serviceguard Extension for RAC. • No configure interfaces LAN de reserva en un compartimento. • Configure los compartimentos y las reglas de forma idéntica en todos los nodos del clúster. Los compartimentos y las reglas son específicos de un sistema y no se conservan cuando un sistema conmuta por error. 7.10 Compartimentos de los clústeres HP Serviceguard 143 NOTA: Si una interface de reserva está configurada en un compartimento, la ejecución del comando setrules aplica este compartimento a la interface de reserva aunque se haya conmutado correctamente a partir de una interface primaria. Si el compartimento de la interface de reserva configurada no coincide con el compartimento de la interface primaria, el compartimento de la interface primaria se sobrescribe al ejecutar el comando setrules. Esta acción puede causar infracciones de seguridad. No se han efectuado cambios en las secuencias de comandos de Serviceguard para facilitar el uso de los compartimentos, los privilegios expresos ni la característica RBAC. 144 Compartimentos 8 Privilegios expresos Este capítulo describe la característica de privilegios expresos de HP-UX 11i. Este capítulo aborda los siguientes temas: • Descripción general (Sección 8.1) • Componentes de privilegios expresos (Sección 8.2) • Privilegios disponibles (Sección 8.3) • Configuración de aplicaciones con privilegios expresos (Sección 8.4) • Consecuencias para la seguridad de los privilegios expresos (Sección 8.5) • Privilegios expresos de los clústeres HP Serviceguard (Sección 8.6) • Solución de problemas de los privilegios expresos (Sección 8.7) 8.1 Descripción general El sistema operativo UNIX utiliza tradicionalmente un modelo de privilegios de «todo o nada», según el cual los superusuarios (los que tienen un UID=0 efectivo, como el usuario root) tienen un poder virtualmente ilimitado y otros usuarios tienen pocos privilegios especiales o ninguno. HP-UX ofrece varios métodos heredados de delegación de poderes limitados, incluidos smh(1M) restringido, los grupos de privilegios descritos en privgrp(4), el archivo shutdown.allow descrito en shutdown(1M) y el archivo cron.allow descrito en crontab(1). Estos métodos heredados pueden reemplazarse por el uso de privilegios expresos y el marco de control de acceso HP-UX RBAC. El modelo de privilegios expresos de HP-UX divide las competencias de los superusuarios en un conjunto de privilegios. Los privilegios expresos se conceden a procesos. Cada privilegio concede a un proceso que posea dicho privilegio el derecho a un determinado conjunto de servicios restringidos que ofrece el kernel. Para obtener más información, consulte la página de manual de privileges(5). 8.2 Componentes de los privilegios expresos La característica de privilegios expresos de HP-UX 11i incluye archivos de configuración, comandos y páginas de manual. Estos componentes se pueden utilizar para configurar y administrar privilegios expresos. 8.1 Descripción general 145 8.2.1 Comandos La Tabla 8-1 describe brevemente los comandos de privilegios expresos. Tabla 8-1 Comandos de privilegios expresos Comandos Descripción setfilexsec Define los atributos de seguridad de los archivos binarios. Los atributos incluyen privilegios retenidos, privilegios permitidos, compartimento y el indicador de inicio del privilegio. getfilexsec Muestra los atributos de seguridad asociados a los archivos ejecutables binarios. Los atributos incluyen privilegios retenidos, privilegios permitidos, compartimento e indicadores de atributos de seguridad. getprocxsec Muestra los atributos de seguridad asociados a los procesos en ejecución. Los atributos incluyen el conjunto de privilegios efectivos, el conjunto de privilegios retenidos, el conjunto de privilegios permitidos, euid y el nombre del compartimento. 8.2.2 Páginas de manual La Tabla 8-2 describe brevemente las páginas de manual de privilegios expresos. Tabla 8-2 Páginas de manual de privilegios expresos Página de manual Descripción privileges(5) Descripción general de los privilegios HP-UX. privileges(3) Describe las interfaces de privilegios expresos. setfilexsec(1M) Describe la funcionalidad y la sintaxis de setfilexsec. getfilexsec(1M) Describe la funcionalidad y la sintaxis de getfilexsec. getprocxsec(1M) Describe la funcionalidad y la sintaxis de getprocxsec. 8.3 Privilegios disponibles Los privilegios expresos se destinan principalmente a los desarrolladores. Aun así, un administrador puede necesitar comprender los privilegios para entender el funcionamiento de este tipo de aplicaciones y averiguar si alguna aplicación no autorizada ha obtenido privilegios. La Tabla 8-3 muestra la lista de privilegios y los fines principales. 146 Privilegios expresos Tabla 8-3 Privilegios disponibles Privilegio Descripción PRIV_ACCOUNTING Permite que un proceso controle el sistema de contabilidad del proceso. PRIV_AUDCONTROL Permite que un proceso inicie, modifique y detenga el sistema de auditoría. PRIV_CHANGECMPT Concede a un proceso la capacidad de cambiar su compartimento. PRIV_CHANGEFILEXSEC Permite que un proceso conceda privilegios a archivos binarios. PRIV_CHOWN Permite que un proceso tenga acceso a las llamadas de sistema chown(). PRIV_CHROOT Permite que un proceso cambie su directorio raíz. PRIV_CHSUBJIDENT Permite que un proceso cambie su número de identificación de usuario (UID), número de identificación de grupo (GID) y las listas de grupos. También permite que un proceso deje los bits de suid o sgid definidos en el archivo cuando se utiliza la llamada de sistema chown(). PRIV_CMPTREAD Permite que un proceso abra un archivo o directorio para leer, ejecutar o buscar, prescindiendo de las reglas de compartimentos que, de otra manera, no permitirían estas operaciones. PRIV_CMPTWRITE Permite que un proceso escriba en un archivo o directorio, prescindiendo de las reglas de compartimentos que, de otra manera, no permitirían esta operación. PRIV_COMMALLOWED Permite que un proceso sobrescriba las reglas de compartimentos en la comunicación entre procesos (IPC) y los subsistemas de red. PRIV_DACREAD Permite que un proceso reemplace todas las restricciones de acceso de lectura, ejecución y búsqueda discrecionales. PRIV_DACWRITE Permite que un proceso reemplace todas las restricciones de acceso de escritura discrecionales. PRIV_DEVOPS Permite que un proceso efectúe operaciones administrativas específicas de dispositivos, por ejemplo, formateo de discos o cintas. PRIV_DLKM Permite que un proceso cargue un módulo del kernel, obtenga información sobre un módulo del kernel cargado y cambie las rutas de búsqueda globales para un módulo del kernel cargable dinámicamente PRIV_FSINTEGRITY Permite que un proceso realice operaciones de discos como, por ejemplo, eliminar o modificar los límites o el tamaño de las particiones de disco, o importar y exportar un grupo de volúmenes LVM en todo el sistema. PRIV_LIMIT Permite que un proceso defina los límites de prioridad y recursos más allá de los valores límite máximos. 8.3 Privilegios disponibles 147 Tabla 8-3 Privilegios disponibles (continuación) 148 Privilegio Descripción PRIV_LOCKRDONLY Permite que un proceso utilice la llamada de sistema lockf() para bloquear los archivos abiertos con permiso de acceso de sólo lectura. PRIV_MKNOD Permite que un proceso cree archivos especiales de bloqueo o de caracteres utilizando la llamada de sistema mknod(). PRIV_MLOCK Permite que un proceso tenga acceso a la llamada de sistema plock. PRIV_MOUNT Permite que un proceso monte y desmonte un sistema de archivos utilizando las llamadas de sistema mount() y umount(). PRIV_MPCTL Permite que un proceso cambie el enlace del procesador, el enlace del dominio de la localidad o la directiva de activación. PRIV_NETADMIN Permite que un proceso realice operaciones administrativas de la red, incluidas la configuración de las tablas de enrutamiento de la red y la consulta de información de la interface. PRIV_NETPRIVPORT Permite que un proceso enlace con un puerto privilegiado. Por defecto, los números 0-1023 son puertos privilegiados. PRIV_NETPROMISCUOUS Permite que un proceso configure una interface para escuchar en modo promiscuo. PRIV_NETRAWACCESS Permite que un proceso tenga acceso a los protocolos de red de Internet sin formato. PRIV_OBJSUID Permite que un proceso defina los bits de suid o sgid en cualquier archivo si el proceso tiene privilegio de OWNER (Propietario). Permite también que un proceso cambie la propiedad de un archivo sin eliminar los bits de suid o sgid, dado que el proceso puede cambiar la propiedad del archivo. PRIV_OWNER Permite que un proceso reemplace todas las restricciones con respecto al número UID que coincidan con el propietario del archivo o el recurso. PRIV_PSET Permite que un proceso cambie la configuración del sistema pset. PRIV_REBOOT Permite que un proceso realice operaciones de reinicio. PRIV_RTPRIO Permite que un proceso tenga acceso a la llamada de sistema rtprio(). PRIV_RTPSET Permite que un proceso controle los conjuntos de procesos del entorno en tiempo de ejecución (RTE psets). PRIV_RTSCHED Permite que un proceso defina las prioridades en tiempo real POSIX.4. Privilegios expresos Tabla 8-3 Privilegios disponibles (continuación) Privilegio Descripción PRIV_RULESCONFIG Permite que un proceso agregue y modifique las reglas de compartimentos en el sistema. PRIV_SELFAUDIT Permite que un proceso genere registros de auditoría para sí mismo utilizando la llamada de sistema audwrite(). PRIV_SERIALIZE Permite que un proceso utilice la llamada de sistema serialize() para imponer un proceso de destino para que se ejecute en serie con otros procesos marcados para serialización. PRIV_SPUCTL Permite que un proceso efectúe determinadas operaciones administrativas en el producto Instant Capacity. PRIV_SYSATTR Permite que un proceso administre los atributos del sistema, entre ellos la configuración de los parámetros utilizables, la modificación del nombre de host, el nombre de dominio y las cuotas de usuario. PRIV_SYSNFS Permite que un proceso realice operaciones NFS como exportar un sistema de archivos, la llamada de sistema getfh(), el bloqueo de archivos NFS, la revocación de la autenticación NFS y la creación de un subproceso de demonio de kernel NFS. PRIV_TRIALMODE Permite que un proceso registre la información del modo de prueba en el archivo syslog. 8.4 Configuración de aplicaciones con privilegios expresos Las aplicaciones que se escriben o modifican para admitir privilegios expresos se llaman aplicaciones compatibles con los privilegios. Deberá registrar las aplicaciones compatibles con los privilegios mediante el comando setfilexsec. Una vez registradas, los atributos de seguridad asociados a un archivo binario se almacenan en un archivo de configuración y mantienen la persistencia entre reinicios. Esto se hace normalmente cuando se instalan y configuran aplicaciones compatibles con privilegios mediante las utilidades SD-UX. Las aplicaciones HP-UX más antiguas, o las aplicaciones heredadas, no son compatibles con los privilegios. Puede configurar las aplicaciones heredadas que funcionan con el número UID=0 para que se ejecuten con privilegios expresos. Para configurar aplicaciones heredadas con HP-UX RBAC, consulte la Sección 9.5.4. SUGERENCIA: HP recomienda utilizar HP-UX RBAC para configurar las aplicaciones que necesitan privilegios variables para ejecutar. Para configurar atributos de seguridad para una aplicación compatible con los privilegios, utilice el comando setfilexsec del modo siguiente: # setfilexsec [opciones] nombre_archivo 8.4 Configuración de aplicaciones con privilegios expresos 149 El comando setfilexsec se ha pensado para asignar privilegios a archivos binarios en un sistema de archivos local. No debe asignarse privilegios a los archivos binarios obtenidos de un sistema de archivos de red (NFS), porque si un sistema distinto modifica el archivo (directamente en el servidor NFS), los atributos extendidos definidos por setfilexsec no se eliminan. Las opciones de setfilexsec son las siguientes: -d -D -r -R -p -P -f Elimina cualquier información sobre la seguridad de este archivo en el archivo de configuración y el kernel. Elimina cualquier información sobre la seguridad de este archivo sólo en el archivo de configuración. Se utiliza para borrar la información sobre la seguridad de un archivo eliminado. Agrega o cambia los privilegios retenidos mínimos. Agrega o cambia los privilegios retenidos máximos. Agrega o cambia los privilegios permitidos mínimos. Agrega o cambia los privilegios permitidos máximos. Define los indicadores de atributos de seguridad. El comando getfilexsec muestra los atributos extendidos de un archivo binario configurado con el comando setfilexsec. # getfilexsec nombre_archivo 8.4.1 Modelo de privilegios Cada proceso tiene tres conjuntos de privilegios asociados: • Conjunto de privilegios permitidos El conjunto máximo de privilegios que un proceso puede obtener. El proceso puede quitar cualquier privilegio de este conjunto, pero no puede agregar ninguno. Los privilegios de este conjunto se pueden agregar al conjunto de privilegios efectivo del proceso. • Conjunto de privilegios efectivos El conjunto de privilegios actualmente activos de un proceso. Un proceso compatible con privilegios puede modificar el conjunto de privilegios efectivos para mantener sólo los privilegios necesarios en este conjunto en cualquier momento dado. El proceso puede eliminar cualquier privilegio del conjunto de privilegios efectivos, pero sólo puede agregar privilegios desde el conjunto de privilegios permitidos. El conjunto de privilegios efectivos siempre es un subconjunto del conjunto de privilegios permitidos. 150 Privilegios expresos • Conjunto de privilegios retenidos El conjunto de privilegios retenidos cuando un proceso llama a la llamada de sistema execve(). El proceso puede eliminar cualquier privilegio de este conjunto, pero no puede agregar ninguno. El conjunto de privilegios retenidos siempre es un subconjunto del conjunto de privilegios permitidos. El primer proceso, init, se inicia con un conjunto pequeño de privilegios. Posteriormente, crea otros procesos que ejecutan otros archivos binarios utilizando las llamadas de la familia exec (execv, execve, etcétera). Durante esta llamada exec, los atributos extendidos del archivo binario, el conjunto de atributos con el comando setfilexsec, podrían hacer que estos procesos obtuvieran privilegios que su proceso primario no tiene o que perdieran los privilegios que el proceso primario tenía. Por ejemplo, si un archivo binario tiene un mínimo permitido de DACREAD (setfilexsec –p DACREAD se ha ejecutado en el archivo binario), el proceso nuevo tendrá el privilegio DACREAD tuviera o no tuviera el proceso primario dicho privilegio. Por otro lado, si el proceso ya tiene el privilegio DACREAD, pero el archivo binario que ejecuta no lo tiene en el máximo permitido (por ejemplo, ya se ha ejecutado setfilexsec -P none …. en el archivo), perdería el privilegio como efecto secundario de ejecutar el archivo binario. 8.4.2 Privilegios compuestos Los privilegios compuestos son una forma abreviada de especificar un conjunto predefinido de privilegios simples. Los privilegios compuestos son los siguientes: • BASIC Privilegios básicos disponibles para todos los procesos por defecto. Los procesos pueden quitar uno o varios privilegios de este conjunto. • BASICROOT Privilegios básicos y privilegios que aportan competencias asociadas normalmente a UID=0. • POLICY Privilegios de anulación de directivas y privilegios de configuración de directivas. Los privilegios de anulación de directivas anulan reglas de compartimentos. Los privilegios de configuración de directivas controlan cómo se configuran los privilegios. Para obtener una lista completa de los privilegios en cada uno de los privilegios compuestos, consulte la página de manual de privileges(5). 8.4 Configuración de aplicaciones con privilegios expresos 151 8.5 Consecuencias para la seguridad de los privilegios expresos Los privilegios expresos no se propagan por todos los sistemas distribuidos: sólo se aplican en el sistema local. Por ejemplo, un proceso en un sistema que tiene PRIV_DACREAD y PRIV_DACWRITE no puede reemplazar las restricciones discrecionales en otro sistema para leer o escribir en un archivo. 8.5.1 Incremento de los privilegios En determinadas situaciones, si concede a un proceso un determinado privilegio o conjunto de privilegios, dicho proceso puede obtener privilegios adicionales concedidos de manera no explícita. Esto se denomina incremento de los privilegios. Por ejemplo, un proceso con el privilegio PRIV_DACWRITE puede sobrescribir archivos de sistema operativo críticos y, durante el proceso, puede granjearse privilegios expresos adicionales. 8.6 Privilegios expresos de los clústeres HP Serviceguard HP Serviceguard puede supervisar las aplicaciones compatibles con los privilegios. No se han efectuado cambios en los archivos de configuración de paquetes Serviceguard ni en la administración de paquetes Serviceguard para admitir privilegios expresos. No se han realizado cambios en las secuencias de comandos Serviceguard para facilitar el uso de los privilegios expresos. Para mantener las operaciones de Serviceguard apropiadas al distribuir privilegios expresos HP-UX 11i en paquetes o nodos Serviceguard: • Asegúrese de que el usuario root (UID=0) tiene privilegios plenos en el compartimento INIT. • Asegúrese de que la puesta en ejecución de privilegios expresos no genera riesgos para la seguridad de los clústeres Serviceguard. 8.7 Solución de problemas con los privilegios expresos Si algo no funciona en el sistema y sospecha que el problema se produce debido a los privilegios expresos, puede comprobar la configuración de los privilegios expresos del modo siguiente. Problema 1: Aunque se han asignado privilegios expresos a un archivo binario, los procesos que utilizan exec() para tener acceso al archivo binario no reciben los privilegios expresos asignados. Solución: Compruebe si se da una de las siguientes situaciones. • ¿Es el archivo en cuestión una secuencia de comandos? Se ha pasado por alto algún privilegio expreso asignado a archivos de comandos shell. 152 Privilegios expresos • ¿Ha cambiado el archivo desde que se asignaron privilegios expresos? Cuando se modifica un archivo, los atributos de los privilegios expresos se pierden. Ejecute el siguiente comando antes o después de modificar el archivo: # setfilexsec -d nombre_archivo A continuación, agregue los atributos de privilegios que desea asignar al archivo. Para obtener más información sobre la solución de problemas con los privilegios expresos, consulte la página de manual de setfilexsec(1M). Problema 2: Un proceso tiene privilegios que no debería tener o no tiene los que debería tener. Solución: Utilice el comando getprocxsec para determinar los privilegios que tiene un proceso: # getprocxsec -per pid Este comando muestra los conjuntos de privilegios retenidos, efectivos y permitidos de un proceso. Para obtener más información, consulte la página de manual de getprocxsec(1M). Si el proceso no tiene los privilegios correctos, configure el archivo binario que ha creado este proceso con los privilegios correctos. Para obtener más información, consulte la sección «Configuración de aplicaciones con privilegios expresos». 8.7 Solución de problemas con los privilegios expresos 153 154 Parte III Protección de la identidad En las empresas de ámbito mundial contemporáneas, manejar la identidad no constituye una tarea fácil, sobre todo dado que las necesidades de administración de la identidad aumentan para englobar a los empleados, los contratistas, los socios y los proveedores de muchos países con diversas legislaciones y disposiciones relativas a la protección de la intimidad. HP-UX 11i simplifica la administración de la autenticación y el acceso del usuario, sin dejar de auditar todas las acciones reservadas que se emprenden. Esta sección analiza los siguientes temas: • HP-UX Role-Based Access Control (Capítulo 9) • Administración de la auditoría (Capítulo 10) 155 156 9 HP-UX Role-Based Access Control La información de este capítulo describe la característica HP-UX Role-Based Access Control (HP-UX RBAC). Este capítulo aborda los siguientes temas: • Descripción general (Sección 9.1) • Fundamentos del control del acceso (Sección 9.2) • Componentes de HP-UX RBAC (Sección 9.3) • Planificación de la distribución de HP-UX RBAC (Sección 9.4) • Configuración de HP-UX RBAC (Sección 9.5) • Uso de HP-UX RBAC (Sección 9.6) • Solución de problemas de HP-UX RBAC (Sección 9.7) 9.1 Descripción general La seguridad (y, especialmente, la seguridad de las plataformas) ha sido siempre una cuestión importante en la infraestructura de las empresas. Aun así, muchas empresas a menudo han descuidado o han pasado por alto conceptos de seguridad tales como la responsabilidad individual y los privilegios mínimos en el pasado. No obstante, la legislación aplicada recientemente en Estados Unidos, incluidas las leyes Health Insurance Portability and Accountability Act (HIPAA) y Sarbanes-Oxley Act, ha contribuido a destacar la importancia de estos conceptos de seguridad. La mayoría de los entornos empresariales cuentan con sistemas administrados por varios usuarios. Normalmente, este tipo de administración se basa en proporcionar a los administradores la contraseña de una cuenta compartida común, denominada cuenta de usuario root. Aunque la cuenta de usuario root simplifica la administración del control del acceso al permitir que los administradores que disponen de la contraseña de usuario root puedan realizar todas las operaciones, también presenta varios obstáculos inherentes para la administración del control del acceso. Por ejemplo: • Después de proporcionar a los administradores la contraseña de usuario root, no resulta fácil limitar en mayor medida a estos usuarios. • En el mejor de los casos, revocar el acceso de un administrador requiere la modificación de la contraseña común y la notificación a los demás administradores. Pero siendo más realistas, simplemente modificar la contraseña no suele ser suficiente para revocar de forma efectiva el acceso, ya que se pueden haber puesto en marcha otros mecanismos de acceso alternativos. • La responsabilidad individual es prácticamente imposible de ejercer con una cuenta de usuario root compartida. En consecuencia, resulta difícil, y en algunos casos imposible, realizar un análisis adecuado después de producirse un suceso de seguridad. 9.1 Descripción general 157 La característica HP-UX Role-Based Access Control (RBAC) elimina estos obstáculos al ofrecer la capacidad de asignar conjuntos de tareas a cuentas de usuario ordinarias, pero configuradas apropiadamente. HP-UX RBAC también mitiga la sobrecarga de administración asociada a asignar y revocar las autorizaciones individuales para cada usuario. HP-UX RBAC ofrece las siguientes características: • Archivos de configuración predefinidos específicos de HP-UX, para una distribución rápida y fácil. • Reautenticación flexible mediante un módulo de autenticación enchufable (PAM Pluggable Authentication Module), para aplicar restricciones en función de cada comando. • Integración en el sistema de auditoría de HP-UX, para crear un rastro de auditoría único y unificado. • Arquitectura enchufable para personalizar las decisiones relativas al control del acceso. 9.2 Fundamentos del control del acceso La meta de un sistema de control de acceso es limitar el acceso a los recursos en función de un conjunto de restricciones. Normalmente, estas restricciones y sus atributos asociados se clasifican en las siguientes categorías: • Sujeto: entidad que intenta tener acceso al recurso. En el contexto de un sistema operativo, el sujeto suele ser un usuario o un proceso asociado a un usuario. • Operación: acción realizada en un recurso. Una operación puede corresponder directamente a una aplicación o un comando. En el caso de HP-UX RBAC, la operación es una cadena jerárquica separada por puntos, por ejemplo, hpux.user.add. • Objeto: destino de la operación, que a menudo coincide con el recurso final, pero puede ser diferente. Una solicitud de control de acceso puede considerarse como una pregunta que combina los elementos anteriores, cuya respuesta (normalmente permitir o denegar) determina si se concede el acceso al recurso. Por ejemplo: ¿Está autorizado el usuario ron para realizar la operación hpux.fs.mount en el objeto /dev/dsk/c0t1d0? A menudo, el término autorización se emplea como sinónimo de control del acceso. En HP-UX RBAC, el término autorización se refiere a la capacidad de realizar una operación en un objeto. Como se muestra en la Tabla 9-1, un usuario puede tener concedidas diversas autorizaciones, cada una de las cuales permite el acceso a un recurso. 158 HP-UX Role-Based Access Control Tabla 9-1 Ejemplo de autorizaciones por usuario Componente operación de la autorización Usuarios ron lisa jim liz hpux.user.password.modify • • • • hpux.network.nfs.start • hpux.network.nfs.stop • hpux.network.nfs.config • hpux.fs.backup • • hpux.fs.restore • • hpux.user.add hpux.user.delete hpux.user.modify NOTA: La Tabla 9-1 muestra sólo el elemento operación de las autorizaciones, no el elemento objeto de las mismas. 9.2.1 Simplificación del control del acceso con funciones Además de los principales básicos del control del acceso tratados en la descripción general anterior, esta sección aborda la forma de representar la directiva de control de acceso y la forma de tomar las decisiones. La descripción general anterior del control del acceso no abarca la forma de representar la directiva de control de acceso ni la forma de tomar las decisiones. Un enfoque consiste simplemente en mantener una lista de los usuarios y las autorizaciones (pares operación-objeto) asignadas a cada uno de ellos. Este enfoque tiene la ventaja de la flexibilidad, ya que el conjunto de autorizaciones de cada usuario puede ser totalmente distinto de los conjuntos de los demás usuarios. Por desgracia, este enfoque resulta también difícil de administrar ya que, a medida que se agregan usuarios, es necesario determinar exactamente qué autorizaciones requiere cada usuario. Asimismo, cuando se realizan auditorías, es necesario examinar cada usuario individualmente para determinar las autorizaciones correspondientes. HP-UX RBAC resuelve estos problemas agrupando en funciones a los usuarios con necesidades de autorización comunes. Las funciones sirven de mecanismo de agrupación para simplificar la asignación y la auditoría de las autorizaciones. En lugar de asignar directamente una autorización a un usuario, se asignan autorizaciones a funciones. A medida que se agregan usuarios al sistema, se les asigna un conjunto de funciones, que 9.2 Fundamentos del control del acceso 159 determinan las acciones que pueden llevar a cabo y los recursos a los que pueden tener acceso. Comparemos la Tabla 9-2, que presenta una lista de las autorizaciones asignadas a funciones, con la Tabla 9-1, que presenta una lista de las autorizaciones asignadas a cada usuario. La comparación de estas dos tablas permite observar cómo simplifican las funciones la asignación de autorizaciones. Tabla 9-2 Ejemplo de autorizaciones por función Componente operación de la autorización Función UserAdmin NetworkAdmin BackupOper Admin hpux.user.add • • hpux.user.delete • • hpux.user.modify • • • hpux.user.password.modify hpux.network.nfs.start • • hpux.network.nfs.stop • • hpux.network.nfs.config • • hpux.fs.backup • • hpux.fs.restore • • NOTA: La Tabla 9-2 muestra sólo el elemento operación de las autorizaciones, no el elemento objeto de las mismas. 9.3 Componentes de HP-UX RBAC A continuación, se presenta una lista de los componentes principales de HP-UX RBAC: Comando empaquetador privrun Comando privedit 160 HP-UX Role-Based Access Control Basándose en las autorizaciones asociadas a un usuario, privrun llama a las aplicaciones heredadas existentes con privilegios después de comprobar las autorizaciones y reautenticar opcionalmente al usuario, sin modificar la aplicación. Basándose en las autorizaciones asociadas a un usuario, privedit permite a los usuarios modificar archivos que normalmente no podrían modificar debido a los permisos de acceso a los Access Control Policy Switch (ACPS) Access Control Policy Module Comandos de administración archivos o las listas de control de acceso (ACL Access Control List). Determina si un sujeto está autorizado para realizar una operación en un objeto. Evalúa los archivos de base de datos de HP-UX RBAC y aplica las directivas de asignación para atender las solicitudes de control de acceso. Modifican y validan los archivos de base de datos de HP-UX RBAC. Las siguientes secciones analizan los componentes de HP-UX RBAC más detalladamente. 9.3.1 HP-UX RBAC Access Control Policy Switch HP-UX RBAC Access Control Policy Switch es una interface personalizable entre las aplicaciones que deben tomar decisiones relativas al control del acceso y los módulos de directivas de control de acceso que proporcionan las respuestas a dichas decisiones después de interpretar la información de las directivas contenida en las bases de datos de RBAC. Como se muestra en la Figura 9-1, desde su ubicación en la arquitectura de HP-UX RBAC, el conmutador ACPS proporciona una interface entre los módulos de directivas de control de acceso y las aplicaciones que toman decisiones relativas al control del acceso. El conmutador ACPS contiene las siguientes interfaces, que se describen en detalle en sus respectivas páginas de manual: • Interface de programación de aplicaciones (API) del conmutador ACPS • Interface de proveedor de servicios (SPI) del conmutador ACPS • /etc/acps.conf La interface administrativa del conmutador ACPS es el archivo de configuración /etc/acps.conf. El archivo de configuración /etc/acps.conf determina qué módulos de directivas consulta el conmutador ACPS, la secuencia en que los consulta y las reglas de combinación de las respuestas de los módulos para proporcionar un resultado a las aplicaciones que necesitan tomar decisiones relativas al control del acceso. Esta puesta en ejecución del conmutador ACPS permite crear un módulo para aplicar directivas personalizadas sin modificar las aplicaciones existentes de control del acceso según la función. NOTA: Para obtener más información sobre el conmutador ACPS y sus interfaces, consulte las páginas de manual de acps(4), acps.conf(4), acps_api(3) y acps_spi(3). 9.3 Componentes de HP-UX RBAC 161 9.3.2 Archivos de configuración de HP-UX RBAC La Tabla 9-3 enumera y describe brevemente los archivos de HP-UX RBAC. Tabla 9-3 Archivos de configuración de HP-UX RBAC Archivo de configuración Descripción /etc/rbac/auths Archivo de base de datos que contiene todas las autorizaciones válidas. /etc/rbac/cmd_priv Archivo de base de datos de privrun que contiene los privilegios y las autorizaciones relativos a comandos y archivos. /etc/rbac/role_auth Archivo de base de datos que define las autorizaciones para cada función. /etc/rbac/roles Archivo de base de datos que define todas las funciones configuradas. /etc/rbac/user_role Archivo de base de datos que define las funciones para cada usuario. /etc/acps.conf Archivo de configuración del conmutador ACPS. /etc/rbac/aud_filter Archivo de filtros de auditoría que identifica específicamente las funciones, operaciones y objetos que auditar de HP-UX RBAC. 9.3.3 Comandos de HP-UX RBAC La Tabla 9-4 enumera y describe brevemente los comandos de HP-UX RBAC. Tabla 9-4 Comandos de HP-UX RBAC Comando Descripción privrun Llama a las aplicaciones heredadas con privilegios después de comprobar las autorizaciones y reautenticar opcionalmente al usuario. privedit Permite a los usuarios autorizados modificar archivos con control de acceso aplicado. roleadm Modifica la información de las funciones contenida en los archivos /etc/rbac/user_role, /etc/rbac/role_auth y /etc/rbac/roles. authadm Modifica la información de las autorizaciones contenida en los archivos /etc/rbac/role_auth y /etc/rbac/roles. cmdprivadm Modifica los privilegios y las autorizaciones relativos a comandos que contiene la base de datos /etc/rbac/cmd_priv. rbacdbchk 162 Comprueba las autorizaciones y la sintaxis en los archivos de base de datos de privrun y HP-UX RBAC. HP-UX Role-Based Access Control 9.3.4 Páginas de manual de HP-UX RBAC La Tabla 9-5 enumera y describe brevemente las páginas de manual de HP-UX RBAC. Tabla 9-5 Páginas de manual de HP-UX RBAC Página de manual Descripción rbac(5) Describe la característica HP-UX RBAC. acps(3) Describe el conmutador ACPS y sus interfaces. acps.conf(4) Describe el archivo de configuración del conmutador ACPS y la sintaxis correspondiente. acps_api(3) Describe la interface de programación de aplicaciones (API) del conmutador ACPS. acps_spi(3) Describe la interface de proveedor de servicios (SPI) del conmutador ACPS. privrun(1m) Describe la funcionalidad y la sintaxis de privrun. privedit(1m) Describe la funcionalidad y la sintaxis de privedit. roleadm(1m) Describe la funcionalidad y la sintaxis de roleadm. authadm(1m) Describe la funcionalidad y la sintaxis de authadm. cmdprivadm(1m) Describe la funcionalidad y la sintaxis de cmdprivadm. rbacdbchk(1m) Describe la funcionalidad y la sintaxis de rbacdbchk. 9.3.5 Arquitectura de HP-UX RBAC El componente principal de HP-UX RBAC es el comando privrun, que llama a los comandos, aplicaciones y secuencias de comandos existentes. El comando privrun utiliza el subsistema ACPS para realizar solicitudes de control de acceso. Una solicitud de acceso se concede o deniega en función de un conjunto de archivos de configuración que definen las asignaciones de usuarios a funciones y de funciones a autorizaciones. Si la solicitud de acceso se concede, privrun llama al comando de destino con privilegios adicionales, que pueden incluir uno o varios compartimentos y privilegios expresos, de UID y GID. Los privilegios se configuran para permitir que el comando de destino se ejecute correctamente. La Figura 9-1 muestra la arquitectura de HP-UX RBAC. 9.3 Componentes de HP-UX RBAC 163 Figura 9-1 Arquitectura de HP-UX RBAC /usr/sbin/ cmdprivadm Comando, autoriz. Base de datos de privilegios privrun acceso: aplicación compatible con el control privedit PAM, conmutador de servicios de nombres acceso: aplicación compatible con el control API de ACPS Access Control Policy Switch (ACPS) Módulos de servicio PAM Información del usuario por ejemplo, /etc/passwd SPI de ACPS Otro ACPM de directivas ACPM de RBAC local LEYENDA : Comandos empaquetadores de privilegios Conmutador de control de acceso Funciones del sistema válidas Usuario Base de datos de funciones Función Base de datos de autorizaciones Autorizaciones del sistema válidas RBAC Futuro Componentes existentes /usr/sbin/ rbacdbck /usr/sbin/ roleadm /usr/sbin/ authadm 9.3.6 Ejemplo de uso y funcionamiento de HP-UX RBAC La Figura 9-2 y las notas al pie posteriores muestran un ejemplo de llamada de privrun y los archivos de configuración que privrun utiliza para determinar si se permite a un usuario llamar a un comando. 164 HP-UX Role-Based Access Control Figura 9-2 Ejemplo de funcionamiento después de llamar a privrun Autorizaciones Usuarios MUCHOS:MUCHAS Funciones MUCHAS:MUCHAS /etc/rbac/user_role 1:1 , MUCHAS:MUCHOS Comando Objetos /etc/rbac/role_auth privilegios /etc/rbac/cmd_priv comando, argumentos, UID 2 4 S ACP nte AC PS iante med me dia Proceso (shell ) Operaciones Privrun 3 Quitar todos los privilegios excepto los definidos Comando con privilegios 5 1 1. 2. 3. 4. 5. Un proceso (en concreto, un shell) asociado al usuario ejecuta privrun con la meta de ejecutar un comando de destino con privilegios elevados. La línea de comandos de destino (el comando y los argumentos) se transmite explícitamente a privrun y el UID del usuario que realiza la llamada se transmite implícitamente por el contexto del proceso. privrun intenta encontrar una coincidencia (o varias) en la base de datos /etc/rbac/cmd_priv con la línea de comandos especificada. Cada entrada coincidente también especifica una autorización necesaria (par operación-objeto) y los privilegios resultantes si el usuario tiene concedida la autorización especificada. privrun efectúa una llamada (para cada entrada coincidente de /etc/rbac/cmd_priv) al conmutador ACPS. El servidor de ACPS de HP-UX RBAC consulta las bases de datos /etc/rbac/user_role y /etc/rbac/role_auth para determinar si el usuario tiene concedida la autorización especificada y devuelve este resultado a privrun. En el supuesto de que el usuario asociado al proceso tenga concedida la autorización necesaria especificada en la base de datos /etc/rbac/cmd_priv para el comando solicitado, privrun quitará todos los privilegios (excepto los especificados en la entrada /etc/rbac/cmd_priv) y ejecutará el comando solicitado. El comando privrun se ha definido en UID=0 y se inicia con todos los privilegios necesarios. 9.3 Componentes de HP-UX RBAC 165 9.4 Planificación de la distribución de HP-UX RBAC Antes de distribuir HP-UX RBAC, dé estos pasos de planificación: 1. 2. 3. Planifique las funciones para los usuarios. Planifique las autorizaciones para las funciones. Planifique las asignaciones de autorizaciones a comandos. Las siguientes secciones describen estos pasos más detalladamente. 9.4.1 Planificación de las funciones Planificar un conjunto adecuado de funciones para los usuarios de un sistema constituye el primer paso fundamental en la distribución de HP-UX RBAC. En algunas empresas ya existe este conjunto de funciones, que se puede volver a utilizar al configurar HP-UX RBAC. Lo más habitual es que sea necesario diseñar las funciones según las tareas existentes asociadas a los administradores del sistema. Tenga en cuenta las siguientes pautas al diseñar las funciones: • Debe haber un número considerablemente inferior de funciones respecto al número total de usuarios del sistema. Si cada usuario requiere una función especial, entonces no será posible beneficiarse de toda la administración simplificada relativa al uso de funciones. • Las funciones deben tener alguna relación con las funciones empresariales reales de los usuarios. • Los usuarios pueden tener varias funciones y, por lo tanto, puede diseñar algunas funciones simplemente con vistas a agrupar las autorizaciones comunes a varias funciones empresariales. Con este enfoque, puede diseñar las funciones jerárquicamente a fin de incluir distintas funciones mediante la inclusión de las autorizaciones correspondientes. 9.4.2 Planificación de las autorizaciones para las funciones Una vez definidas las funciones, puede planificar las autorizaciones asociadas a cada función. Si las funciones coinciden con la jerarquía de operaciones ya existente, la asignación de las autorizaciones se convierte en una tarea sencilla. Para obtener una lista de todas las autorizaciones definidas por el sistema, escriba el siguiente comando: # authadm list sys Si la jerarquía de autorizaciones existente no coincide con las funciones, la definición de las autorizaciones asociadas a cada función es una tarea más compleja. Puede dar los siguientes pasos a modo de ayuda: 1. 2. Obtenga una lista de los comandos del sistema que se utilizan habitualmente en cada función. Compare estos comandos con los de la base de datos /etc/rbac/cmd_priv. 166 HP-UX Role-Based Access Control 3. Si encuentra entradas coincidentes después de realizar los pasos anteriores, utilice estas entradas como guía para asignar las autorizaciones. Por ejemplo, supongamos que una de las funciones deseadas es UserOperator, que ejecuta normalmente comandos como useradd, usermod, userdel, etcétera. Para determinar qué autorizaciones pueden ser apropiadas para esta función, escriba el siguiente comando: # grep useradd /etc/rbac/cmd_priv /usr/sbin/useradd:dflt:(hpux.user.add,*):0/0//:dflt:dflt:dflt: En este ejemplo, el comando /usr/sbin/useradd requiere la autorización hpux.user.add. Puede asignar esta autorización directamente, o asignar hpux.user.* como autorización. Cuando asigne autorizaciones, tenga cuidado al utilizar caracteres comodín. Al asignar esta autorización, en realidad se asignan varias autorizaciones: # grep hpux.user. /etc/rbac/cmd_priv /usr/sbin/pwgrd:dflt:(hpux.user.cache.admin,*):0/0// :dflt :dflt :dflt : /usr/sbin/userdel:dflt:(hpux.user.delete,*):0/0// :dflt :dflt :dflt : /usr/sbin/groupdel:dflt:(hpux.user.group.delete,*):0/0// :dflt :dflt :dflt : /usr/sbin/useradd:dfl:(hpux.user.add,*):0/0//:dflt:dflt:dflt: /usr/sbin/usermod:dflt:(hpux.user.modify,*):0/0// :dflt :dflt :dflt : /usr/sbin/groupadd:dflt:(hpux.user.group.add,*):0/0// :dflt :dflt :dflt : /usr/sbin/groupmod:dflt:(hpux.user.group.modify,*):0/0// :dflt :dflt :dflt : /usr/sbin/vipw:dflt:(hpux.user.modify,*):0/0// :dflt :dflt :dflt : 9.4.3 Planificación de las asignaciones de comandos Defina los comandos que se utilicen habitualmente en cualquiera de las funciones definidas, pero que no existen en el archivo predefinido /etc/rbac/cmd_priv que se ha proporcionado. El archivo /etc/rbac/cmd_priv define la asignación entre las autorizaciones y los comandos. Para cada comando, determine lo siguiente: • La ruta completa del comando • La autorización necesaria que debe comprobarse antes de ejecutar el comando • Cualquier privilegio especial que requiera el comando (por ejemplo, euid=0) Las cadenas de texto que constituyen las entradas de operación y objeto en el archivo /etc/rbac/cmd_priv son arbitrarias, pero deben tener una correspondencia lógica con un comando o un conjunto de comandos. Tenga en cuenta las siguientes pautas al planificar las asignaciones de autorizaciones a comandos en /etc/rbac/cmd_priv: • Defina las operaciones en grupos lógicos para asignar fácilmente las operaciones a funciones. • No cree ramificaciones de operaciones con demasiados (más de 10) o pocos (1) elementos secundarios. El árbol completo no debe ser demasiado ancho, lo que dificultaría la asignación de grupos de operaciones, ni demasiado alto, con nombres de operaciones individuales largos y difíciles de utilizar. 9.4 Planificación de la distribución de HP-UX RBAC 167 • Termine el último elemento del nombre de una operación con una acción (verbo). • Defina las operaciones de manera que los nuevos comandos se puedan colocar fácilmente cuando se agreguen. En relación con el procedimiento para configurar comandos adicionales, consulte la sección «Configuración de privilegios y autorizaciones adicionales relativos a comandos». 9.4.4 Limitaciones y restricciones de HP-UX RBAC A continuación, se presenta una lista de los elementos que deben tenerse en cuenta antes de distribuir HP-UX RBAC: • HP-UX RBAC no admite el modo monousuario y, por lo tanto, la cuenta de usuario root debe estar disponible durante situaciones en las que se necesite este modo. • Serviceguard no admite el uso de HP-UX RBAC ni privrun para conceder acceso a los comandos de Serviceguard. Para obtener más información sobre HP-UX RBAC y los clústeres Serviceguard, consulte la Sección 9.6.1.1. • Igual que con todas las aplicaciones, HP-UX RBAC está sujeto a las reglas que rigen los compartimentos (consulte el Capítulo 7). Cuando utilice HP-UX RBAC con compartimentos, recuerde lo siguiente: — No se puede ejecutar privedit en archivos restringidos por definiciones de compartimentos. — Para proporcionar una aplicación diferente con privilegios expresos, es necesario que el comando privrun se ejecute con estos mismos privilegios que desea proporcionar a la aplicación. Por defecto, privrun se configura para ejecutarse con todos los privilegios (para obtener más información, consulte la página de manual de getfilexsec(1M)). No obstante, a veces puede restringirse este conjunto de privilegios por defecto. Por ejemplo, si un compartimento está configurado para rechazar privilegios, esta especificación impide que privrun proporcione los privilegios a la aplicación en ese compartimento, ya que privrun carece de los privilegios en sí. Tenga en cuenta que, por defecto, los compartimentos sellados se configuran para rechazar el privilegio compuesto POLICY. — Para que privrun llame a otra aplicación en un compartimento, es necesario que privrun proporcione la aserción del privilegio CHANGECMPT. Si privrun no puede proporcionar la aserción del privilegio CHANGECMPT (por ejemplo, si el compartimento está configurado para rechazar privilegios), privrun dará error. Este comportamiento es deliberado y está diseñado para reforzar el concepto de los compartimentos sellados. 168 HP-UX Role-Based Access Control 9.5 Configuración de HP-UX RBAC La configuración de HP-UX RBAC es un proceso que consta de tres pasos: 1. 2. 3. Configure las funciones. Configure las autorizaciones. Configure los comandos adicionales. IMPORTANTE: Las autorizaciones están incorporadas (dentro del código) en los comandos de administración de HP-UX RBAC y no es posible configurarlas. No obstante, se puede configurar qué funciones y usuarios tienen las autorizaciones necesarias para los comandos de administración de HP-UX RBAC. Los comandos de administración de HP-UX RBAC no tienen que empaquetarse con el comando privrun porque son setuid=0. Los comandos de administración de HP-UX RBAC se ejecutan con privilegios iguales al usuario root, independientemente de quién los llame. Las comprobaciones de control del acceso limitan quién puede utilizar los comandos de administración de HP-UX RBAC. Para obtener más información sobre las autorizaciones correspondientes, consulte la sección de autorización en la página de manual de cada uno de los comandos de administración de HP-UX RBAC. Esta Sección 9.5 utiliza los usuarios y resultados de planificación de ejemplo mostrados en la Tabla 9-6, para ofrecer una demostración de los comandos de administración de HP-UX RBAC y el proceso de configuración correspondiente. Tabla 9-6 Resultados de planificación de ejemplo Usuarios Funciones Autorizaciones Comandos típicos (Nota: se parte de que los objetos son *) chandrika, UserOperator rwang hpux.user.* /usr/sbin/useradd hpux.security.* /usr/sbin/usermod bdurant, prajessh NetworkOperator hpux.network.* /sbin/init.d/inetd luman Administrator hpux.* /opt/customcmd company.customauth 9.5 Configuración de HP-UX RBAC 169 9.5.1 Configuración de las funciones La configuración de las funciones para los usuarios es un proceso que consta de dos pasos: 1. 2. Cree las funciones. Asigne las funciones a los usuarios o grupos. 9.5.1.1 Creación de las funciones El comando roleadm permite crear funciones y asignarlas a usuarios o grupos. Primero es necesario agregar funciones que no existan y, a continuación, asignar usuarios a dichas funciones. A continuación, se muestra la sintaxis del comando roleadm: roleadm add función [comentarios] | delete función | modify nombre_función_antiguo nombre_función_nuevo | assign usuario función | assign "&grupo" función | revoke usuario [función] | revoke "&grupo" [función] | list [user=nombre_usuario][role=nombre_función][sys] A continuación, se presenta una lista con una breve descripción de los argumentos del comando roleadm: add delete modify assign revoke list NOTA: Agrega la función a la lista de funciones del sistema en el archivo /etc/rbac/roles. Elimina la función de la lista de funciones del sistema en el archivo /etc/rbac/roles. Modifica los nombres de funciones en los tres archivos de base de datos relativos a funciones: /etc/rbac/roles, /etc/rbac/user_role y /etc/rbac/role_auth. Asigna una función a un usuario o grupo, y actualiza el archivo /etc/rbac/user_role. Revoca una función de un usuario o grupo, y elimina la entrada en el archivo /etc/rbac/user_role. Presenta una lista de las funciones válidas del sistema (sys) o las asignaciones de usuarios a funciones. Para obtener más información, consulte la página de manual de roleadm(1m). A continuación, se muestran dos ejemplos del comando roleadm que agregan funciones nuevas: # roleadm add UserOperator roleadm: added role UserOperator # roleadm add NetworkOperator roleadm: added role NetworkOperator 170 HP-UX Role-Based Access Control NOTA: Los archivos de configuración que se proporcionan por defecto con HP-UX RBAC contienen una única función preconfigurada: Administrator. Por defecto, la función Administrator se asigna a todas las autorizaciones del sistema HP-UX (hpux.*, *) y está asociada al usuario root. Una vez definidas las funciones válidas, puede asignarlas a uno o varios usuarios o grupos. Si intenta asignar a usuarios una función que no ha sido creada, aparecerá un mensaje de error que indica que la función no existe. 9.5.1.2 Asignación de las funciones a usuarios Separar la creación de funciones de la asignación de las mismas ofrece las siguientes ventajas: • Que sea necesario crear las funciones antes de asignarlas garantiza que se detecten los errores tipográficos al especificar los nombres de funciones durante el proceso de asignación de estas últimas. • Permite que usuarios distintos realicen cada tarea. Por ejemplo, no es necesario que el mismo usuario cree las funciones y las asigne. Una vez creadas las funciones válidas, utilice el comando roleadm para asignarlas a los usuarios adecuados, tal como se muestra en los siguientes ejemplos: # roleadm assign luman Administrator roleadm assign done in /etc/rbac/user_role # roleadm assign rwang UserOperator roleadm assign done in /etc/rbac/user_role Después de utilizar el comando roleadm assign para asignar funciones a usuarios, puede usar el comando roleadm list para comprobar que las funciones se han asignado correctamente. Por ejemplo: # roleadm list root: Administrator luman: Administrator rwang: UserOperator NOTA: HP-UX RBAC ofrece la posibilidad de agregar un usuario especial llamado DEFAULT a la base de datos /etc/rbac/user_role. Si se asigna una función al usuario DEFAULT, esta función se asignará a cualquier usuario que no exista en el sistema. 9.5 Configuración de HP-UX RBAC 171 9.5.1.3 Asignación de las funciones a grupos HP-UX RBAC también permite asignar funciones a grupos. Puede utilizar las opciones del comando roleadm que usan el valor usuario, por ejemplo, roleadm assign usuario función y roleadm revoke usuario función para administrar grupos y funciones. Para asignar y revocar grupos y funciones, así como obtener una lista de la información de grupos y funciones, utilice el comando roleadm insertando un signo et (&) al principio del valor de usuario y especificando este valor entre comillas. El valor de nombre de grupo y el signo et (&) deben especificarse con una secuencia de escape para ejecutar comandos del shell (shell escape) o entre comillas para que los pueda interpretar el comando roleadm. Por ejemplo: # roleadm assign "&nombre_grupo" función 9.5.2 Configuración de las autorizaciones El procedimiento para configurar autorizaciones se parece al procedimiento para crear y asignar funciones. No obstante, las autorizaciones contienen dos elementos: una operación y un objeto. El carácter comodín *, el objeto de uso más frecuente, es el objeto implícito utilizado si no se especifica un objeto al llamar al comando authadm. En muchos casos, el objeto se deja a propósito sin especificar para que la operación sea de aplicación a todos los objetos. A menudo se deja el objeto sin especificar para autorizaciones aplicables a comandos empaquetados, ya que puede resultar difícil determinar el destino de una acción a partir del nombre del comando. Un ejemplo de esta ambigüedad de los objetos es el comando /usr/sbin/passwd. El comando passwd se puede aplicar a diversos depósitos; por ejemplo, el archivo /etc/passwd, una tabla NIS y una entrada LDAP. No es posible determinar el objeto real en la línea de comandos, por lo que lo más fácil suele ser requerir que el usuario pueda utilizar la operación en todos los objetos. Por ejemplo: (hpux.security.passwd.change, *). NOTA: Se puede configurar un valor para el objeto por defecto. Por defecto, si no se especifica un objeto, HP-UX RBAC utilizará el carácter comodín * como objeto. No obstante, si ha configurado un valor para el parámetro RBAC_DEFAULT_OBJECT= en /etc/default/security, HP-UX RBAC utilizará como el objeto por defecto este valor en lugar del carácter comodín *. El comando authadm permite modificar la información de autorizaciones en las bases de datos de HP-UX RBAC. La sintaxis de authadm es parecida a la de roleadm. A continuación, se muestra la sintaxis del comando authadm: authadm add operación[objeto[comentarios]] | delete operación[objeto] | assign función operación[objeto] | revoke [role=nombre][operation=nombre[object=nombre]] | list [role=nombre][operation=nombre[object=nombre][sys] 172 HP-UX Role-Based Access Control A continuación, se presenta una lista con una breve descripción de los argumentos del comando authadm: add delete assign revoke list Agrega una autorización a la lista de autorizaciones válidas del sistema en el archivo /etc/rbac/auths. Elimina una autorización de la lista de autorizaciones válidas del sistema en el archivo /etc/rbac/auths. Asigna una autorización a una función y agrega una entrada en el archivo /etc/rbac/role_auth. Revoca una autorización de una función y actualiza el archivo /etc/rbac/role_auth. Presenta una lista de las autorizaciones válidas por sistema o función, así como una lista de las funciones asociadas a la operación especificada. IMPORTANTE: Al asignar una autorización que contenga el carácter asterisco (*), tenga en cuenta que debe especificar el carácter comodín entre comillas para evitar que el shell lo interprete, tal como se muestra en los siguientes ejemplos. A continuación, se muestran ejemplos de creación y asignación de autorizaciones basados en la Tabla 9-6: # authadm add 'company.customauth.*' authadm added auth: (company.customauth.*,*) # authadm assign Administrator 'company.customauth.*' authadm added auth for role Administrator Utilice el argumento list con el comando authadm para comprobar la asignación de autorizaciones. Por ejemplo: # authadm list Administrator: (hpux.*, *) (company.customauth.*, *) 9.5.3 Configuración de privilegios y autorizaciones adicionales relativos a comandos Es necesario definir los comandos adicionales que no se proporcionen en la configuración por defecto. Las autorizaciones necesarias para ejecutar los comandos deben existir ya y estar asignadas a una función. Si no ha realizado esto, el comando se configurará, pero no se autorizará correctamente a ningún usuario para utilizarlo. El comando cmdprivadm permite modificar la información de autorizaciones y privilegios de un comando. Este comando se utiliza de forma parecida a los comandos roleadm y authadm, pero únicamente permite agregar o eliminar autorizaciones y privilegios de comandos en la base de datos de privrun. A continuación, se muestra la sintaxis del comando cmdprivadm: cmdprivadm add cmd=nombre_de_ruta_completo_de_un_comando | nombre_de_ruta_completo_de_un_archivo |[op=operación]|[object=objeto] |[ruid=id_usuario_real]|[euid=id_usuario_efectiva] |[rgid=id_grupo_real]|[egid=id_grupo_efectiva] |[compartment=etiqueta_compartimento] 9.5 Configuración de HP-UX RBAC 173 |[privs=lista_privilegios_separados_por_comas] |[re-auth=nombre_servicio_pam] |[flags=lista_indicadores_separados_por_comas] cmdprivadm delete cmd=nombre_de_ruta_completo_de_un_comando | nombre_de_ruta_completo_de_un_archivo |[op=operación]|[object=objeto] |[ruid=id_usuario_real]|[euid=id_usuario_efectiva] |[rgid=id_grupo_real]|[egid=id_grupo_efectiva] |[compartment=etiqueta_compartimento] |[privs=lista_privilegios_separados_por_comas] |[re-auth=nombre_servicio_pam] |[flags=lista_indicadores_separados_por_comas] A continuación, se presenta una lista con una breve descripción de los dos argumentos principales del comando cmdprivadm: add delete Agrega información de autorizaciones de un comando (o archivo) a la base de datos /etc/rbac/cmd_priv. Elimina información de autorizaciones de un comando (o archivo) en la base de datos /etc/rbac/cmd_priv. En el siguiente ejemplo se ofrece una demostración de los argumentos más utilizados del comando cmdprivadm: # cmdprivadm add cmd=/opt/customcmd \ op=companyname.customcommand ruid=0 euid=0 flags=edit \ /opt/customcmd::(companyname.customcommand,*):0/0/-1/-1::::edit cmdprivadm added the entry to /etc/rbac/cmd_priv Como se ha mostrado en el ejemplo anterior, el archivo de base de datos cmd_priv contiene un campo para los valores de indicadores. Asegúrese de tener en cuenta el valor de cmdprivadm flags cuando configure información de autorizaciones y privilegios de un comando o archivo. El comando privrun reconoce un indicador definido, KEEPENV. Si el indicador KEEPENV está definido en el archivo cmd_priv para un comando concreto, no se anulará ninguna de las variables de entorno cuando privrun empaquete dicho comando. Respecto al comando privedit, puede especificar valores de indicadores para indicar si privedit puede modificar o no un archivo. Pueden especificarse valores de indicadores adicionales para indicar si privrun puede ejecutar un comando. A continuación, se muestran los valores de indicadores admitidos: flag=vacío o cualquier otro signo flag=edit flag=noexec 174 HP-UX Role-Based Access Control Indica que el archivo sólo se puede ejecutar y que no es posible modificarlo. Indica que el archivo se puede ejecutar y modificar. Este indicador está pensado para secuencias de comandos. Indica que el archivo no se puede ejecutar y sólo se puede modificar con privedit. NOTA: Para obtener información sobre todos los argumentos del comando cmdprivadm, consulte la página de manual de cmdprivadm(1M). La mayoría de los argumentos son opcionales y se rellenan con valores por defecto razonables, si no se especifica nada. NOTA: Para modificar una entrada existente en el archivo /etc/rbac/cmd_priv, primero debe eliminar la entrada y, a continuación, agregar la versión actualizada. Si utiliza cmdprivadm para eliminar entradas, los argumentos actúan como filtros. Por ejemplo, al especificar el comando cmdprivadm delete op=foo se eliminan todas las entradas con la operación foo. Como resultado, cuando utilice cmdprivadm para eliminar entradas, asegúrese de que especifica suficientes argumentos para identificar de forma exclusiva las entradas que desea eliminar. 9.5.4 Configuración de HP-UX RBAC con privilegios expresos Las aplicaciones se comunican con los recursos del sistema mediante llamadas del sistema, lo que permite que el sistema operativo tenga acceso a estos recursos. Determinadas llamadas del sistema requieren privilegios elevados especiales para que la aplicación tenga acceso al sistema operativo y al hardware del sistema. Antes de que estuvieran disponibles los privilegios expresos, UID=0 era suficiente como privilegio elevado especial para determinadas llamadas del sistema. Si UID no estaba definido en 0, la llamada del sistema se denegaba y se devolvía un error de aplicación. HP-UX RBAC (y, en concreto, el comando empaquetador privrun) permite que usuarios distintos de root adquieran el nivel de privilegios especiales o UID=0 necesarios para ejecutar determinadas aplicaciones. Además de proporcionar UID=0 a un usuario distinto de root en circunstancias concretas para que pueda ejecutar una aplicación específica, HP-UX RBAC también puede utilizar los privilegios expresos para ejecutar aplicaciones con privilegios adicionales, pero sin UID=0. Puede utilizar HP-UX RBAC para configurar comandos que se ejecuten con sólo un conjunto seleccionado de privilegios y con distintos conjuntos de privilegios para usuarios diferentes, todo sin UID=0. Por ejemplo, es posible que un administrador necesite ejecutar el comando foobar con diversos privilegios, y que un usuario normal necesite bastantes menos privilegios para ejecutar foobar. Considere los privilegios expresos como «claves de comprobación del control del acceso a llamadas del sistema». En lugar de comprobar si UID=0, la llamada del sistema comprueba si existe un privilegio específico. Estos privilegios expresos permiten «bloquear» llamadas del sistema y controlar el acceso de las aplicaciones al sistema operativo y los recursos de hardware. Asimismo, al dividir los privilegios en privilegios expresos, las aplicaciones no necesitan todos los privilegios para ejecutarse: sólo un privilegio específico o un conjunto concreto de privilegios. En caso de que un proceso de una aplicación ejecutado con un conjunto concreto de privilegios se viera 9.5 Configuración de HP-UX RBAC 175 comprometido, los daños potenciales son mucho menores de lo que serían si el proceso se ejecutase con UID=0. NOTA: Para obtener más información sobre los privilegios expresos, consulte la página de manual de privileges(5). El comando cmdprivadm y la opción privs permiten configurar comandos para que privrun los empaquete y para que se ejecuten sólo con los privilegios especificados. A continuación, se muestra un ejemplo del comando cmdprivadm que configura el comando /usr/bin/ksh para que se ejecute con el privilegio compuesto BASICROOT y que requiere la autorización (hpux.adm.mount, *): # cmdprivadm add cmd=/etc/mount op=hpux.adm.mount object='*' privs=BASICROOT El comando cmdprivadm anterior crea una entrada en el archivo /etc/rbac/cmd_priv como sigue: #---------------------------------------------------------------------------------------# Command : Args :Authorizations :U/GID :Cmpt :Privs :Auth :Flags #----------------:--------:---------------------:------:-------:----------:------:------/etc/mount :dflt :(hpux.adm.mount,*) :/// :dflt :BASICROOT :dflt : Después de crear la entrada con cmdprivadm y con privrun para empaquetar el comando, /etc/mount se ejecutará con el privilegio elevado del privilegio expreso compuesto BASICROOT y sin UID=0, si el usuario tiene la autorización (hpux.adm.mount, *). Según se describe en la Sección 9.6.1, la opción del comando privrun -p busca coincidencias únicamente con las entradas del archivo de base de datos /etc/rbac/cmd_priv que tengan los privilegios especificados mediante la opción -p. Cuando especifique un privilegio con la opción privrun -p, tenga en cuenta que privrun buscará coincidencias con todas las entradas que contengan el privilegio especificado, incluidos grupos de privilegios y privilegios compuestos que contengan el privilegio especificado con la opción -p. El comando privrun se ejecutará según la primera coincidencia que encuentre en /etc/rbac/cmd_priv. A continuación, se muestra un ejemplo del comando privrun -p y una lista de las entradas de las cuales el comando buscará coincidencias en /etc/rbac/cmd_priv: El comando: # privrun -p MOUNT /etc/mount encuentra coincidencias con las siguientes entradas de /etc/rbac/cmd_priv: #--------------------------------------------------------------------------------------------------------# Command : Args :Authorizations :U/GID :Cmpt :Privs :Auth :Flags #----------------:--------:-------------------:------:------:---------------------------------:-----:----/etc/mount :dflt :(hpux.adm.mount,*) :/// :dflt :PRIV_CHOWN, MOUNT :dflt : /etc/mount :dflt :(hpux.*,nfs) :/// :dflt :MOUNT, PRIV_RTPRIO, PRIV_MLOCK :dflt : /etc/mount :dflt :(hpux.adm.*,*) :/// :dflt :BASICROOT :dflt : 176 HP-UX Role-Based Access Control NOTA: El comando privrun -p MOUNT /etc/mount encuentra coincidencias con el privilegio BASICROOT porque el privilegio simple MOUNT forma parte del privilegio compuesto BASICROOT predefinido. Para obtener más información sobre los privilegios simples y compuestos, consulte la página de manual de privileges(5). IMPORTANTE: La secuencia de las entradas del archivo /etc/rbac/cmd_priv es importante, ya que privrun se ejecutará según la primera coincidencia explícita que encuentre. En el ejemplo anterior, aunque se considera que las tres entradas son coincidencias con el comando privrun, este comando ejecutará la primera entrada. Tenga siempre presente la secuencia de las entradas cuando configure comandos y autorizaciones. El comando cmdprivadm agrega entradas al final del archivo /etc/rbac/cmd_priv. 9.5.5 Configuración de HP-UX RBAC con compartimentos HP-UX RBAC también puede utilizar compartimentos para configurar aplicaciones que se ejecuten en un compartimento concreto. Gracias a los compartimentos, puede crear particiones lógicas de un sistema en compartimentos de manera que un proceso no pueda comunicarse o tener acceso a recursos que se encuentren fuera de su compartimento (a menos que se configure una regla de compartimentos que lo permita). A continuación, se muestra un ejemplo del comando cmdprivadm que configura el comando /sbin/init.d/hpws_apache para que se ejecute sólo en el compartimento apache, definido mediante la regla de compartimentos /etc/cmpt/apache.rules: # cmdprivadm add cmd='/sbin/init.d/hpws_apache -a start' \ op=hpux.network.service.start object=apache compartment=apache El comando cmdprivadm anterior crea una entrada en el archivo /etc/rbac/cmd_priv, como sigue: #--------------------------------------------------------------------------------------------------------------# Command : Args :Authorizations :U/GID :Cmpt :Privs :Auth :Flags #-------------------------:--------:------------------------------------:--------------:--------:-------:------/sbin/init.d/hpws_apache :start :(hpux.network.service.start,apache) :/// :apache :dflt :dflt : Después de crear la entrada con cmdprivadm y con privrun para empaquetar el comando, los usuarios autorizados pueden ejecutar el comando /sbin/init.d/hpws_apache -start, que se ejecutará únicamente en el compartimento apache. La etiqueta de compartimento para el proceso cambia a apache, y las propiedades del proceso seguirán las reglas de compartimentos apache definidas. 9.5 Configuración de HP-UX RBAC 177 NOTA: Utilice sólo el comando cmdprivadm para configurar los compartimentos para comandos. No modifique el archivo de base de datos /etc/rbac/cmd_priv sin utilizar cmdprivadm. Para modificar una entrada existente en el archivo /etc/rbac/cmd_priv, primero debe eliminar la entrada y, a continuación, agregar la versión actualizada. Si utiliza cmdprivadm para eliminar entradas, los argumentos actúan como filtros. Por ejemplo, al especificar el comando cmdprivadm delete op=foo se eliminan todas las entradas con la operación foo. Como resultado, cuando utilice cmdprivadm para eliminar entradas, asegúrese de que especifica suficientes argumentos para identificar de forma exclusiva las entradas que desea eliminar. 9.6 Uso de HP-UX RBAC Esta sección explica cómo ejecutar los comandos privrun y privedit para utilizar HP-UX RBAC. 9.6.1 Uso del comando privrun para ejecutar aplicaciones con privilegios El comando privrun permite a un usuario ejecutar aplicaciones heredadas con privilegios diferentes, según las autorizaciones asociadas al usuario que realiza la llamada. El usuario llama al comando privrun, especificando la aplicación heredada como argumento de la línea de comandos. A continuación, privrun consulta la base de datos /etc/rbac/cmd_priv para determinar qué autorización es necesaria para ejecutar el comando con privilegios adicionales. Si el usuario dispone de la autorización necesaria, privrun llama al comando especificado después de cambiar su UID y/o GID tal como se especifica en la base de datos /etc/rbac/cmd_priv. A continuación, se muestra la sintaxis del comando privrun: privrun [opciones] comando [argumentos] | [-u id_usuario_efectiva|nombre_usuario] | [-g id_grupo_efectiva|nombre_grupo] | [-U id_usuario_real|nombre_usuario] | [-G id_grupo_real|nombre_grupo] | [-a (operación, objeto)] | [-c compartimento] | [-p privilegio[,privilegio,privilegio...]] | [-x] | [-v [-v]] | [-h] | [-t] La siguiente lista explica cada una de las opciones del comando privrun: -u 178 Busca sólo coincidencias con aquellas entradas que contengan la identificación de usuario efectiva (EUID) correspondiente a la EUID especificada o la EUID asociada al nombre de usuario. HP-UX Role-Based Access Control -g -U -G -a -c -p -x -v -h -t Busca sólo coincidencias con aquellas entradas que contengan la identificación de grupo efectiva (EGID) correspondiente a la EGID especificada o la EGID asociada al nombre de grupo. Busca sólo coincidencias con aquellas entradas que contengan la identificación de usuario real (RUID) correspondiente a la RUID especificada o la RUID asociada al nombre de usuario. Busca sólo coincidencias con aquellas entradas que contengan la identificación de grupo real (RGID) correspondiente a la RGID especificada o la RGID asociada al nombre de grupo. Busca sólo coincidencias con aquellas entradas que requieren la autorización especificada. La autorización se define como pares (operación-objeto) en el archivo de base de datos /etc/rbac/cmd_priv. La autorización especificada debe coincidir exactamente con la autorización presente en el archivo /etc/rbac/cmd_priv; no se admiten caracteres comodín. Busca coincidencias con el compartimento especificado en el archivo de base de datos /etc/rbac/cmd_priv. El compartimento especificado debe coincidir exactamente con el compartimento presente en el archivo /etc/rbac/cmd_priv. Busca coincidencias de los privilegios especificados con los privilegios presentes en el archivo de base de datos /etc/rbac/cmd_priv. Puede especificar varios privilegios. Si especifica varios privilegios, separe cada uno con una coma. Cuando especifique un privilegio con la opción privrun -p, tenga en cuenta que privrun buscará coincidencias con todas las entradas que contengan el privilegio especificado, incluidos grupos de privilegios y privilegios compuestos que contengan el privilegio especificado con la opción -p. El comando privrun se ejecutará según la primera coincidencia que encuentre en /etc/rbac/cmd_priv. Utiliza un modo de omisión explícita (fall-through) que modifica el comportamiento de privrun sólo cuando da error una comprobación de autorización o autenticación. En lugar de terminar con un mensaje de error, el comando de destino se ejecuta, pero sin los privilegios adicionales. El comando de destino se ejecuta como si el usuario lo ejecutara directamente sin privrun. Llama al comando privrun en modo detallado (verbose). El nivel de detalle aumenta si se especifican dos opciones -v. Con un nivel de detalle mayor se obtiene más información. Imprime la información de ayuda del comando privrun. Utiliza un modo de prueba que realiza todas las comprobaciones normales de autorizaciones y autenticaciones según los archivos de configuración para comprobar si la llamada deseada al comando privrun culminará con éxito. La única diferencia es que en lugar de ejecutar el comando, tras culminar la llamada con éxito, el comando privrun -t simplemente se devuelve. Esta opción permite obtener una vista preliminar de si una determinada llamada al comando privrun culminará con éxito. 9.6 Uso de HP-UX RBAC 179 A continuación, se muestra un ejemplo del uso más básico del comando privrun: empaquetar una aplicación heredada. En este caso, el comando ipfstat se ejecuta como un argumento del comando privrun a fin de ejecutarse según las autorizaciones asociadas al usuario que realiza la llamada: # privrun ipfstat Siempre que el usuario que ha iniciado la sesión disponga de la autorización necesaria, definida en el archivo /etc/rbac/cmd_priv, el comando empaquetador privrun ejecutará el comando heredado con los privilegios (UID y GID) definidos en la entrada /etc/rbac/cmd_priv. Pueden existir varias entradas para el mismo comando, potencialmente con distintas autorizaciones necesarias y distintos privilegios como resultado. En este caso, el comando privrun se repite secuencialmente en la base de datos /etc/rbac/cmd_priv, ejecutando el primer comando para el que el usuario está autorizado. En algunos casos, ésta puede no ser la situación ideal. Por ejemplo, puede haberse permitido que todos los usuarios ejecuten el comando passwd para cambiar su propia contraseña, pero si un administrador lo ejecuta, necesitarán los privilegios pertinentes para cambiar las contraseñas de otros usuarios. Si se muestra la entrada de todos los usuarios normales antes de la entrada de los administradores, dicha entrada se ejecutará primero, lo que puede impedir que los administradores ejecuten la versión con más privilegios. Para casos de este tipo, el comando privrun dispone de opciones que permiten a los usuarios especificar los privilegios deseados. Sólo se utilizarán las entradas que coincidan con los privilegios especificados (por ejemplo, UID). Si no hay entradas que coincidan con los privilegios deseados, el comando privrun devolverá un mensaje de error. A continuación, se muestra un ejemplo de una llamada al comando privrun que busca coincidencias únicamente con las entradas que tengan el número de UID efectiva definida en 0: # privrun -u 0 ipfstat NOTA: Para obtener más información sobre la utilización del comando privrun, consulte las páginas de manual de privrun(1M) y rbac(5). 9.6.1.1 HP-UX RBAC en los clústeres Serviceguard Serviceguard no admite el uso de HP-UX RBAC ni privrun para conceder acceso a los comandos de Serviceguard. Serviceguard versión A.11.16 aplica su propio control del acceso según la función mediante la especificación de directivas de control de acceso a través de archivos de configuración de clústeres y paquetes, proporcionando directivas compatibles con clústeres para las operaciones de Serviceguard. Debe utilizarse el mecanismo de Serviceguard para el control del acceso según la función de las operaciones de Serviceguard. Para obtener detalles adicionales sobre las directivas de 180 HP-UX Role-Based Access Control control de acceso de Serviceguard, consulte la versión más reciente del documento Managing Serviceguard. HP-UX RBAC se puede utilizar con comandos que no sean de Serviceguard en un clúster Serviceguard. Deben aplicarse las mismas reglas de HP-UX RBAC a todos los nodos del clúster. 9.6.2 Uso del comando privedit para modificar archivos con control de acceso aplicado El comando privedit permite a los usuarios autorizados modificar archivos que normalmente no podrían modificar debido a los permisos de acceso a los archivos o las listas de control de acceso (ACL). Después de llamar al comando e identificar el archivo que se desea modificar como argumento, el comando privedit consulta la base de datos /etc/rbac/cmd_priv, de igual manera que el comando privrun, para determinar la autorización necesaria a fin de modificar el archivo especificado. Si el usuario que realiza la llamada está autorizado para modificar el archivo, el comando privedit llama a un editor para abrir una copia del archivo. NOTA: Si se utiliza el comando privedit para llamar a un editor y modificar un archivo, el editor no se ejecuta con privilegios elevados. Dado que el editor al que llama privedit no se ejecuta con privilegios elevados, las acciones que se pretenda realizar, como secuencias de escape para ejecutar comandos del shell (shell escapes), se ejecutan con el conjunto de privilegios normales (no elevados) del usuario. Puede especificar qué editor va a utilizar privedit para modificar el archivo definiendo la variable de entorno EDITOR. Si no define la variable EDITOR, privedit utilizará el editor por defecto, vi. No es posible transmitir argumentos al editor mediante la línea de comandos de privedit. No obstante, el editor reconoce y admite variables de entorno específicas para el editor si las define antes de llamar al comando privedit. Utilice un nombre de archivo completo como argumento de privedit para identificar el archivo que desea modificar. Si no utiliza un nombre de archivo completo, privedit agrega el directorio de trabajo actual al principio del nombre del archivo que especifique. Con independencia de cómo especifique el archivo que desea modificar, todos los nombres de archivo están completos después de llamar al comando privedit. El comando privedit también reconoce y admite archivos que son enlaces simbólicos. El comando privedit puede modificar sólo un archivo cada vez. Si especifica varios nombres de archivo como argumentos de privedit, el comando privedit modificará el primer archivo especificado y omitirá los nombres de archivo posteriores. A continuación, se muestra la sintaxis del comando privedit: privedit [opción] nombre_archivo_completo | [-a (operación, objeto)] | [-v] | [-h] | [-t] | [-x] 9.6 Uso de HP-UX RBAC 181 A continuación, se presenta una lista con una breve descripción de las opciones del comando privedit: -a autorización -v -h -t -x Busca sólo coincidencias con las entradas del archivo /etc/rbac/cmd_priv que tengan la autorización especificada. Llama al comando privedit en modo detallado (verbose). Imprime la información de ayuda del comando privedit. Comprueba si el usuario dispone de la autorización necesaria para modificar el archivo e informa de los resultados. Si da error la comprobación de autorización, el archivo se modificará con los privilegios originales del usuario que ha realizado la llamada. A continuación, se muestra un ejemplo del uso del comando privedit para modificar el archivo /etc/default/security con la autorización específica de (hpux.sec.edit, secfile): # privedit -a "(hpux.sec.edit, secfile)" /etc/default/security NOTA: Recuerde que los valores de indicadores para cada entrada de la base de datos cmd_priv dictan si el comando privedit puede modificar o no un archivo. Para obtener más información sobre los indicadores y la utilización del comando privedit, consulte la sección «Configuración de privilegios y autorizaciones adicionales relativos a comandos» y la página de manual de privedit(1M). 9.6.3 Personalización de los comandos privrun y privedit con el conmutador ACPS La característica HP-UX RBAC permite personalizar cómo los comandos privedit y privrun comprueban las autorizaciones de los usuarios. El conmutador ACPS es una interface personalizable que proporciona respuestas a las aplicaciones que deben tomar decisiones relativas a autorizaciones. El archivo de configuración del conmutador ACPS, /etc/acps.conf, controla los siguientes aspectos del conmutador ACPS: • qué módulos se consultan para tomar decisiones relativas al acceso • la secuencia en que se consultan los módulos • las reglas de combinación de las respuestas de los módulos para devolver resultados a las aplicaciones Para obtener más información sobre el conmutador ACPS, consulte la Sección 9.3.1 y las páginas de manual de acps.conf(4), acps(3) y rbac(5). 182 HP-UX Role-Based Access Control 9.7 Solución de problemas de HP-UX RBAC A continuación, se presenta una lista de los mecanismos principales empleados para solucionar problemas y errores de HP-UX RBAC: • La utilidad rbacdbchk comprueba la sintaxis de las bases de datos de HP-UX RBAC. • El comando privrun -v muestra información adicional y pertinente. 9.7.1 La herramienta de sintaxis de bases de datos rbacdbchk Los errores más habituales son debidos a la modificación manual de las bases de datos de HP-UX RBAC, con el resultado de configuraciones no válidas sintácticamente o configuraciones incoherentes entre las bases de datos (por ejemplo, una función de /etc/rbac/user_role que no está definida en /etc/rbac/roles). Como ayuda en el diagnóstico de estos errores habituales, HP-UX RBAC incluye el comando rbacdbchk. Este comando lee las bases de datos de HP-UX RBAC e imprime advertencias relativas a entradas de configuración incorrectas o incoherentes que encuentre: # rbacdbchk [/etc/rbac/user_role] chandrika: UserOperator invalid user The value 'chandrika' for the Username field is bad. [/etc/rbac/cmd_priv] /opt/cmd:dflt:(newop,*):0/0//:dflt:dflt:dflt: invalid command: Not found in the system The value '/opt/cmd' for the Command field is bad. [Role in role_auth DB with no assigned user in user_role DB] Rebooter:(hpux.admin.*, *) [Invalid Role in user_role DB. Role 'UserOperator' assigned to user 'chandrika' does not exist in the roles DB] En un sistema configurado correctamente, el comando rbacdbchk no genera ninguna salida, lo que indica que no hay errores. 9.7 Solución de problemas de HP-UX RBAC 183 9.7.2 Información del comando privrun -v El segundo método para detectar problemas es ejecutar el comando privrun con la opción -v [modo detallado (verbose)]. En el modo detallado, el comando privrun proporciona información adicional sobre las entradas con las que el comando de entrada ha encontrado coincidencias y el estado de la comprobación de autorizaciones, así como otros datos pertinentes. En muchos casos, esta salida identifica el problema que causa que el comando privrun dé error. Especifique la opción -v varias veces para niveles adicionales de salida detallada. A continuación, se muestra un ejemplo de la salida de privrun -v con el comando ipfstat: # privrun -v /sbin/ipfstat privrun: user root intends to execute command /sbin/ipfstat privrun: input entry: '/sbin/ipfstat:dflt:(,):///:dflt:dflt::' privrun: found matching entry: '/sbin/ipfstat:dflt:(hpux.network.filter.readstat,*):0/0//:dflt:dflt::' privrun: passed authorization check privrun: attempting to set ruid/euid/rgid/egid to 0/0/-1/-1 privrun: current settings for ruid/euid/rgid/egid are 0/0/3/3 privrun: executing: /sbin/ipfstat 184 HP-UX Role-Based Access Control 10 Administración de la auditoría El propósito de la auditoría es el registro selectivo de sucesos para analizar y detectar infracciones de seguridad. Los datos de auditoría se registran en archivos de registro. De este modo, el sistema de auditoría hace de factor disuasivo contra los abusos del sistema y expone los puntos débiles de seguridad potenciales. El sistema de auditoría registra las instancias de acceso por parte de sujetos a objetos en el sistema; detecta los intentos (repetidos) de prescindir del mecanismo de protección y de cualquier mal uso de los privilegios; y ayuda también a exponer los puntos débiles potenciales de la seguridad en el sistema. Cuando un usuario inicia una sesión, se genera una sola identificación de sesión de auditoría denominada «etiqueta de auditoría» y se asocia al proceso del usuario. La etiqueta de auditoría permanece igual durante cada sesión de inicio de sesión. Aunque un usuario cambie de identidad en una sesión concreta, todos los sucesos se siguen registrando con la misma etiqueta de auditoría y su responsabilidad sigue recayendo en el nombre de usuario de inicio de sesión original. Los registros de auditoría se generan para sucesos selectivos del sistema relativos a la seguridad. Cada registro de auditoría contiene información sobre el suceso, como, por ejemplo, cuál fue el suceso, cuándo ocurrió, la identificación del usuario que lo produjo, la identificación del proceso que lo causó, etcétera. Los registros de auditoría se reúnen en archivos/registros de auditoría en formato binario. HP-UX Auditing System, incluido en la revisión HP-UX 11i v3, puede utilizar más de un subproceso de escritor para registrar datos en un archivo. Cada subproceso de escritor se escribe en un archivo. Esto ayuda a aumentar el rendimiento de los datos. Como consecuencia, un rastro de auditoría está presente en el sistema de archivos como un directorio con varios archivos de auditoría en él. Los registros del rastro de auditoría se comprimen para ahorrar espacio en disco. Cuando un proceso se audita por primera vez, se escribe un registro de identificación del proceso (PIR) en el rastro de auditoría que contiene información que se mantiene constante durante todo el proceso. Este registro incluye la identificación del proceso, la identificación del proceso primario, la etiqueta de auditoría, el número de identificación de usuario real, la identificación de grupo real, la identificación de usuario efectiva, la identificación de grupo efectiva, la lista de identificación de grupo, los privilegios retenidos, permitidos y efectivos, la identificación del compartimento y la identificación del terminal. El registro PIR se escribe sólo una vez por proceso y por rastro de auditoría. Este capítulo analiza los siguientes temas: • Auditoría de los componentes (Sección 10.1) • Auditoría del sistema (Sección 10.2) • Auditoría de los usuarios (Sección 10.3) 185 • Auditoría de los sucesos (Sección 10.4) • Rastros de auditoría (Sección 10.5) • Consulta de los archivos de registro de auditoría (Sección 10.6) • Autoauditoría (Sección 10.7) • Auditoría con HP-UX RBAC (Sección 10.8) 10.1 Auditoría de los componentes La característica de auditoría de HP-UX 11i contiene archivos de configuración, comandos y páginas de manual. Estos componentes se enumeran en las siguientes secciones: 10.1.1 Comandos La Tabla 10-1 contiene una breve descripción de cada comando de auditoría. Tabla 10-1 Comandos de auditoría Comando Descripción audevent Cambia o muestra el estado de los sucesos o las llamadas del sistema. audisp Muestra los registros de auditoría. audomon Define los parámetros de control y tamaño del archivo de auditoría. audsys Pone en marcha y detiene la auditoría; define y muestra información sobre el directorio o archivo de auditoría. userdbset Selecciona los usuarios que se van a auditar al especificar la opción AUDIT_FLAG=1. 10.1.2 Archivos de configuración de auditoría La Tabla 10-2 contiene una breve descripción de cada archivo de configuración asociado a la característica de auditoría. Tabla 10-2 Archivos de configuración de auditoría Archivo Descripción /etc/audit/audit.conf Archivo que contiene información predefinida sobre la clasificación del suceso. /etc/audit/ auditr_site.conf Archivo que contiene información específica del emplazamiento sobre la clasificación del suceso. /etc/default/security Archivo que contiene los valores de auditoría por defecto de todo el sistema. 186 Administración de la auditoría Tabla 10-2 Archivos de configuración de auditoría (continuación) Archivo Descripción /var/adm/userdb Base de datos que contiene información sobre auditoría por usuario. /etc/rc.config.d/ auditing Archivo que contiene información de configuración que dirige la auditoría para que comience cuando el sistema se reinicie. 10.1.3 Páginas de manual de auditoría La Tabla 10-3 contiene una breve descripción de cada página de manual asociada a la característica de auditoría. Tabla 10-3 Páginas de manual de auditoría Página de manual Descripción audevent(1M) Describe la funcionalidad y la sintaxis de audevent. audisp(1M) Describe la funcionalidad y la sintaxis de audisp. audomon(1M) Describe la funcionalidad y la sintaxis de audomon. audsys(1M) Describe la funcionalidad y la sintaxis de audsys. userdbset(1M) Describe la funcionalidad y la sintaxis de userdbset. audit.conf(4) Describe el archivo /etc/audit/audit.conf. audit(5) Aporta información preliminar sobre la auditoría de HP-UX. 10.2 Auditoría del sistema Los siguientes procedimientos permiten planificar, habilitar y supervisar la auditoría del sistema. 10.2.1 Planificación de la puesta en ejecución de la auditoría Para planificar la puesta en ejecución de la auditoría, dé los siguientes pasos: 1. 2. Determine los usuarios que va a auditar. Por defecto, se seleccionan todos los usuarios para la auditoría. Determine los sucesos o llamadas de sistema para auditar. Utilice el comando audevent para mostrar una lista de sucesos y llamadas de sistema que están seleccionados actualmente para auditoría. Los sucesos y las llamadas de sistema se pueden agrupar en perfiles. 3. Decida dónde desea colocar los archivos de registro de auditoría (rastros de auditoría) en el sistema. Para obtener más información sobre la configuración de los archivos de registro de auditoría, consulte la Sección 10.5. 10.2 Auditoría del sistema 187 4. Cree una estrategia para archivar y hacer una copia de seguridad de los archivos de auditoría. Los archivos de auditoría ocupan, a menudo, mucho espacio en disco y se pueden desbordar si no se planifica detenidamente la administración de los archivos. Utilice la opción -X con el comando audomon para automatizar el archivo. Para obtener información adicional sobre la administración y el rendimiento del sistema de auditoría que le puede ayudar a planificar la puesta en ejecución de la auditoría, consulte la Sección 10.2.5 y la Sección 10.2.6. 10.2.2 Habilitación de la auditoría Para habilitar la auditoría en el sistema, dé los siguientes pasos: 1. 2. Configure los usuarios que desea auditar utilizando el comando userdbset. Para obtener más información sobre la configuración de la auditoría para los usuarios, consulte la Sección 10.3. Configure los sucesos que desea auditar utilizando el comando audevent. Por ejemplo, para efectuar una auditoría según MySitePolicy, escriba el siguiente comando: # audevent -P -F -r MySitePolicy MySitePolicy se debe definir en el archivo /etc/audit/audit_site.conf. Utilice el comando audevent sin opciones para mostrar una lista de sucesos y llamadas de sistema que están configurados actualmente para auditoría. Para obtener más información sobre la configuración de la auditoría para los sucesos, consulte la Sección 10.4. 3. Defina los parámetros del argumento audevent en el archivo/etc/rc.config.d/ auditing para habilitar el sistema de auditoría a fin de conservar los parámetros de configuración actuales cuando el sistema se reinicia. Por ejemplo, para conservar los parámetros configurados en el paso 2, defina los parámetros del modo siguiente: AUDEVENT_ARGS1 = –P –F –r MySitePolicy 4. Inicie el sistema de auditoría y defina los rastros de auditoría utilizando el comando audsys: #audsys -n -c archivo_auditoría_principal -s 1000 5. Configure los archivos de registro y los parámetros de conmutación de archivos de registro en el archivo /etc/rc.config.d/auditing. Dé los pasos siguientes: a. Defina PRI_AUDFILE en el nombre del archivo de registro de auditoría principal. b. Defina PRI_SWITCH en el tamaño máximo del archivo de registro de auditoría principal (en KB), en el que el registro de auditoría conmuta a un archivo de registro auxiliar. c. Defina SEC_AUDFILE en el nombre del archivo de registro auxiliar. d. Defina SEC_SWITCH en el tamaño máximo del archivo de registro de auditoría secundario (en KB). 188 Administración de la auditoría Para obtener más información sobre cómo configurar los archivos de registro de auditoría principal y auxiliar, consulte la Sección 10.5. 6. Inicie el demonio audomon si todavía no se ha iniciado. El demonio audomon supervisa el crecimiento del rastro de auditoría actual y conmuta a un rastro de auditoría alternativo siempre que sea necesario. Por ejemplo: #audomon -p 20 -t 1 -w 90 -X "/usr/local/bin/rcp_audit_trail hostname" 7. 8. Para obtener más información sobre la configuración del demonio audomon, consulte la Sección 10.5.2. Defina el parámetro del argumento audomon en el archivo /etc/rc.config.d/ auditing para conservar la configuración actual entre los reinicios del sistema. Defina el indicador AUDITING en 1 en el archivo /etc/rc.config.d/auditing para habilitar al sistema de auditoría para que comience automáticamente cuando se inicie el sistema. 10.2.3 Deshabilitación de la auditoría Para deshabilitar la auditoría en el sistema, dé los siguientes pasos: 1. Detenga la auditoría del sistema con el siguiente comando: #audsys -f 2. 3. Defina el indicador AUDITING en 0 en el archivo /etc/rc.config.d/auditing para evitar que el sistema de auditoría comience cuando se reinicie el sistema. (Opcional) Para detener el demonio audomon, escriba: # kill `ps -e | awk '$NFS~ /audomon/ {print $1}'` Utilice este paso sólo si desea reconfigurar el demonio audomon. Para reconfigurar y reiniciar el demonio audomon, dé el paso 6 y el paso 7 según se describe en la Sección 10.2.2. 10.2.4 Supervisión de los archivos de auditoría Para consultar, supervisar y administrar los archivos de auditoría, dé los siguientes pasos: 1. Visualice los archivos de registro de auditoría con el comando audisp: # audisp archivo_auditoría Para obtener detalles sobre cómo utilizar el comando audisp, consulte la sección «Consulta de los archivos de registro de auditoría». 2. 3. Defina los argumentos de supervisión del archivo de registro de auditoría en el archivo /etc/rc.config.d/auditing. Defina los mismos valores utilizados en el paso 2. (Opcional) Detenga la auditoría del sistema con el siguiente comando: #audsys -f 10.2 Auditoría del sistema 189 4. (Opcional) Defina el indicador AUDIT en 0 en el archivo /etc/rc.config.d/ auditing para que no se inicie el sistema de auditoría en el próximo reinicio del sistema. 10.2.5 Consideraciones sobre el rendimiento La auditoría aumenta la sobrecarga del sistema. Cuando el rendimiento sea motivo de preocupación, sea selectivo a la hora de elegir los sucesos y los usuarios para auditar. Esto puede contribuir a atenuar el impacto de la auditoría en el rendimiento. 10.2.6 Pautas para administrar el sistema de auditoría Utilice las siguientes pautas cuando administre el sistema: • Compruebe los registros de auditoría según la directiva de seguridad. Los archivos de auditoría en línea deben conservarse durante al menos 24 horas y todos los registros de auditoría almacenados sin conexión deben preservarse durante un mínimo de 30 días. • Examine el archivo de registro de auditoría en busca de actividades poco comunes, como: inicios de sesión nocturnos, errores de inicio de sesión, errores de acceso a los archivos del sistema e intentos infructuosos para llevar a cabo tareas relacionadas con la seguridad. • Archive diariamente para evitar que el archivo de auditoría se desborde. • Revise cada cierto tiempo los sucesos seleccionables actuales, sobre todo después de instalar revisiones nuevas de HP-UX, ya que es frecuente que se incorporen llamadas del sistema nuevas a las revisiones nuevas. • Revise cada cierto tiempo la selección de usuarios para auditar. • No siga ningún modelo ni programa en cuanto a la selección de sucesos o usuarios. • Defina las pautas que han de seguirse en el emplazamiento. Implique a los usuarios y a la dirección en el establecimiento de dichas pautas. • Si se prevé un volumen alto de datos de auditoría, configure los rastros de auditoría en un volumen lógico que conste de varios discos físicos y varias tarjetas de E/S. Utilice la opción -N con el comando audsys para dividir el rastro de auditoría en varios archivos. 10.3 Auditoría de usuarios Por defecto, cuando la auditoría del sistema está activada, el estado de auditoría es activado para todos los usuarios. Se somete automáticamente a auditoría a los usuarios nuevos agregados al sistema. Puede supervisar qué usuarios están utilizando los sistemas HP-UX mediante la auditoría. Para cambiar los usuarios que se auditan, elija una de las siguientes opciones: 190 Administración de la auditoría • Auditar todos los usuarios. Por defecto, el estado de auditoría está activado para todos los usuarios cuando el sistema de auditoría está activado. Se somete automáticamente a auditoría a los usuarios nuevos agregados al sistema. Si la auditoría está desactivada para todos los usuarios, defina AUDIT_FLAG=1 en el archivo /etc/default/security. • No auditar ningún usuario. Para desactivar el sistema de auditoría para todos los usuarios, dé los siguientes pasos: 1. Compruebe qué usuarios se están auditando ya. Para ello, dé los siguientes pasos: a. Compruebe el valor AUDIT_FLAG en el archivo /etc/default/ security. b. Compruebe el valor AUDIT_FLAG guardado en la base de datos de usuario con el siguiente comando: # userdbget -a AUDIT_FLAG 2. • Defina AUDIT_FLAG=0 en el archivo /etc/default/security. Auditar usuarios específicos. Para configurar la auditoría de usuarios específicos, dé los siguientes pasos: 1. Anule la selección de la auditoría para todos los usuarios definiendo AUDIT_FLAG=0 en el archivo /etc/default/security. 2. Configure la auditoría para un usuario específico con el siguiente comando: # /usr/sbin/userdbset -u nombre_usuario AUDIT_FLAG=1. Si el sistema de auditoría aún no está habilitado, utilice el comando audsys -n para iniciar el sistema de auditoría. Los cambios de auditoría surten efecto en el siguiente inicio de sesión del usuario. 10.4 Auditoría de sucesos Un suceso es una acción con consecuencias para la seguridad, por ejemplo, crear un archivo, abrir un archivo o iniciar una sesión en el sistema. Puede auditar los sucesos en un sistema HP-UX para mejorar la seguridad al detectar posibles infracciones. Sin embargo, cuantos más sucesos elija auditar más recursos del sistema se utilizan y mayor es el impacto en el rendimiento del sistema. La arquitectura de seguridad debe determinar los sucesos que se van a auditar en función de las necesidades empresariales y de las disposiciones gubernamentales correspondientes. El comando audevent se utiliza para especificar las actividades del sistema (sucesos susceptibles de auditoría) que se van a auditar. Los sucesos susceptibles de auditoría se clasifican en perfiles y categorías de sucesos para ofrecer una configuración más sencilla. 10.4 Auditoría de sucesos 191 Una vez seleccionados un perfil o categoría de sucesos, se seleccionan todas las llamadas de sistema y sucesos de autoauditoría asociados al perfil o la categoría del suceso. Cuando el sistema de auditoría está instalado, se proporciona en el archivo /etc/ audit/audit.conf un conjunto por defecto de información relativa a la clasificación de sucesos. También se pueden definir en el archivo /etc/audit/audit_site.conf perfiles y clasificaciones específicas del emplazamiento adicionales. NOTA: HP recomienda auditar los siguientes sucesos como mínimo: • suceso admin • suceso login • suceso de autoauditoría moddac • execv, execve • suceso pset Estos sucesos están predefinidos como el perfil básico en el archivo /etc/audit/ audit.conf. Configure los sucesos que desea auditar antes de activar el sistema de auditoría. La sintaxis del comando audevent es la siguiente: # audevent [opciones] Las siguientes opciones son de uso frecuente con el comando audevent: Tabla 10-4 Opciones del comando audevent Opciones de audevent Descripción -e suceso Especifica un suceso para registrar -F Registra operaciones de sucesos infructuosas -l Muestra una lista de los tipos de sucesos y las llamadas de sistema asociadas -P Registra operaciones de sucesos fructuosas -r perfil Especifica el perfil de sucesos para registrar. Los perfiles se definen en el archivo /etc/audit/audit.conf. -S o -s llamada_sistema Cambia el estado de auditoría de llamadas de sistema o de sucesos ninguna opción Muestra el estado actual de las llamadas de sistema o sucesos seleccionados Para configurar admin, login y modaccess para auditoría, escriba el siguiente comando: # audevent -P -F -e admin -e login -e moddac Para configurar los sucesos en el perfil básico de auditoría, utilice el siguiente comando: 192 Administración de la auditoría # audevent -P -F -r basic Audit Success y Audit Failure se han definido como tipos de sucesos para supervisar llamadas de sistema o sucesos fructuosos e infructuosos. Ésta es la selección mínima recomendada de tipos de sucesos para trabajar con un sistema. Generalmente, se escribe un registro sólo si se han seleccionado para auditoría el suceso y el usuario que pone en marcha el suceso. No obstante, se prevé que algunos registros se puedan seguir generando en el momento en que el usuario inicia y termina una sesión, aunque el usuario no esté seleccionado para auditoría. Esos registros se consideran información accesible en el sistema que se basa en la selección de sucesos en lugar de en la selección de usuarios. Los programas que realizan autoauditoría pueden tomar la decisión arbitraria de hacer caso omiso de la selección de usuarios, pero esto no se recomienda para autoauditoría. 10.5 Rastros de auditoría Todos los datos de auditoría se graban en un rastro de auditoría. De modo regular, un rastro de auditoría está presente en el sistema de archivos como un directorio y está formado por uno o varios archivos de registro. El número de archivos de registro depende de cuántos subprocesos de escritor se han utilizado para registrar datos. Y sólo el directorio completo, pero no uno o varios de los archivos del directorio, representa datos significativos para mostrar o analizar. En oposición al modo regular, también se suministra un modo de compatibilidad en la revisión de HP-UX 11i versión 3 para generar el rastro de auditoría que está presente en forma de archivo individual. El modo de compatibilidad se admite sólo para compatibilidad retroactiva y quedará anticuado en cualquier revisión futura posterior a HP-UX 11i versión 3. Para obtener más información, consulte la página de manual de audsys(1M). En cualquier momento en que el sistema de auditoría se habilite, deberá estar presente, al menos, un rastro de auditoría. El nombre del rastro y diversos atributos del mismo se pueden especificar utilizando audsys. Cuando el rastro actual sobrepasa una capacidad predefinida (su límite de conmutación de archivo de auditoría: Audit File Switch - AFS), o cuando el sistema de archivos de auditoría donde está ubicado se aproxima a una capacidad predefinida (su límite de conmutación de espacio de archivos: File Space Switch - FSS), el subsistema de auditoría emite un mensaje de advertencia. Cuando se llega al límite de conmutación del archivo de auditoría (AFS) o bien al límite de conmutación de espacio de archivos (FSS) del rastro de auditoría actual, el subsistema de auditoría busca un rastro auxiliar. Si hay uno disponible, el registro se conmuta al rastro auxiliar. Si no se ha especificado ningún rastro auxiliar, el subsistema de auditoría crea un rastro de auditoría nuevo con el mismo nombre básico pero distinta extensión de marca de hora y comienza a registrarlo ahí. Audomon toma también una línea de comandos para ejecutar tras una conmutación satisfactoria del rastro de auditoría a fin de procesar el último rastro de auditoría. Según las necesidades específicas del emplazamiento, el proceso puede implicar la copia de seguridad de datos, el archivo, el traslado fuera del emplazamiento, la limpieza o la generación de informes sobre los 10.5 Rastros de auditoría 193 datos. Si el comando auto-switch es infructuoso, se envían mensajes de advertencia para solicitar la acción del administrador apropiada y el rastro de auditoría actual sigue aumentando. NOTA: 1. Con HP-UX 11i versión 3, ya no es necesario especificar manual y explícitamente el rastro de auditoría para conmutación. El sistema de auditoría realiza la conmutación automática de rastros de auditoría. 2. Si la autoconmutación da error y el rastro de auditoría actual sigue aumentando de tamaño y rebasa el límite FSS, puede alcanzarse un parámetro definido por el sistema: minfree. Al llegar a este punto, todas las acciones susceptibles de auditoría se suspenden para los usuarios normales. Restaure el funcionamiento del sistema archivando los datos de auditoría o especificando un nuevo archivo de registro de auditoría en un sistema de archivos con espacio. 3. Si hay otras actividades que consumen espacio del sistema de archivos o el sistema de archivos elegido no dispone de suficiente espacio para el límite de conmutación de archivo de auditoría (AFS) indicado, se puede alcanzar el límite de conmutación de espacio de archivos (FSS) antes que el límite AFS. Elija un sistema de archivos con suficiente espacio para alojar los archivos de registro de auditoría. Para determinar el tamaño de los sistemas de archivos, utilice el comando bdf. HP recomienda configurar los archivos de registro al menos con los siguientes parámetros: • El sistema de archivos debe tener disponibles más de 5000 KB para el archivo de registro de auditoría principal. • Debe tener disponible más del 20 % del espacio total para archivos. El demonio de control de desbordamiento de auditoría, audomon, vigila atentamente el aumento de tamaño de los archivos de registro de auditoría para garantizar que no se pierda ningún dato de auditoría. 10.5.1 Configuración de rastros de auditoría Utilice el comando audsys para especificar el archivo de registro de auditoría principal y el archivo de registro de auditoría auxiliar (opcional) para reunir datos de auditoría: #audsys -n -N2 -c mi_rastro_auditoría -s 5000 Este ejemplo inicia el sistema de auditoría y registra los datos en el directorio mi_rastro_auditoría, utilizando dos subprocesos de escritor. El límite de conmutación del archivo de registro (AFS) se ha definido en 5000 KB. Para obtener más información, consulte la página de manual de audsys(1M) . 194 Administración de la auditoría 10.5.2 Supervisión y administración de rastros de auditoría El demonio de control de desbordamiento de auditoría (audomon) permite supervisar y administrar rastros de auditoría. El demonio audomon se inicia automáticamente cuando se inicia la auditoría en el momento del inicio del sistema (AUDITING=1 en /sbin/init.d/auditing). Un usuario con privilegios también puede iniciar el demonio audomon. Una vez iniciado, el demonio audomon supervisa la capacidad del rastro de auditoría actual y el sistema del archivos en el que se aloja. A continuación, se muestra un comando de ejemplo que se utiliza para iniciar el demonio audomon: # audomon -p 20 -t 1 -w 90 -X "/user/local/bin/rcp_audit_trail nombre_host" Este comando inicia el demonio audomon con el siguiente comportamiento, en el supuesto de que el sistema de auditoría se haya iniciado con el siguiente comando: # audsys -n -N 2 -c /var/.audit/my_trail -s 500 • audomon se pone en suspensión al menos en intervalos de un minuto • Cuando el tamaño del rastro de auditoría actual alcanza los 4500 Kb, o el sistema de archivos en el que se aloja el rastro de auditoría se llena al 80 %, el demonio audomon detiene el registro de datos en el rastro de auditoría actual y lo inicia en uno nuevo: /var/.audit/my_trail.aaaammddHHMM • Una vez realizada la conmutación al rastro de auditoría nuevo, el demonio audomon llama al siguiente comando: sh -c "/usr/local/bin/rcp_audit_trail nombre_host /var/.audit/my_trail" Esta secuencia de comandos es específica del emplazamiento y se puede utilizar para copiar el rastro de auditoría antiguo, realizar una copia de seguridad de los datos o funciones de archivo, y crear informes de auditoría. Para obtener más información sobre el demonio audomon, consulte la página de manual de audomon(1). ATENCIÓN: • Si el sistema de archivos que contiene el rastro de auditoría está lleno, cualquier proceso que no sea del usuario root y que genere datos de auditoría se bloqueará en el kernel. Asimismo, si un proceso que no sea del usuario root se conecta al terminal del sistema, dicho proceso se interrumpirá. Para obtener más detalles, consulte la sección WARNINGS de la página de manual de audsys(1M). • No coloque rastros de auditoría en el sistema de archivos raíz. SUGERENCIA: HP recomienda escribir una secuencia de comandos para acometer una estrategia a largo plazo para el almacenamiento de datos y transmitirla al demonio audomon mediante la opción -X. El comando audomon toma los siguientes argumentos: 10.5 Rastros de auditoría 195 El porcentaje mínimo de espacio que queda en el sistema de archivos que contiene el archivo de registro de auditoría principal antes de que el sistema de auditoría conmute al archivo de registro auxiliar. El valor por defecto de fss es del 20 %. -t Intervalo de reacción mínimo, en minutos, en el frecuencia_límite_conmutación que el sistema imprime mensajes de advertencia para los límites de conmutación del archivo de registro de auditoría en la consola. El valor por defecto de frecuencia_límite_conmutación es de 1 minuto. -w advertencia El porcentaje de espacio del archivo de registro de auditoría utilizado o el espacio libre mínimo del sistema de archivos utilizado después del cual se envían mensajes de advertencia a la consola. El valor por defecto de advertencia es del 90 %. -X comando El comando se ejecuta cada vez que el demonio audomon conmuta al rastro de auditoría. -p fss Para obtener más información, consulte la página de manual de audomon(1M). 10.6 Consulta de los archivos de registro de auditoría La auditoría acumula muchos datos. Utilice el comando audisp para seleccionar los datos que desea consultar: #/usr/sbin/audisp rastro_auditoría Las siguientes opciones están disponibles con el comando audisp: -f -p -c llamada_sistema -t -s -u nombre_usuario -l nombre_terminal -e nombre_suceso > nombre_archivo 196 Administración de la auditoría Muestra sólo los sucesos infructuosos. Muestra sólo los sucesos fructuosos. Muestra la llamada de sistema seleccionada. Muestra los sucesos que ocurrieron después del tiempo dado. Muestra los sucesos que ocurrieron antes del tiempo dado. Muestra información de un usuario específico. Muestra información de un terminal específico. Muestra información de un suceso dado. Escribe la salida en un archivo especificado. Preparar el registro para su consulta puede llevar unos cuantos minutos en el caso de archivos de registro de auditoría grandes. Al consultar los datos de auditoría, tenga en cuenta las siguientes anomalías: • Es posible que parezca que los datos de auditoría son inexactos cuando los programas que realizan llamadas del sistema susceptibles de auditoría facilitan parámetros incorrectos. Los datos de auditoría muestran lo que el programa de usuario ha transmitido al kernel. Por ejemplo, al llamar a la llamada del sistema kill() sin ningún parámetro, se generan valores imprevisibles en la sección de parámetros del registro de auditoría. • Es posible que, en el caso de las llamadas del sistema que acepten nombres de archivo como argumentos, la información sobre dispositivos e inodos no se registre correctamente. El valor será -1 si la llamada no se completa satisfactoriamente. • La auditoría del superusuario mientras cambian los parámetros de llamada del sistema o de sucesos generará un registro de auditoría largo. Por ejemplo, al agregar un tipo de suceso para auditarlo, se generará un registro para cada tipo de suceso y llamada del sistema que se haya habilitado para auditoría, no sólo para el tipo de suceso nuevo en proceso de adición. 10.6.1 Ejemplos de uso del comando audisp Los siguiente ejemplos muestran la información de auditoría que se muestra con el comando audisp: • Mostrar la salida del archivo de registro en la pantalla: #/usr/sbin/audisp rastro_auditoría • Dirigir la salida del archivo de registro hacia /tmp/mylogoutput: #/usr/sbin/audisp rastro_auditoría > /tmp/mylogoutput • Mostrar sólo los sucesos fructuosos: #/usr/sbin/audisp -p rastro_auditoría • Consultar las actividades cuyo propietario es el usuario joe: #/usr/sbin/audisp -u joe rastro_auditoría • Mostrar actividades en el terminal ttypa: #/usr/sbin/audisp -l ttypa rastro_auditoría • Mostrar sólo los sucesos de inicio de sesión: #/usr/sbin/audisp -e login rastro_auditoría 10.6 Consulta de los archivos de registro de auditoría 197 10.7 Autoauditoría Ciertos procesos llaman a una serie de acciones susceptibles de auditoría. Para disminuir la cantidad de datos de registro de auditoría reunidos y proporcionar notaciones más significativas en los archivos de registro de auditoría, parte de dichos procesos se programan para suspender la auditoría de las acciones a las que llaman y generar una entrada de registro de auditoría que describa el proceso acaecido. Los procesos programados de esta forma se llaman procesos de autoauditoría; el uso de estos procesos racionaliza los datos de registro de auditoría. NOTA: La lista de procesos de autoauditoría varía de un sistema a otro. Procesos de autoauditoría Los siguientes procesos presentan capacidad de autoauditoría: chfn chsh login newgrp passwd audevent audisp audsys audusr init lpsched fbackup ftpd remshd rlogind telnetd privrun privedit roleadm authadm cmdprivadm Cambia la entrada finger Cambia el shell de inicio de sesión La utilidad de inicio de sesión Cambia el grupo efectivo Cambia la contraseña Selecciona los sucesos que han de auditarse Muestra los datos de auditoría Inicia o detiene el sistema de auditoría Selecciona los usuarios que han de auditarse Cambia los niveles de ejecución y el cierre de sesión de los usuarios Programa solicitudes de la impresora de líneas Copia de seguridad flexible de archivos Demonio de protocolo de transferencia de archivos Demonio de servidor de shell remoto Demonio de servidor de inicio de sesión remoto Demonio de servidor telnet Llama a una aplicación heredada.1 Permite a los usuarios autorizados modificar archivos.1 Modifica la información de las funciones.1 Modifica la información relativa a la autorización.1 Modifica los privilegios y las autorizaciones de comandos.1 La mayor parte de los programas de autoauditoría generan datos de auditoría en una sola categoría de sucesos. Por ejemplo, el comando audsys genera datos de auditoría en el suceso admin. Algunos comandos generan datos de auditoría en varias categorías 1. Para obtener más información, consulte el Capítulo 9. 198 Administración de la auditoría de sucesos. Por ejemplo, el comando init genera datos de auditoría en los sucesos login y admin. 10.8 Auditoría con HP-UX RBAC Cada uno de los comandos privrun, privedit, roleadm, authadm y cmdprivadm de HP-UX RBAC genera registros de auditoría. Los siguientes atributos se incluyen en cada registro de auditoría: • Nombre de usuario • UID (Número de identificación de usuario) • Función • Autorizaciones (operación, objeto) • Fecha del suceso • Resultado del suceso (fructuoso o infructuoso) 10.8.1 Auditoría en función de los criterios de HP-UX RBAC y el archivo /etc/rbac/aud_filter HP-UX RBAC versión B.11.23.02 y posteriores admite el uso de un archivo de filtros de auditoría para identificar los criterios específicos de HP-UX RBAC para auditar. Puede crear un filtro de archivos denominado /etc/rbac/aud_filter para identificar específicamente las funciones, operaciones y objetos para los que generar registros de auditoría. Los registros de auditoría sólo se generan si los atributos de un proceso coinciden con las tres entradas (función, operación y objeto) que se encuentran en el archivo /etc/rbac/aud_filter. Si la función de un usuario y su autorización asociada no están en el archivo o no coinciden de manera explícita, no se generan registros de auditoría específicos para funciones-a-autorizaciones. Los usuarios autorizados pueden modificar el archivo /etc/rbac/aud_filter con un editor de texto y especificar la función y la autorización que se han de auditar. Cada autorización se específica en la forma de pares de operación y objeto. Todas las autorizaciones asociadas a una función se deben especificar en una sola entrada. Sólo se puede especificar una autorización por función en cada línea; no obstante, se admite el comodín *. A continuación, se muestran las entradas admitidas y el formato del archivo /etc/rbac/aud_filter: función, operación, objeto La siguiente lista explica cada una de las entradas del comando /etc/rbac/aud_filter: función operación Cualquier función válida definida en /etc/rbac/roles. Si se ha especificado *, la operación puede obtener acceso a todas las funciones. La operación específica que se puede llevar a cabo en un objeto. Por ejemplo, hpux.printer.add es la operación para agregar una 10.8 Auditoría con HP-UX RBAC 199 objeto impresora. Asimismo, hpux.printer.* es la operación para agregar o eliminar una impresora. Si se ha especificado *, la operación puede obtener acceso a todas las operaciones. El objeto al que el usuario puede tener acceso. Si se ha especificado *, la operación puede obtener acceso a todos los objetos. A continuación, se muestran entradas de ejemplo de /etc/rbac/aud_filter que especifican cómo generar registros de auditoría para la función de SecurityOfficer con la autorización de (hpux.passwd, /etc/passwd) y para la función de Administrator con autorización para llevar a cabo la operación hpux.printer.add en todos los objetos. SecurityOfficer, hpux.passwd, /etc/passwd Administrator, hpux.printer.add, * NOTA: Utilice un editor, por ejemplo, vi para modificar directamente el archivo /etc/rbac/aud_filter. Los comandos de administración de HP-UX RBAC no interactúan con /etc/rbac/aud_filter. 10.8.2 Procedimiento para auditar los criterios de HP-UX RBAC Los siguientes pasos describen cómo configurar un proceso de auditoría para auditar los criterios de HP-UX RBAC en el sistema: 1. Configure el sistema para auditar sucesos Passed (fructuosos) o Failed (infructuosos) para los sucesos de Administrator con el siguiente comando: # audevent -PFe admin 2. Configure la ubicación y el nombre del archivo de salida de auditoría y habilite la auditoría del sistema con el siguiente comando: # audsys -n -c /tmp/aud.out -s 2048 3. Ejecute un comando de HP-UX RBAC, por ejemplo: # /usr/sbin/authadm add newauth 4. Abra el archivo de salida de auditoría y busque los registros en el comando authadm, con el siguiente comando: # audisp /tmp/aud.out |fgrep authadm NOTA: Para obtener más información y ampliar conocimientos sobre la auditoría de los sistemas HP-UX, consulte las páginas de manual de audit(5), audevent(1M), audsys(1M) y audisp(1M). 200 Administración de la auditoría A Sistemas de confianza Este apéndice describe cómo configurar y administrar un sistema de confianza. Este apéndice analiza los siguientes temas: • Configuración de un sistema de confianza (Sección A.1) • Auditoría de un sistema de confianza (Sección A.2) • Administración de las contraseñas y del acceso en un sistema de confianza (Sección A.3) • Pautas para realizar copias de seguridad y recuperaciones de confianza (Sección A.4) NOTA: El uso de los sistemas de confianza se ha desaprobado. HP-UX 11i v3 es la última revisión que admite este producto. A.1 Configuración de un sistema de confianza Para configurar un sistema de confianza, dé los siguientes pasos: 1. Establezca una directiva de seguridad global que sea apropiada para el lugar de trabajo. 2. Inspeccione todos los archivos existentes en el sistema para detectar riesgos para la seguridad y erradique dichos riesgos. Reviste importancia dar este paso antes de realizar la conversión a un sistema de confianza. En lo sucesivo, examine los archivos regularmente o cuando sospeche la existencia de una infracción de seguridad. Consulte la Sección 6.9 del Capítulo 6. 3. Realice una copia de seguridad del sistema de archivos para recuperar posteriormente los archivos de usuario. También debe realizar una copia de seguridad en cinta del archivo /etc/passwd antes de la conversión. Puede utilizar cualquier programa de copia de seguridad y recuperación suministrado por HP-UX para la copia de seguridad y recuperación iniciales. No obstante, después de implantar las características de seguridad, utilice sólo los comandos fbackup y frecover, que conservan y restauran las listas de control de acceso (ACL). Para obtener más información, consulte las páginas de manual de fbackup(1M) y frecover(1M). 4. Convierta el sistema en un sistema de confianza. La conversión en un sistema de confianza es una operación reversible. Para convertir el sistema en un sistema de confianza, ejecute la interface HP SMH y haga clic en System Security Policies. Aparecerá el mensaje Convert to trusted system. Es posible que obtenga un mensaje de confirmación. Presione la letra Y para comenzar el proceso de conversión. A.1 Configuración de un sistema de confianza 201 Al convertir un sistema en un sistema de confianza, el programa de conversión realiza las siguientes acciones: • Crea una nueva base de datos protegida de contraseñas en /tcb/files/ auth/. • Traslada las contraseñas cifradas desde el archivo /etc/passwd a la base de datos protegida de contraseñas y sustituye el campo de contraseña de /etc/passwd por un asterisco (*). • Obliga a todos los usuarios a utilizar contraseñas. • Crea un número de identificación de auditoría para cada usuario. Este número de identificación sigue siendo el mismo en todo el historial de un usuario. Lo identifica de forma exclusiva. Tenga en cuenta que la identificación de auditoría está en proceso de desaprobación junto con los sistemas de confianza en HP-UX 11i v3, sustituyéndose por la etiqueta de auditoría asignada de forma dinámica cada vez que un usuario inicia correctamente una nueva sesión. Para obtener más información sobre las etiquetas de auditoría, consulte el Capítulo 10. • Activa el indicador de auditoría para todos los usuarios existentes. • 5. 6. Convierte los archivos de entrada at, batch y crontab para utilizar la identificación de auditoría del ejecutor del comando. Compruebe que los archivos de auditoría están en el sistema: 1. Utilice swlist -l fileset para obtener una lista de los conjuntos de archivos instalados. Busque el conjunto de archivos denominado SecurityMon , el cual contiene los archivos del programa de auditoría. Para abreviar la lista, escriba el siguiente comando: # swlist -l fileset | grep Security 2. Asimismo, compruebe que también existen los siguientes archivos (no se especifican en SecurityMon): • /etc/rc.config.d/auditing contiene los parámetros para controlar la auditoría. Este archivo se puede modificar con la interface SMH o manualmente con un editor de texto. • /sbin/rc2.d/S760auditing es el archivo de comandos que pone en marcha la auditoría. No modifique este archivo. Después de realizar la conversión del sistema en un sistema de confianza, puede utilizar el subsistema de auditoría y ejecutar el sistema HP-UX como un sistema de confianza. NOTA: En HP-UX 11i v3, también se puede utilizar un sistema de auditoría en un sistema sin convertirlo en un sistema de confianza. Para obtener más información, consulte el Capítulo 10. 202 Sistemas de confianza Si tiene que volver a convertir un sistema de confianza en un sistema estándar, ejecute la interface HP SMH y utilice la ventana Auditing and Security. Las pantallas Audited Events, Audited System Calls y Audited Users ofrecen en su totalidad una opción para invertir la conversión. SUGERENCIA: Una manera de saber si el sistema se ha convertido en un sistema de confianza consiste en buscar los archivos /tcb. Si existen, se dispone de un sistema de confianza. A.2 Auditoría de un sistema de confianza Auditar un sistema de confianza se parece mucho a la auditoría de un sistema no convertido en el modo de confianza. Para obtener información sobre la auditoría, consulte el Capítulo 10. La única diferencia radica en cómo seleccionar los usuarios para auditar. En un sistema no convertido en el modo de confianza, el comando userdbset permite especificar los usuarios que han de auditarse. Consulte las páginas de manual de userbdset(1M) y userdb(4). El atributo asociado es AUDIT_FLAG y se describe en la página de manual de security(4). En un sistema de confianza, el comando audusr especifica los usuarios que han de auditarse. Para obtener más información, consulte la página de manual de audusr(1M). A.3 Administración de las contraseñas y del acceso en un sistema de confianza La contraseña es el símbolo más importante de identificación del usuario individual. El sistema la utiliza para autenticar a un usuario y franquearle el acceso al sistema. Puesto que las contraseñas son susceptibles a su divulgación cuando se utilizan, almacenan o conocen, deben mantenerse en secreto en todo momento. Para obtener información sobre las contraseñas, consulte también el Capítulo 2. Responsabilidades del administrador de la seguridad El responsable de la seguridad y todos los usuarios del sistema deben compartir la responsabilidad de la seguridad de las contraseñas. Al responsable de la seguridad le competen las siguientes funciones relacionadas con la seguridad: • Crear contraseñas provisionales para los usuarios nuevos. Esta contraseña debe utilizarse durante el primer inicio de sesión. El sistema, después de comprobar este número, le pide al usuario nuevo que escriba una contraseña nueva. • Mantener los permisos de acceso apropiados en todos los archivos del sistema, incluidos el archivo estándar de contraseñas, /etc/passwd, y los archivos de la base de datos de confianza, /tcb/files/auth/*. • Fijar la caducidad de las contraseñas. • • Manejar la reutilización de contraseñas. Eliminar o anular las contraseñas caducadas y los números de identificación y las contraseñas de los usuarios que ya no sean aptos para obtener acceso al sistema. A.2 Auditoría de un sistema de confianza 203 Responsabilidades del usuario Todos los usuarios deben atenerse a las siguientes reglas: • Recordar la contraseña y guardarla en secreto en todo momento. • Cambiar la contraseña inicial de inmediato y, en lo sucesivo, modificar la contraseña cada cierto tiempo. • Informar de los cambios de estado y de las presuntas infracciones de seguridad que se produzcan. • Asegurarse de que nadie les observa mientras escriben la contraseña. • Elegir una contraseña distinta para cada equipo en el que tengan una cuenta. A.3.1 Archivos de contraseñas Un sistema de confianza mantiene varios archivos de contraseñas: el archivo /etc/ passwd y los archivos de la base de datos protegida de contraseñas /tcb/files/ auth/ (consulte la sección «La base de datos /tcb/files/auth/»). Cada usuario tiene una entrada en dos archivos y el comando login examina ambas entradas para autenticar las solicitudes de inicio de sesión. Todas las contraseñas se cifran inmediatamente después de la entrada y se almacenan en el archivo /tcb/files/auth/carácter_usuario/nombre_usuario, el archivo de la base de datos protegida de contraseñas. En las comparaciones sólo se utilizan contraseñas cifradas. Ninguno de los dos archivos de contraseñas debe contener ningún campo vacío (nulo). En los sistemas de confianza, se hace caso omiso del campo de contraseña del archivo /etc/passwd. Un usuario con un campo de contraseña vacío tendrá que definir una contraseña al iniciar una sesión en un sistema de confianza. Sin embargo, incluso con esta medida de protección existe la posibilidad de que se produzca una infracción de la seguridad, porque se requerirá a cualquier usuario que inicie una sesión en esta cuenta que defina la contraseña. No modifique directamente los archivos de contraseñas. Utilice la interface HP SMH o los comandos useradd, userdel o usermod para modificar las entradas de los archivos de contraseñas. A.3.1.1 El archivo /etc/passwd Un sistema de confianza utiliza el archivo /etc/passwd para identificar a un usuario en el momento de iniciar una sesión. Dicho archivo contiene una entrada para cada cuenta del sistema HP-UX. Cada entrada consta de siete campos separados por dos puntos. Una entrada típica del archivo /etc/passwd en un sistema de confianza presenta este aspecto: robin:*:102:99:Robin Hood,Rm 3,x9876,408-555-1234:/home/robin:/usr/bin/sh Los campos contienen los siguientes datos (enumerados en orden de aparición) separados por dos puntos: 204 Sistemas de confianza 1. El nombre de usuario (inicio de sesión), que consta de un máximo de ocho caracteres. (En el ejemplo: robin.) 2. El campo de contraseña no utilizado, que está ocupado por un asterisco en lugar de por una contraseña real. (*) 3. El número de identificación de usuario, un número entero que varía entre 0 y MAXINT-1, igual a 2.147.483.646 o 231 -2. (102) 4. La identificación de grupo, un número entero guardado en el archivo /etc/group que varía entre 0 y MAXINT-1. (99) 5. El campo de comentario, que se utiliza para escribir información de identificación, como el nombre completo del usuario, la ubicación y los números de teléfono. Por motivos históricos, este campo también se llama gecos. (Robin Hood,Rm 3,x9876,408-555-1234) 6. El directorio inicial, es decir, el directorio de inicio de sesión original del usuario. (/home/robin) 7. El nombre de ruta del programa de inicio de sesión, que se ejecuta cuando el usuario inicia una sesión. (/usr/bin/sh) El usuario puede cambiar el campo de comentario (el quinto campo) con el comando chfn y el nombre de ruta del programa de inicio de sesión (el séptimo campo) con el comando chsh. El administrador del sistema configura el resto de los campos. El número de identificación de usuario debe ser único. Para obtener más información, consulte las páginas de manual de chfn(1), chsh(1), passwd(1) y passwd(4). El usuario puede modificar la contraseña de la base de datos protegida de contraseñas con el comando passwd. A.3.1.2 La base de datos /tcb/files/auth/ Cuando un sistema se convierte en un sistema de confianza, la contraseña cifrada, que en general se ubica en el segundo campo del archivo /etc/passwd, se traslada a la base de datos protegida de contraseñas y un asterisco le guarda el sitio en el archivo /etc/passwd. Los archivos de la base de datos protegida de contraseñas se almacenan en la jerarquía /tcb/files/auth/. Los perfiles de autenticación de usuario se almacenan en estos directorios en función de la inicial del nombre de cuenta del usuario. Por ejemplo, el perfil de autenticación del usuario david se almacena en el archivo /tcb/files/ auth/d/david. En los sistemas de confianza, los elementos de seguridad principales se guardan en la base de datos protegida de contraseñas, cuyo acceso es exclusivo de los superusuarios. Las entradas de datos de contraseñas deben definirse con la interface HP SMH. Los datos de contraseñas que no se definan para un usuario adoptarán por defecto los valores por defecto del sistema almacenados en el archivo /tcb/files/auth/ system/default. Responsabilidades del usuario 205 La base de datos protegida de contraseñas contiene muchas entradas de autenticación del usuario. Consulte la página de manual de prpwd(4) para ampliar la información sobre dichas entradas, que incluyen: • El nombre de usuario y el número de identificación de usuario • Una contraseña cifrada • El propietario de la cuenta • La autenticación de inicio para permitir que usuarios especificados puedan iniciar el sistema; consulte la página de manual de security(4). • El número de identificación de auditoría y el indicador de auditoría del usuario (define si la auditoría está activada o no) • El intervalo de tiempo mínimo entre los cambios de contraseña • La longitud máxima de la contraseña • La fecha de caducidad de la contraseña (después de la cual debe cambiarse la contraseña) • La duración de la contraseña (a su conclusión, la cuenta se bloquea) • La fecha de las últimas modificaciones fructuosas e infructuosas de la contraseña • La hora (fecha) ineludible a la que caduca la cuenta • El tiempo máximo que se permite entre inicios de sesión antes de bloquear la cuenta • El número de días previos a la fecha de caducidad en que se mostrará un mensaje de advertencia • La generación de contraseñas por parte del usuario o por parte del sistema • La comprobación de denominación común de contraseñas para evitar que se utilicen como contraseñas palabras demasiado comunes o términos muy conocidos • El tipo de contraseñas generadas por el sistema • Las contraseñas nulas • El número de identificación de usuario de la última persona que cambió la contraseña (si no es el propietario de la cuenta) • Los intervalos durante los cuales esta cuenta se puede utilizar para iniciar una sesión • La identificación del terminal o los sistemas host remotos asociados a los últimos inicios de sesión fructuosos e infructuosos en esta cuenta • El número de intentos de inicio de sesión infructuosos (se borra al producirse un inicio de sesión fructuoso) • El número máximo de intentos de inicio de sesión permitidos antes de bloquear la cuenta 206 Sistemas de confianza A.3.2 Selección y generación de contraseñas En los sistemas de confianza, se dispone de las siguientes opciones para generar contraseñas: • Contraseñas generadas por el usuario. Se facilita una opción de filtrado de las contraseñas para comprobar el uso de nombres de inicio de sesión y grupo, permutaciones de nombres de inicio de sesión y grupo, y palíndromos. Una contraseña nueva y la antigua deben diferir en al menos tres caracteres. • Contraseñas generadas por el sistema sólo mediante la combinación de letras. • Contraseñas generadas por el sistema mediante la combinación de letras, números y caracteres de puntuación. • Contraseñas generadas por el sistema mediante la combinación de sílabas pronunciables sin sentido. Se pueden definir las opciones de generación de contraseñas para un sistema. También se pueden definir opciones de generación de contraseñas en función de cada usuario, lo que anula la definición por defecto del sistema. Se debe definir al menos una opción de generación de contraseñas para cada usuario. Si un usuario dispone de más de una opción, cuando dicho usuario cambie la contraseña, se mostrará un menú de generación de contraseñas. A.3.3 Caducidad de las contraseñas Se puede habilitar o deshabilitar la caducidad de las contraseñas para cada usuario. Cuando la caducidad de las contraseñas está habilitada, el sistema conserva los siguientes datos en relación con la contraseña: Intervalo mínimo El intervalo mínimo obligatorio que debe transcurrir entre los cambios de contraseña. Esto impide que un usuario cambie la contraseña y, acto seguido, dé marcha atrás para evitar tener que memorizar la contraseña nueva. Fecha de caducidad Una fecha después de la cual un usuario debe cambiar la contraseña en el momento del inicio. Fecha de advertencia La fecha anterior a la fecha de caducidad en que se emitirá un mensaje de advertencia. Duración Intervalo al final del cual la cuenta asociada a la contraseña se bloquea si la contraseña no se cambia. Una vez bloqueada una cuenta, el único con capacidad para desbloquearla es el administrador del sistema. Una vez desbloqueada la cuenta, antes de que el usuario pueda iniciar una sesión en ella, la contraseña aún debe cambiarse. Responsabilidades del usuario 207 Los valores de fecha de caducidad y duración se restablecen al cambiar una contraseña. Un valor de duración igual a cero indica que las contraseñas no caducan; en este caso, los demás valores de caducidad de contraseñas no tienen ningún efecto. A.3.4 Historial y reutilización de las contraseñas Se puede habilitar la característica de historial de contraseñas en todo el sistema con el fin de disuadir a los usuarios de que reutilicen contraseñas anteriores. La comprobación de la reutilización de contraseñas se habilita definiendo el atributo PASSWORD_HISTORY_DEPTH en el archivo /etc/default/security: PASSWORD_HISTORY_DEPTH=n donde n es un número entero que indica el número de contraseñas anteriores para comprobar. Cuando un usuario cambia la contraseña, esta nueva contraseña se coteja con las n contraseñas anteriores empezando por la actual. Si el sistema encuentra una coincidencia, rechazará la contraseña nueva. Si n es igual a 2, se impide que los usuarios alternen entre dos contraseñas. Para obtener más información, consulte las páginas de manual de passwd(1) y security(4). A.3.5 Control del acceso en función del tiempo En los sistemas de confianza, se pueden precisar para cada usuario horas del día y días de la semana en los que se le permite iniciar una sesión. Cuando un usuario intente iniciar una sesión fuera del tiempo de acceso permitido, el suceso se registrará (si se ha habilitado la auditoría para los intentos de inicio de sesión fructuosos e infructuosos) y el inicio de sesión se interrumpirá. Los superusuarios pueden iniciar una sesión fuera del tiempo de acceso permitido, pero el suceso se registra. El margen permitido de tiempos de acceso se almacena en la base de datos protegida de contraseñas para los usuarios y se puede definir con la interface HP SMH. Los usuarios que tengan una sesión iniciada cuando se agote un margen no serán desconectados. A.3.6 Control del acceso en función del dispositivo En los sistemas de confianza, se puede especificar una lista de usuarios con permiso de acceso para cada puerto MUX y puerto DTC dedicado. Cuando la lista asociada a un dispositivo es nula, se permite el acceso a todos los usuarios. La información de acceso a los dispositivos se almacena en la base de datos de asignación de dispositivos, /tcb/files/devassign, que contiene una entrada para cada dispositivo de terminal que contenga el sistema de confianza. Un campo de la entrada enumera los usuarios con permiso de acceso al dispositivo. La información de inicio de sesión en los terminales de un sistema de confianza se almacena en la base de datos de control de los terminales, /tcb/files/ttys, que facilita los siguientes datos para cada uno de ellos: 208 Sistemas de confianza • El nombre de dispositivo • • El número de identificación de usuario del último usuario que haya iniciado con éxito una sesión en el terminal La hora del último inicio de sesión fructuoso en el terminal • La hora del último inicio de sesión infructuoso en el terminal • El número de inicios de sesión infructuosos y consecutivos antes de producirse el bloqueo del terminal El indicador del bloqueo del terminal • Los superusuarios son los únicos que pueden obtener acceso a estas bases de datos de los sistemas de confianza y definir las entradas con HP SMH. Consulte las páginas de manual de devassign(4) y ttys(4). A.3.7 Manejo de las bases de datos de un sistema de confianza Las rutinas de las bibliotecas descritas en las siguientes páginas de manual se pueden utilizar para obtener acceso a la información que contienen los archivos de contraseñas y otras bases de datos de los sistemas de confianza: getdvagent(3) Maneja las entradas de dispositivo contenidas en el archivo /tcb/ files/devassign. getprdfent(3) Maneja los valores por defecto del sistema contenidos en el archivo /tcb/files/auth/system/default. getprpwent(3) Obtiene las entradas de contraseñas del archivo /tcb/files/ auth/. getprtcent(3) Maneja la base de datos de control de acceso a terminales: /tcb/ files/ttys. getpwent(3C) Obtiene las entradas de contraseñas del archivo /etc/passwd. putpwent(3C) Escribe las entradas del archivo de contraseñas en el archivo /etc/passwd. getspwent(3X) Obtiene las entradas de contraseñas del archivo /tcb/files/ auth/ (a efectos de compatibilidad retroactiva). putspwent(3X) Escribe las entradas de contraseñas en el archivo /tcb/files/ auth/ (a efectos de compatibilidad retroactiva). putprpwnam(3) Escribe las entradas del archivo de contraseñas en el archivo /tcb/files/auth/. A.4 Pautas para realizar copias de seguridad y recuperaciones de confianza A continuación, se indican algunas pautas para realizar copias de seguridad y recuperaciones en sistemas de confianza: • Utilice sólo los comandos fbackup y frecover para realizar copias de seguridad y recuperar archivos de forma selectiva. Los comandos fbackup y frecover son los únicos que retienen las listas de control de acceso (ACL). Utilice la opción -A de estos comandos cuando realice una copia de seguridad de los archivos y los A.4 Pautas para realizar copias de seguridad y recuperaciones de confianza 209 recupere para utilizarlos en sistemas que no apliquen listas ACL. Para obtener más información, consulte las páginas de manual de fbackup(1M) y frecover(1M). 210 • Si prevé recuperar los archivos en otro sistema, asegúrese de que el nombre de usuario del propietario y el nombre de grupo concuerdan en ambos sistemas. • No olvide que los medios de copia de seguridad contienen datos confidenciales. Restrinja el acceso a los medios a los casos de necesidad probada. • Etiquete las cintas de copia de seguridad y almacénelas en lugar seguro. El almacenamiento fuera de las instalaciones ofrece la máxima seguridad. Guarde los archivos durante un mínimo de seis meses y, al cumplirse el plazo, recicle los medios. • Aplique los procedimientos adecuados para limpiar los medios magnéticos y eliminar los datos antes de volver a utilizarlos. • Realice copias de seguridad incrementales diarias y copias de seguridad completas semanales. Sincronice el programa de copia de seguridad con el flujo de información de la empresa. Por ejemplo, si se actualiza una base de datos importante todos los viernes, podría programar la copia de seguridad semanal para los viernes por la noche. • Si en el momento debido debe hacerse una copia de seguridad de todos los archivos, pida a todos los usuarios que cierren su sesión antes de proceder a realizar la copia. De todas formas, fbackup le avisa si se cambia un archivo mientras se realiza la copia de seguridad. • Examine el archivo de registro de las copias de seguridad más recientes para identificar los problemas que se produzcan durante la copia de seguridad. Defina permisos restrictivos para el archivo de registro de copia de seguridad. • El comando frecover permite sobrescribir un archivo. No obstante, el archivo retiene los permisos de acceso y las listas ACL definidos al realizar la copia de seguridad del archivo. • Debe probar de antemano el proceso de recuperación a fin de asegurarse de que puede recuperar por completo los datos en el caso de producirse una emergencia. • Al recuperar archivos procedentes de otro equipo, es posible que tenga que ejecutar el comando chown para definir el número de identificación de usuario y la identificación de grupo para el sistema en el que residan ahora dichos archivos, si el usuario y el grupo no existen en el sistema nuevo. Si los archivos se recuperan en un sistema nuevo que no tenga el grupo especificado, los archivos asumen la propiedad de grupo de la persona que ejecute el comando frecover. Si los nombres de propietario y grupo tienen significados diferentes en sistemas diferentes, los resultados de la recuperación pueden ser inesperados. • Los errores de alimentación no deberían conllevar la pérdida de archivos. No obstante, si alguien informa de la pérdida de un archivo después de un error de alimentación, búsquelo en el directorio /lost+found antes de restaurarlo a partir de una cinta de copia de seguridad. Sistemas de confianza • Para comprobar el contenido de la cinta desde la que se vaya a realizar la recuperación, utilice la opción -I del comando frecover para obtener una vista preliminar del índice de archivos de la cinta. No obstante, tenga en cuenta que la copia de seguridad mantiene intactos los permisos existentes de un sistema de archivos; frecover impide la lectura del archivo si los permisos de acceso del archivo lo prohíben. • No recupere nunca ningún archivo crítico, como /etc/passwd, ni los que contenga /tcb/files. En su lugar, restaure el archivo en un directorio temporal (no utilice /tmp) y conceda a este directorio permisos drwx------, lo que impide que nadie más lo utilice. Compare los archivos restaurados con los archivos que hayan de reemplazarse. Efectúe los cambios necesarios. • La auditoría no se activa automáticamente después de recuperar el sistema. Asegúrese de que la habilita con el comando audsys. A.4 Pautas para realizar copias de seguridad y recuperaciones de confianza 211 212 B Otros productos de seguridad Este apéndice menciona otros productos de seguridad que hay disponibles para HP-UX. Puede descargar estos productos gratuitamente desde el almacén de software de HP en http://www.hp.com/go/softwaredepot. B.1 HP-UX HIDS El sistema de detección de intrusos en sistemas host HP-UX HIDS (HP-UX Host Intrusion Detection System) permite a los administradores de la seguridad supervisar, detectar y responder a ataques de forma proactiva en la red, como sigue: • Protege tanto contra marcos hipotéticos de ataque existentes como contra algunos marcos hipotéticos todavía no conocidos. Busca pautas que indiquen infracciones de seguridad o un mal uso mediante el análisis de la información sobre la actividad del sistema obtenida de diversas fuentes de datos. Algunas de estas actividades ilícitas son: un pirata informático que intenta entrar en el sistema o interrumpirlo, actividades subversivas de «infiltrados» o alguien que intenta propagar un virus. • Detecta mejoras de productos de la seguridad local en los sistemas host integrantes de la red. Controla automáticamente cada sistema host configurado en la red a fin de detectar indicios de intrusiones no deseadas y potencialmente perjudiciales. De no existir este control, puede producirse la pérdida de la disponibilidad de sistemas clave o verse comprometida la integridad del sistema. HP-UX HIDS avisa de muchos tipos de ataques. • Proporciona una protección continua tanto contra marcos hipotéticos de ataque existentes como contra marcos hipotéticos no conocidos, a diferencia de otros sistemas de detección de intrusos. Utiliza plantillas de detección para detectar a los intrusos. Estas plantillas de detección constituyen los bloques componentes que permiten identificar los tipos básicos de actividades no autorizadas en el sistema o de ataques contra la seguridad que sufren habitualmente las redes de las empresas. • Notifica actividades sospechosas que puedan ser preludio de un ataque. Por el contrario, otros sistemas de detección de intrusos se basan totalmente en un análisis iniciado por el operador de los archivos de registro del sistema. Normalmente, el operador analiza estos archivos del sistema al final del día. Este retardo en el análisis del ataque permite un tiempo considerable para que el sistema sufra daños. B.2 Parches de seguridad HP-UX Software Assistant (SWA) es una herramienta basada en la línea de comandos que consolida y simplifica la administración de parches y la administración de boletines de seguridad en los sistemas HP-UX. La herramienta SWA es una novedad de las revisiones de HP-UX a partir de enero de 2007, sustituyendo a Security Patch Check (SPC), y es la utilidad cuyo uso recomienda HP para mantenerse actualizado en relación con los boletines de seguridad publicados por HP para el software HP-UX. B.1 HP-UX HIDS 213 HP ofrece parches de software actualizados para los problemas de seguridad conocidos que posibilitan el acceso no autorizado al directorio raíz del sistema. Para obtener más información, consulte el Capítulo 1. B.3 HP-UX IPFilter HP-UX IPFilter es un servidor de seguridad de sistemas que filtra los paquetes IP para controlar el flujo de los paquetes que entran y salen de un equipo. Actúa como defensa de la seguridad al reducir el número de puntos vulnerables en un equipo. B.4 HP-UX Secure Shell HP-UX Secure Shell utiliza «hashing» para garantizar la integridad de los datos e incluye características para la creación de túneles seguros, el reenvío a través de puertos y un agente SSH para mantener las claves privadas en el cliente. HP-UX Secure Shell permite iniciar sesiones seguras en otro sistema a través de la red y ejecutar comandos en un sistema remoto, así como trasladar archivos de un sistema a otro. HP-UX Secure Shell proporciona un conjunto de comandos que sustituyen a comandos no seguros, como rlogin, rsh, rcp, ftp y telnet. Asimismo, HP-UX Secure Shell protege la red contra los siguientes riesgos para la seguridad: Simulación de direcciones IP Técnica empleada para obtener acceso no autorizado a los equipos. Un intruso envía mensajes a un equipo con una dirección IP que indica que el mensaje procede de un host de confianza. Escucha furtiva Búsqueda de contraseñas, números de tarjetas de crédito o secretos comerciales en un sistema. Piratería Técnica empleada para apropiarse de la comunicación por la red de manera que el agresor pueda inspeccionar y modificar los datos transmitidos entre las partes comunicantes. 214 Otros productos de seguridad Glosario 3DES Norma de cifrado triple de datos. Algoritmo de cifrado de bloques de claves simétricas que cifra los datos tres veces, con una clave de 56 bits distinta cada vez (168 bits para claves). 3DES resulta adecuado para el cifrado masivo de datos. ACL Sigla en inglés de Access Control List (Lista de control de acceso). Lista o base de datos que define los recursos a los que pueden tener acceso los usuarios u otros principales, así como el tipo de acceso permitido. AES Sigla en inglés de Advanced Encryption Standard (Norma de cifrado avanzado). Algoritmo de cifrado de bloques de claves simétricas. HP-UX IPSec admite AES con una clave de 128 bits. AES resulta adecuado para el cifrado masivo de datos. AH Sigla en inglés de Authentication Header (Encabezado de autenticación). AH ofrece la autenticación en el sistema con integridad de los datos y puede proporcionar protección contra reproducciones. AH forma parte de la serie de protocolos IPsec. ataque «man-in-the-middle» (hombre en el medio) Ver ataque de terceros. ataque de denegación de servicio Ataque que impide que un sistema responda a los paquetes de red, por lo que el sistema no puede atender las solicitudes. Los ataques de denegación de servicio pueden producirse inundando un sistema vulnerable de solicitudes falsas que consuman gran cantidad de recursos. Estos ataques se combinan a menudo con la simulación de host para impedir que el host que sufre el ataque (el host con la dirección IP que el simulador está asumiendo) participe en el intercambio entre el simulador y el sistema al que está intentando tener acceso el simulador. ataque de desbordamiento del búfer Método para atacar un sistema que consiste en provocar errores de proceso o en hacer que un proceso ejecute código malintencionado. El ataque suele conseguirse desbordando un búfer de entrada en la pila. Esto ocasiona una infracción de la memoria u otro tipo de error que provoca que el proceso se interrumpa o que ejecute código malintencionado. Ver también ataque de desbordamiento del búfer en la pila. ataque de desbordamiento del búfer en la pila Método de ataque a un sistema que causa que un proceso ejecute código malintencionado. El ataque suele conseguirse desbordando un búfer de entrada en la pila para insertar código malintencionado y modificando posteriormente el puntero de la pila para ejecutar dicho código. Ver también ataque de desbordamiento del búfer. ataque de terceros En un ataque de terceros, el agresor intercepta paquetes entre las dos partes agredidas, A y B. A y B creen que están intercambiando mensajes entre sí, pero en realidad están intercambiando mensajes con el tercero. El agresor asume la identidad de A para intercambiar mensajes con B y la identidad de B para intercambiar mensajes con A. También recibe el nombre de ataque «man-in-the-middle» (hombre en el medio). auditoría Registro selectivo de sucesos con el propósito de analizar y detectar infracciones de seguridad. El sistema de auditoría de HP-UX incluye un mecanismo para auditar usuarios y procesos. 215 autenticación Proceso que comprueba la identidad de un sujeto (usuario, sistema host, dispositivo u otra entidad en una red de equipos). A menudo se trata de un requisito previo para permitir el acceso a los recursos de un sistema. También permite comprobar la integridad de los datos o la identidad de la parte que los envía. autenticación desafíorespuesta Forma de autenticación según la cual el autenticador envía un valor aleatorio (el desafío) al usuario o principal sometido a autenticación. El usuario devuelve una respuesta basada en el valor de desafío y un valor secreto compartido previamente establecido con el autenticador, por ejemplo, un valor hash MD5. A diferencia del intercambio normal de contraseñas, el diálogo desafío-respuesta varía, para que así un intruso no pueda reproducir la respuesta del usuario para obtener autenticación. autorización Proceso que evalúa la información de control del acceso y determina si un sujeto (usuario, sistema host, dispositivo u otra entidad en una red de equipos) está autorizado para realizar una operación en un determinado recurso u objeto. Se suele efectuar después de que se autentique la identidad de un sujeto. En el contexto de RBAC, la autorización se refiere específicamente a la unión de una operación y un objeto, y también se denomina permiso. Ver RBAC. 216 Glosario CA Sigla en inglés de Certificate Authority (Entidad emisora de certificados). Tercero de confianza que autentica usuarios y emite certificados. Además de establecer una relación de confianza en la vinculación entre la clave pública de un usuario y otro tipo de información relativa a la seguridad contenida en un certificado, la entidad emisora de certificados firma digitalmente la información del certificado con su clave privada. cárcel chroot Método que restringe los archivos y directorios a los que tiene acceso un proceso y los usuarios de dicho proceso. El proceso se inicia en un directorio base especificado (la raíz) y no puede tener acceso a ningún directorio o archivo que esté por encima del directorio raíz. carga de seguridad encapsuladora Ver ESP. certificado Un certificado de seguridad asocia (o vincula) una clave pública a un principal (persona concreta, sistema, dispositivo u otra entidad). Este tipo de certificados son emitidos por una entidad, en la que confían los usuarios y que recibe el nombre de entidad emisora de certificados (CA), la cual garantiza o confirma la identidad del titular (persona, dispositivo u otra entidad) de la clave privada correspondiente. La entidad emisora de certificados firma digitalmente el certificado con su clave privada, de manera que el certificado se pueda comprobar utilizando su clave pública. El formato más habitual de certificados con claves públicas es la norma X.509, versión 3, de la Organización Internacional de Normalización (ISO). certificado de seguridad Ver certificado. cifrado Proceso que convierte los datos de un formato legible a un formato no legible para su confidencialidad. Las funciones de cifrado normalmente utilizan los datos y una clave de cifrado (secuencia de valores o bits) como entrada. clave previamente compartida Clave de cifrado acordada previamente por dos sistemas para el cifrado o la autenticación. La clave se intercambia antes de la comunicación de los datos informáticos, normalmente mediante un intercambio de claves fuera de banda (como el intercambio verbal o presencial). Ver también criptografía de claves compartidas. claves manuales Claves de cifrado configuradas manualmente para IPSec. Consisten en una alternativa al uso del protocolo de intercambio de claves de Internet (IKE) para generar claves de cifrado y otra información para las asociaciones de seguridad (SA) de IPSec. compartimentos Método que permite aislar entre sí diversos componentes del sistema. Si están configurados correctamente, los componentes constituyen un método eficaz para proteger el sistema HP-UX y los datos que éste contiene. confidencialidad directa perfecta (PFS - Perfect Forward Secrecy) Con la confidencialidad directa perfecta, la exposición de una clave permite únicamente el acceso a los datos protegidos por dicha clave. contención Mecanismo o conjunto de mecanismos para restringir los derechos de acceso de los procesos. En el contexto de RBAC, la contención combina el control de acceso obligatorio y los privilegios expresos. Ver RBAC. contraseña oculta Estructura que proporciona seguridad adicional a las contraseñas de los usuarios. La estructura de la contraseña oculta (spwd) contiene contraseñas de usuario cifradas y otra información utilizada con esta estructura. La estructura de la contraseña oculta se almacena en un archivo que normalmente sólo es legible para los usuarios con privilegios. criptografía Proceso de codificación de datos normales (o texto no cifrado) para que sólo puedan descodificarlos los propietarios de información específica. criptografía de claves asimétricas Ver criptografía de claves públicas. criptografía de claves compartidas Método de cifrado en el que las dos partes utilizan la misma clave (las dos partes comparten la misma clave) para cifrar o autenticar datos. Para proporcionar la confidencialidad o autenticación de los datos, sólo las dos partes pueden conocer el valor de la clave (la clave debe ser privada). La criptografía de claves compartidas resulta más eficaz que la criptografía de claves públicas-privadas para cifrar los datos, por lo que se utiliza a menudo para el cifrado masivo de datos. No obstante, para distribuir o establecer la clave compartida se requiere un intercambio de claves fuera de banda (como el intercambio verbal o presencial), el intercambio Diffie-Hellman u otro mecanismo. También recibe el nombre de criptografía de claves privadas o criptografía de claves simétricas. criptografía de claves privadas Ver criptografía de claves compartidas. criptografía de claves públicas Método de cifrado que utiliza dos claves relacionadas matemáticamente (por ejemplo, k1 y k2) de manera que los datos cifrados con k1 se pueden descifrar sólo con k2. Además, la mayoría de los algoritmos garantizan que sólo el propietario de k1 puede cifrar correctamente los datos que se pueden descifrar con k2. 217 Una de las claves debe ser privada (sólo la conoce el propietario), pero la segunda puede ser muy conocida (pública), lo que permite administrar fácilmente la distribución de claves. El cifrado de claves públicas es costoso desde el punto de vista computacional, por lo que no resulta práctico para el cifrado masivo de datos. En su lugar, se suele utilizar la criptografía de claves públicas para autenticar los datos. También recibe el nombre de criptografía de claves asimétricas (las dos claves son distintas) o criptografía de claves públicas-privadas. criptografía de claves públicas-privadas Ver criptografía de claves privadas. criptografía de claves simétricas Ver criptografía de claves compartidas. CRL Sigla en inglés de Certificate Revocation List (Lista de revocación de certificados). Los certificados se emiten con una duración determinada, definida por una fecha/hora de inicio y una fecha/hora de caducidad. No obstante, pueden darse situaciones, como un valor de clave comprometido, en las que sea necesario revocar el certificado. En este caso, la entidad emisora de certificados puede revocar el certificado. Para ello, se incluye el número de serie del certificado en una lista de revocación de certificados actualizada y publicada periódicamente por la entidad emisora de certificados y facilitada para certificar usuarios. Ver CA. DES Sigla en inglés de Data Encryption Standard (Norma de cifrado de datos). Utiliza una clave de 56 bits para el cifrado de bloques de claves simétricas. La norma de cifrado de datos resulta adecuada para el cifrado masivo de datos. La norma de cifrado de datos ha sido convertida (un tercero ha descodificado los datos codificados con esta norma). DIAMETER Base Protocolo que ofrece servicios de autenticación, autorización y contabilidad (AAA - Authentication, Authorization, Accounting) basándose en el protocolo RADIUS. El protocolo DIAMETER proporciona la misma funcionalidad que RADIUS, pero con mejoras en confiabilidad, seguridad e infraestructura. Ver también RADIUS. Diffie-Hellman Método de clave pública para generar una clave simétrica según el cual dos partes pueden intercambiar públicamente valores y generar la misma clave simétrica. Se comienza con el primo p y el generador g, que pueden ser conocidos por el público (normalmente, estos números proceden de un grupo Diffie-Hellman muy conocido). Cada parte selecciona un valor privado (a y b) y genera un valor público (g**a mod p) y (g**b mod p). Ambas partes intercambian los valores públicos. Posteriormente, cada parte utiliza su valor privado y el valor público de la otra parte para generar la misma clave simétrica, (g**a)**b mod p y (g**b)**a mod p, que ambas evalúan como g**(a*b) mod p para la comunicación en el futuro. El método Diffie-Hellman debe combinarse con la autenticación para evitar ataques «man-in-the-middle» (hombre en el medio) o de terceros (simulación). Por ejemplo, se puede utilizar el método Diffie-Hellman con la autenticación mediante certificados o claves previamente compartidas. 218 Glosario directiva IPSec Las directivas IPSec especifican las reglas para la transferencia segura de los datos. Estas directivas contienen generalmente información del filtro de paquetes y una acción. El filtro de paquetes se utiliza para seleccionar una directiva para un paquete y la acción se aplica a los paquetes que utilizan esa directiva. EAP Sigla en inglés de Extensible Authentication Protocol (Protocolo de autenticación extensible). Protocolo que proporciona un marco para utilizar varios protocolos y métodos de autenticación, entre ellos, las contraseñas, Kerberos y protocolos de desafío-respuesta. encabezado de autenticación Ver AH. entidad emisora de certificados Ver CA. ESP Sigla en inglés de Encapsulating Security Payload (Carga de seguridad encapsuladora). Forma parte de la serie de protocolos IPsec. ESP proporciona confidencialidad (cifrado) y un servicio contra reproducciones. Debe utilizarse con la autenticación, ya sea con el campo de autenticación ESP opcional (ESP autenticado) o anidado en un mensaje con encabezado de autenticación. ESP autenticado también proporciona la autenticación del origen de los datos, así como la integridad sin conexión. Cuando se utiliza en el modo de túnel, ESP también proporciona confidencialidad con límite del flujo de tráfico. filtro Mecanismo que permite filtrar los objetos no deseados o los parámetros que especifican los objetos a los que se permite o se deniega el acceso. Normalmente se utiliza un filtro para filtrar los paquetes de red no deseados (un filtro de paquetes). filtro de paquetes Filtro utilizado para seleccionar o restringir los paquetes de red. Los filtros de paquetes especifican las características de los paquetes de red. Estos filtros normalmente especifican las direcciones IP de origen y destino, los protocolos de capas superiores (como TCP o UDP) y los números de puertos TCP o UDP. Asimismo, estos filtros pueden definir otros campos de paquetes, como los tipos de encabezados IPv6, los tipos de mensajes de capas superiores (por ejemplo, los tipos de mensajes ICMP) y los estados de conexión TCP. filtro de paquetes con estado Tipo de filtrado de paquetes que utiliza campos de protocolos de capas superiores e información de estado, como los estados de conexión TCP. firma digital Las firmas digitales constituyen una variante de los algoritmos hash que utilizan pares de claves pública/privada. El remitente utiliza su clave privada y los datos como entrada para crear un valor de firma digital. función Función del trabajo, dentro del contexto de una empresa, con semántica asociada respecto a la autoridad y la responsabilidad dada a los usuarios que tienen asignada la función. HMAC Sigla en inglés de Hashed Message Authentication Code (Código de autenticación de mensajes indexados por tabla de dispersión (hashed)). Ver también MAC. host bastión Sistema computacional que protege una red interna contra los intrusos. Ver también servidor de seguridad y sistema fortalecido. IKE El protocolo de intercambio de claves de Internet (IKE - Internet Key Exchange) forma parte de la serie de protocolos IPsec. IKE se utiliza antes de los intercambios del protocolo ESP o AH de IPsec para determinar los servicios de cifrado y/o 219 autenticación que se van a utilizar. IKE también administra la distribución y actualización de las claves de cifrado simétricas (compartidas) que utilizan los protocolos ESP y AH. Ver también ESP y AH. intercambio de claves fuera de banda Intercambio de claves mediante un canal de comunicación seguro que no pertenece a los canales de comunicación habituales de los equipos, como una reunión presencial o una llamada telefónica. Kerberos Protocolo de autenticación de red diseñado para proporcionar una autenticación severa para aplicaciones cliente o servidor. Kerberos permite a los usuarios autoautenticarse sin transmitir contraseñas no cifradas a través de la red. LDAP El protocolo LDAP (Lightweight Directory Access Protocol - Protocolo ligero de acceso a directorios) proporciona acceso a los directorios de la red. LDAP utiliza una estructura de directorios parecida al servicio de directorios OSI X.500, pero almacena los datos como cadenas y usa la pila de red TCP/IP en lugar de la pila de red OSI. lista de revocación de certificados Ver CRL. MAC Un código de autenticación de mensajes (MAC - Message Authentication Code) consiste en una etiqueta de autenticación (también llamada suma de comprobación) obtenida de aplicar un algoritmo de autenticación, junto con una clave secreta, a un mensaje. Los MAC se computan y comprueban con la misma clave de manera que sólo puedan ser comprobados por el destinatario específico, a diferencia de las firmas digitales. Los MAC basados en una función hash (HMACS) utilizan una o varias claves junto con una función hash para generar una suma de comprobación que se adjunta al mensaje. Un ejemplo es el método MD5 con claves para la autenticación de mensajes. Los MAC también pueden obtenerse de codificadores de bloques. Los datos se cifran en bloques de mensajes con DES CBC y el bloque final en el texto cifrado se utiliza como la suma de comprobación. El MAC DES-CBC es una norma de uso generalizado en EE. UU. y en el ámbito internacional. MD5 Message Digest-5. Algoritmo de autenticación desarrollado por RSA. MD5 genera una síntesis del mensaje de 128 bits con una clave de 128 bits. IPSec trunca la síntesis del mensaje a 96 bits. módulo de autenticación enchufable Ver PAM. NAT Sigla en inglés de Network Address Translation (Conversión de direcciones de red). Método que permite que varios sistemas de una red privada interna compartan una dirección IP de Internet pública. Una puerta de enlace NAT reemplaza (convierte) los puertos y las direcciones IP internas por su dirección IP pública al reenviar paquetes desde la red interna a la red Internet pública, y realiza la traducción inversa para la ruta de retorno. norma de cifrado de datos Ver DES. objeto 220 Glosario Recurso de la red o el sistema, por ejemplo, un sistema, un archivo, una impresora, un terminal o un registro de base de datos. En lo que respecta a la autorización, ésta se concede para la operación de un sujeto sobre un objeto. operación Modo específico de acceso a uno o varios objetos. Por ejemplo, escribir en un archivo. En lo que respecta a la autorización, ésta se concede para la operación de un sujeto sobre un objeto. PAM Sigla en inglés de Pluggable Authentication Module (Módulo de autenticación enchufable). Consiste en un marco de autenticación que permite a los administradores de sistemas configurar servicios de autenticación y administración de cuentas, sesiones y contraseñas para las utilidades de HP-UX, como la utilidad de inicio de sesión en el sistema. principal Persona, sistema, dispositivo u otra entidad. privilegio Permiso para realizar una acción en un sistema computacional. privilegio expreso Permiso para realizar una operación específica de nivel inferior (por ejemplo, permiso para ejecutar una determinada llamada del sistema). protocolo de autenticación extensible Ver EAP. RADIUS El protocolo de servicio de usuario de acceso telefónico de autenticación remota (RADIUS - Remote Authentication Dial-In User Service) es ampliamente utilizado y se implementa para administrar el acceso a los servicios de red. Este protocolo define una norma para el intercambio de información entre un dispositivo de acceso a la red y un servidor de autenticación, autorización y contabilidad (AAA) para realizar operaciones de autenticación, autorización y contabilidad. Un servidor AAA RADIUS puede administrar los perfiles de usuario para la autenticación (comprobar el nombre de usuario y la contraseña), información de configuración que especifica el tipo de servicio que se va a proporcionar y las directivas que se van a aplicar que pueden restringir el acceso de los usuarios. El protocolo RADIUS proporciona únicamente el marco para el intercambio de autenticación y se puede utilizar con numerosos métodos de autenticación. RBAC Sigla en inglés de Role-Based Access Control (Control del acceso según la función). Mecanismo de HP-UX para aportar acceso expreso a los recursos del sistema, los comandos y las llamadas de sistema. Se asignan funciones a los usuarios y éstos obtienen privilegios de acceso según dichas funciones. relación de confianza transitiva Ampliación de una relación de confianza a través de otras entidades de confianza. Si A y B confían en C, A y B pueden tener confianza mutua mediante una relación de confianza transitiva a través de C. En una estructura jerárquica, A y B pueden entablar una relación de confianza transitiva si pueden establecer una cadena de confianza con una raíz común. Role-Based Access Control Ver RBAC. RSA Rivest, Shamir y Adelman. Sistema de cifrado de claves públicas-privadas que se puede utilizar para la confidencialidad (cifrado) y la autenticación (firmas). En lo que respecta al cifrado, el sistema A puede enviar datos cifrados con la clave pública del sistema B. Sólo la clave privada del sistema B puede descifrar los datos. En lo que respecta a la autenticación, el sistema A envía los datos con una firma digital, una síntesis o un hash cifrados con la clave privada del sistema A. Para comprobar la firma, el sistema B utiliza la clave pública del sistema A para descifrar la firma y comparar la síntesis o el hash descifrados con la síntesis o el hash que computa para el mensaje. 221 222 Glosario SASL Sigla en inglés de Simple Authentication and Security Layer (Nivel de autenticación y seguridad simples). Protocolo utilizado para agregar servicios de autenticación a aplicaciones de red basadas en conexiones. La interface API de SASL proporciona un marco flexible que permite a los programadores utilizar una interface común para el acceso a varios servicios de autenticación. secure shell Ver SSH. Secure Sockets Layer Ver SSL. servidor AAA Servidor de autenticación, autorización y contabilidad (AAA: Authentication, Authorization, Accounting). Un servidor AAA ofrece servicios de autenticación, autorización y contabilidad del acceso de los usuarios a la red en los puntos de entrada a una red. HP-UX proporciona servidores AAA basados en los protocolos RADIUS y DIAMETER base. servidor de seguridad Uno o varios dispositivos o sistemas computacionales utilizados a modo de barrera para proteger una red contra usuarios no autorizados o aplicaciones intrusas perjudiciales. Ver también host bastión y sistema fortalecido. SHA1 Sigla en inglés de Secure Hash Algorithm-1 (Algoritmo hash seguro-1). Algoritmo de autenticación que genera una síntesis del mensaje de 160 bits con una clave de 160 bits. sistema fortalecido Sistema computacional con el número mínimo de características del sistema operativo, usuarios y aplicaciones que se utiliza a modo de barrera para proteger una red contra usuarios no autorizados o aplicaciones intrusas perjudiciales. También recibe el nombre de host bastión. SSH Sigla en inglés de Secure Shell. Conjunto de servicios de red que proporciona sustituciones seguras para el inicio de sesión remoto, la transferencia de archivos y la ejecución remota de comandos. SSH también incluye características para la creación de túneles seguros, el reenvío a través de puertos y un agente SSH para mantener las claves privadas en el cliente. SSL Sigla en inglés de Secure Sockets Layer. Protocolo que se utiliza para cifrar datos de red. El protocolo SSL está por encima de TCP en la pila de datos. SSL utiliza claves públicas/privadas para la autenticación de principales y el intercambio de claves privadas (compartidas). Posteriormente, SSL utiliza la clave privada para cifrar los datos. suceso Acción que consiste en, por ejemplo, crear un archivo, abrir un archivo o iniciar una sesión en el sistema. sujeto Usuario, sistema host, dispositivo u otra entidad en una red computacional. En lo que respecta a la autorización, se refiere al iniciador de una operación sobre un objeto que requiere una decisión sobre la autorización. VPN Sigla en inglés de Virtual Private Network (Red privada virtual). Red privada incluida en una red pública, como Internet. Una red VPN es virtual porque utiliza túneles para crear de forma eficaz una red lógica independiente dentro de una red física. Una red VPN es privada porque los usuarios externos no pueden ver ni modificar los datos que se transmiten. Las redes VPN que utilizan la autenticación de la identidad de sistemas host también proporcionan protección contra la simulación de direcciones IP. Índice Símbolos /dev, archivo especial de dispositivo consideraciones sobre la seguridad, 117 /etc/d_passwd, archivo controlar acceso, 56 /etc/default/security, 21 /etc/dialups, archivo controlar acceso, 56 /etc/ftpd/ftpusers, archivo cambiar el acceso, 80 /etc/group, archivo, 204 /etc/inetd.sec, archivo, 83 /etc/pam_user.conf, archivo, 32 /etc/pam.conf, archivo, 32 configurar todo el sistema, 34 /etc/passwd, archivo, 201, 203–204 cambiar, 40 cuenta restringida, 27 cuentas de usuario de aplicaciones, 27 ejemplo de seudocuenta, 43 formato, 41 recuperar, 24 /etc/rbac/aud_filter, 199 /etc/rbac/cmd_priv, 175 entradas, 177 /etc/security.dsc, archivo, 46 /etc/shadow, archivo de contraseñas ocultas, 41 /sbin/rc2.d/S760auditing, 202 /tcb/files/auth/, base de datos protegida de contraseñas, 203– 204 /tcb/files/auth/*/*, 202, 205, 208–209 /tcb/files/ttys, 208 /tmp, 211 /var.adm/userdb, archivo, 47, 73 /var/adm/inetd.sec, archivo configurar, 83 A acceso contraseña, 206 control de acceso al terminal, 206 en función del dispositivo, 208 en función del tiempo, 206, 208 acceso a los archivos definir permisos de acceso, 101 acceso a los directorios asegurar, 102 acceso al sistema pautas de seguridad para acceso remoto, 55 acceso al terminal, 206 acceso de los usuarios administrar, 25 acceso de superusuario proteger, 58 revisar, 60 supervisar, 59 utilizar Restricted SMH Builder para acceso limitado, 60 acceso remoto pautas de seguridad para administrar, 55 Access Control Policy Switch, 161 interfaces, 161 personalizar, 182 ACL comparación de JFS y HFS, 116 copia de seguridad/recuperación de un sistema de confianza, 209 definir, 104 definir HFS, 104 definir JFS, 108 ejemplo de modificación de una lista JFS mínima, 111 entradas JFS por defecto, 113 y NFS, 117 administración de la red administrar un dominio administrativo, 85 administración de una red, 86 controlar la seguridad de los archivos, 121 administración del sistema administrar acceso remoto, 55 administrar contraseñas, 38 administrar el acceso de los usuarios, 25 administrar un dominio administrativo, 85 auditar usuarios, 185 autenticar usuarios con PAM, 31 autenticar usuarios durante el inicio de sesión, 28 controlar la seguridad de los archivos en una red, 121 definir atributos de seguridad, 45, 72 definir opciones de seguridad en el momento de la instalación, 21 evitar ataques de desbordamiento del búfer en la pila, 52 infracciones de seguridad , 20 instalar HP-UX de forma segura, 19 instalar parches de seguridad, 22 manejar los programas setuid y setgid, 49 montar y desmontar un sistema de archivos sin riesgo, 119 pautas de auditoría, 190 pautas de seguridad, 23 proteger acceso de usuario root, 58 proteger el sistema de archivos HP-UX, 99 proteger estaciones de trabajo y terminales sin vigilancia, 53 proteger FTP, 78 proteger inetd, 82 proteger Internet Services, 77 proteger titulares de inicio de sesión, 57 223 usar la autenticación de inicio para impedir el acceso no autorizado, 21 administrador de bloqueos del entorno CDE configurar, 55 administrar contraseñas, 38 administrar el acceso a los archivos, 99 administrativo, dominio administrar, 85 AES (Advanced Encryption Standard - Norma de cifrado avanzado), 215 AH (Authentication Header - Encabezado de autenticación) definición, 215 archivo /etc/group, 204 /etc/passwd, 201, 203–204 archivo de control de red comprobar permisos, 86, 121 archivo de dispositivo de terminal proteger, 54 archivo de registro auditar, 193 archivo de registro auxiliar de auditoría, 194 archivo de registro de auditoría, 193 consultar, 196 racionalizar datos, 198 sobrescribir existente, 195 archivo de registro principal de auditoría, 194 archivo de seguimiento de inicios de sesión, 29 at, comando, 202 atributo de seguridad definir, 45, 72 audisp, comando consultar salida del registro de auditoría, 196 auditar comandos, 186 habilitar, 186 perfil básico, 192 usuarios, 185 auditar suceso, 191 tipo, 193 auditoría activar después de la recuperación, 24 autenticación, 203 con PAM, 31 durante el inicio de sesión, 28 ejemplo de inicio de sesión de PAM, 37 usar inicio, 21 utilizada por SSH, 92 autenticación basada en claves públicas utilizada por SSH, 93 y autenticación basada en host, 93 autenticación basada en host utilizada por SSH, 93 y autenticación basada en claves públicas, 93 autenticación de inicio utilizar, 21 authadm, 172 224 Índice ejemplos, 173 sintaxis, 172 autorizaciones, 158 configurar, 172 objeto, 158 operación, 158 B base de datos de asignación de dispositivos sistema de confianza, 209 base de datos de contraseñas de un sistema de confianza, 209 base de datos de control de acceso a terminales sistema de confianza, 209 base de datos protegida de contraseñas /tcb/files/auth/, 203–204 Bastille (ver HP-UX Bastille) batch, 202 bit de permanencia definir, 102 bloqueo de pantalla configurar, 54 btmp, archivo realizar seguimiento de inicios de sesión infructuosos, 29 C CA (entidad emisora de certificados) definición, 216, 219 campo de contraseña cifrada, 204–205 cárcel chroot, 96 CDE Login Manager iniciar una sesión, 28 chfn, 205 chmod, comando cambiar permisos de acceso a los archivos, 101 efecto en las entradas class, 111 chown, 24, 205, 210 chsh, 205 cifrado definición, 216, 219 claves previamente compartidas definición, 217, 219, 221 cmdprivadm, 173 ejemplos, 174 sintaxis, 173 comando login, 204 swlist, 202 compartimentos, 125 activar, 129 crear reglas, 133 modificar reglas, 133 planificar una estructura, 127 regla para la limitación de los privilegios, 140 reglas de interface de red, 139 reglas de red, 137 reglas de sistema de archivos, 134 reglas IPC, 135 solucionar problemas, 141, 152 comprobar permisos en archivos de control de red, 86 conexión móvil proteger, 56 confidencialidad directa perfecta (PFS - Perfect Forward Secrecy) definición, 217 conjunto de archivos SecurityMon, 202 contraseña, 207 administración, 38 archivo base de datos protegida de contraseñas, 202–203, 206 campos, 204 autenticación utilizada por SSH, 94 base de datos, 202–203, 206 /tcb/files/auth/, 203–204 caducidad, 203, 205–207 duración, 207 fecha de caducidad, 207 intervalo mínimo, 207 cifrada, 204 cifrada, campo, 204–205 criterios para establecer correctamente, 39 entrada manipular, 209 generación, 206 historial, 208 integridad, 204 oculta, 41 reutilización, 208 seguridad, 203 tipos, 206 contraseña de confianza, 207 control del acceso en función del dispositivo, 208 control del acceso en función del tiempo, 208 copia de seguridad pautas de seguridad, 23 sistema de confianza, 201, 209 crontab, 202 cuenta de grupo administrar, 28 cuenta de invitado supervisar, 26 cuenta de usuario restringida, 27 cuenta de usuario root proteger, 58 cuenta temporal deshabilitar, 26 CH chfn, 205 chmod, comando cambiar permisos de acceso a los archivos, 101 efecto en las entradas class, 111 chown, 24, 205, 210 chsh, 205 D daños del archivo localizar y reparar con el comando fsck, 103 de confianza, 207 definir id. de grupo, programa Ver setgid, programas, 49 definir id. de usuario, programa Ver setuid, programas, 49 demonio de Internet Ver inetd, demonio, 81 DES (Data Encryption Standard - Norma de cifrado de datos), 215, 217–218 desmontar un sistema de archivos sin riesgo, 119 Diffie-Hellman, 218 grupo, 218 dominio administrar uno administrativo, 85 duración caducidad de contraseña, 207 E error de alimentación, 24, 210 pérdida de archivos, 24 ESP (Encapsulating Security Payload - Carga de seguridad encapsuladora) definición, 219 estación de trabajo proteger, sin vigilancia, 53 /etc/ftpd/ftpusers, 80 /etc/inetd.sec, 83 /etc/passwd, 24 F fbackup, comando, 23 copia de seguridad de confianza, 209 fecha de caducidad caducidad de contraseña, 207 filtro definición, 219, 221–222 fortalecimiento de la seguridad (ver HP-UX Bastille) frecover, comando, 23 recuperación de confianza, 209 fsck, comando reparar daños del archivo, 103 FTP proteger, 78 proteger anónimo, 79 FTP anónimo proteger, 79 ftpd, servidor, 80 función getdvagent, 209 getprdfent, 209 225 getprpwent, 209 getprtcent, 209 getpwent, 209 getspwent, 209 putprpwnam, 209 putpwent, 209 putspwent, 209 funciones configurar, 170 grupos, 172 pautas para crear, 166 por defecto, 170 G generador de números aleatorios, 96 generador de números aleatorios robusto, 96 getacl, comando ver listas ACL, 110 getdvagent, función, 209 getfilexsec, comando, 132, 146 getprdfent, función, 209 getprocxsec, comando, 132, 146 getprpwent, función, 209 getprtcent, función, 209 getpwent, función, 209 getspwent, función, 209 GSS-API SSH, 92 H herramienta de cierre (ver HP-UX Bastille) HFS, 104 HFS, ACL comandos y llamadas con los que funcionan, 106 comparadas con listas ACL del HFS, 116 definir, 104 y NFS, 117 High Performance File System Ver HFS, 104 historial contraseña, 208 host bastión, 61 HP-UX Bastille, 61 archivo de configuración crear, 62, 64 duplicar, 62 archivos consultar archivos de registro, 66 ubicación y descripción, 67 consejos y solución de problemas, 69 deriva comparar estados, 62 obtener acceso al archivo de deriva de configuración, 69 utilizar bastille_drift, 62 descargar, 62 eliminar, 70 226 Índice informes generar, 62 obtener acceso a los archivos, 68 instalar, 62 lista de tareas pendientes llevar a cabo, 64 utilizar, 67 revocación de los cambios, 67 uso interactivo, 63 uso no interactivo, 64 utilizar interactivamente, 63 no interactivamente, 64 HP-UX RBAC archivos de configuración, 162 arquitectura, 163 auditoría, 199 comandos, 162 empaquetar, 169 componentes, 160 configurar compartimentos, 177 funcionamiento, 164 páginas de manual, 163 solucionar problemas, 183 usuario por defecto, 171 HP-UX, instalación consejos sobre la seguridad posterior a la instalación, 23 consideraciones sobre la seguridad, 19 definir opciones de seguridad en el momento de la instalación, 21 instalar parches de seguridad, 22 prevenir infracciones de seguridad durante el inicio, 20 I identificación de grupo (gid), 204 IKE (Internet Key Exchange - Intercambio de claves de Internet) protocolo, 219 indicador de auditoría, 206 inetd, demonio descripción general, 81 proteger, 82 TCP Wrappers, 83 iniciar prevenir infracciones de seguridad durante el inicio, 20 instalación de parches mediante Software Assistant, 22 instalar HP-UX consejos sobre la seguridad posterior a la instalación, 23 consideraciones sobre la seguridad, 19 definir opciones de seguridad en el momento de la instalación, 21 instalar parches de seguridad después, 22 prevenir infracciones de seguridad durante el inicio, 20 instalar parches de seguridad mediante Software Assistant, 22 Internet Services, 77 descripción general, 77 intervalo mínimo caducidad de contraseña, 207 IPSec, directiva definición, 219 J JFS, 104 JFS ACL ejemplo de modificación de una lista mínima, 111 JFS, ACL comparadas con listas ACL del JFS, 116 definir, 108 modificar con el comando setacl, 114 utilizar entradas por defecto, 113 y NFS, 117 Journaled File System Ver JFS, 104 L last, comando ejemplos de uso, 30 LDAP, servidor de directorio asegurar contraseñas almacenadas, 45 lista de control de acceso Ver ACL, 104 lista de revocación de certificados (CRL), 217–218 llamada a procedimiento remoto Ver RPC, 84 Logical Volume Manager Ver LVM, 118 login, comando, 28, 204 lost+found, directorio, 24 LVM, 118 LL llamada a procedimiento remoto Ver RPC, 84 M MAC, 220 medios de copia de seguridad seguridad, 209 módem, acceso pautas de seguridad para administrar, 55 modo monousuario iniciar, 20 montar un sistema de archivos sin riesgo, 119 N NFS, 121 proteger archivos montados con NFS, 123 proteger el cliente, 122 proteger el servidor, 122 y listas ACL, 117 NIS asegurar contraseñas almacenadas, 44 nivel de ejecución cambiar, 53 controlar acceso, 53 nivel de seguridad elegir durante la instalación, 21 nombre de usuario crear único, 28 número de autorización, 203 número de identificación de auditoría (aid), 202, 205–206 número de identificación de usuario (uid), 204, 206 O oculta, contraseña, 41 operaciones pautas para crear, 167 P PAM autenticar usuarios, 31 configurar todo el sistema, 34 descripción general, 32 PAM, autenticación ejemplo de inicio de sesión, 37 PAM, biblioteca, 33 PAM, módulo de servicios, 32 parámetro PASSWORD_HISTORY_DEPTH, 208 parche de seguridad instalar, 22 particiones de disco consideraciones sobre la seguridad, 118 passwd, comando, 205 ejemplos, 40 PASSWORD_HISTORY_DEPTH, parámetro, 208 permisos comprobar archivo de control de red, 121 comprobar para archivos de control de red, 86 privedit, 181 opciones, 182 sintaxis, 181 privilegios expresos, 145 configurar, 175 privrun, 178 -p, 176 ejemplos, 180 funcionamiento, 164 opciones, 178 sintaxis, 178 proceso de inicio obtener, 20 proceso de inicio de sesión explicación, 28 programa de autoauditoría, 198 propiedad de los archivos definir, 101 227 protección contra desbordamiento del búfer en la pila, 52 proteger sesiones remotas, 87 prpwd, 206 putprpwnam, función, 209 putpwent, función, 209 putspwent, función, 209 R recuperación pautas de seguridad, 23 reutilización contraseña, 208 roleadm, 170 ejemplos, 170–171 sintaxis, 170 root inconvenientes, 157 root, acceso obtener, 20 revisar, 60 supervisar, 59 utilizar Restricted SMH Builder para acceso limitado, 60 RPC y TCP Wrappers, 84 RSA, sistema de cifrado, 221 rsh, comando limitar el acceso al sistema, 26 S Sec00Tools, nivel de seguridad, 21 Sec20MngDMZ, nivel de seguridad, 21 Sec30DMZ, nivel de seguridad, 21 Secure Shell Ver SSH, 87 SecurityMon, conjunto de archivos, 202 seguridad de archivos consideraciones para archivos especiales /dev, 117 controlar el acceso a los archivos, 99 controlar en una red, 121 proteger archivos montados con NFS, 123 proteger archivos relacionados con cuentas de usuario, 102 proteger particiones de disco y volúmenes lógicos, 118 seguridad del sistema definir atributos de seguridad, 45, 72 seguridad del usuario administrar, 25 seleccionar y generar, 207 servicios de acceso remoto, 77 descripción general, 77 sesiones remotas proteger mediante SSH, 87 setacl, comando cambiar listas ACL, 110 cambiar listas ACL del JFS, 114 setfilexsec, comando, 131, 146 setgid, programas, 24, 210 228 Índice administrar, 49 setuid, programas, 24, 210 administrar, 49 seudocuenta ejemplo, 43 simulación definición, 80 proteger con TCP Wrappers, 83 SIS, 84 sistema de archivos pautas de seguridad para montar y desmontar, 119 sistema de confianza bases de datos, 209 convertir, 202–203 sistema, nivel de ejecución cambiar, 53 controlar acceso, 53 Software Assistant utilizar, 22 SSH, 44 autenticación, 88, 92 autenticación basada en claves públicas, 93 autenticación con contraseñas, 94 características, 87 cifrado, 87 compatibilidad con TCP Wrappers, 96 componentes de software, 88 ejecución en modo de privilegios, 91 ejecutar, 89 ejecutar cliente scp, 91 ejecutar cliente sftp, 90 ejecutar cliente ssh, 89 generador de números aleatorios robusto, 96 GSS-API, 92 proteger sesiones remotas, 87 reenvío a través de un puerto, 88 sistema HP-UX, 94 tecnologías asociadas, 95 SSH-1, protocolo, 94 SSH-2, protocolo, 94 swlist, comando, 202 T TCP Wrappers proteger contra simulación, 83 y SSH, 96 teléfono proteger, 56 terminal configurar bloqueo de pantalla, 54 proteger, sin vigilancia, 53 titulares de inicio de sesión asegurar, 57 TMOUT, variable configurar, 55 U umask, comando cambiar permisos de acceso a los archivos por defecto, 101 único, nombre de usuario importancia, 28 userdbset, comando ejemplos de definición de atributos de usuarios, 48 usuario, autenticación con PAM, 31 durante el inicio de sesión, 28 ejemplo de inicio de sesión de PAM, 37 V /var/adm/inetd.sec, 83 volumen lógico consideraciones sobre la seguridad, 118 W who, comando obtener información de inicio de sesión de usuarios, 31 wtmp, archivo realizar seguimiento de inicios de sesión fructuosos, 29 WU-FTPD, 80 229