Seguridad en HP-UX César Vega Calderón EDS de México, S.A. de C.V. Abril 19 de 2001 1. Resumen Este documento contiene una serie de recomendaciones de seguridad para el sistema operativo HP-UX de Hewlett Packard Company. Dichas recomendaciones aplican tanto para una instalación en frío del sistema operativo como para el robustecimiento de la seguridad de un sistema productivo. 2. Introducción De sobra es sabido que el sistema operativo Unix no es seguro en absoluto. Obviamente, el sistema HP-UX de los equipos HP 9000 de Hewlett Packard no es la excepción. Sin embargo, el sistema operativo HP-UX, al igual que cualquier otro “sabor” de Unix, puede ser configurado de manera que la seguridad del sistema se vea robustecida en buena medida. La seguridad de un sistema puede incrementarse con una serie de medidas, entre las que destacan por su importancia: • • • • • • • • • • • • Creación e implementación de políticas y procedimientos de seguridad Instalación y configuracion de herramientas de seguridad Capacitación de usuarios y administradores Configuración adecuada de los servicios de red del sistema Instalación periódica de parches y fixes Concientización masiva en seguridad Elaboración periódica de respaldos Verificación de la integridad de los respaldos Atención a la seguridad física Buena cultura de administración y seguridad Buenas prácticas de renovación, uso y expiración de contraseñas Configuración segura del sistema operativo Este documentos hace énfasis en la última, aunque no menos importante medida: la configuración “segura” del sistema operativo. Es “segura” porque es bien conocido el hecho de que en la práctica no existe ningún sistema 100 % seguro. NOTA IMPORTANTE Antes de hacer cualquier cambio en los archivos de configuración del sistema, se recomienda fuertemente obtener un respaldo confiable de los mismos. Por otra parte, la gran mayoría de los comandos descritos a lo largo del documento deberán ser ejecutados con una cuenta privilegiada, que generalmente es root. Pág. 1 de 8 3. Guidelines de seguridad para HP-UX Convertir el sistema a Trusted System 1. Realizar un respaldo completo del sistema y asegurarse de que la información puede ser recuperada, es decir, que el respaldo es íntegro. 2. Verificar que se encuentre instalado el producto SecurityMon: /usr/sbin/swverify SecurityMon 3. Ejecutar SAM: /usr/sbin/sam & 4. Ir al área de SAM denominada “Audit & Security” . 5. Ir al área de SAM denominada “System Security Policies”. 6. Automáticamente el sistema solicita la confirmación para convertir el sistema a Trusted System. Confirmar la conversión. Configurar la auditoría en un Trusted System 1. Verificar el status del subsistema de auditoría (desactivada por default): /usr/sbin/audsys 2. Activar la auditoría para todos los usuarios (no recomendado), usando el archivo /.secure/etc/audlog1 con un tamaño máximo de 4000 KB y un archivo auxiliar /. secure/etc/audlog2 con un tamaño máximo de 5000 KB: /usr/sbin/audsys –n –c /.secure/etc/audlog1 –s 4000 –x /.secure/etc/audlog2 –z 5000 3. Verificar los usuarios auditados: /usr/sbin/audusr 4. Desactivar la auditoría para todos los usuarios: /usr/sbin/audusr -D 5. Activar la auditoría sólo para un usuario user: /usr/sbin/audusr –a user 6. Activar la auditoría de todos los eventos (no recomendado): Por default se auditan todos los eventos al activar la auditoría. 7. Verificar los eventos auditados: /usr/sbin/audevent Pág. 2 de 8 8. Desactivar la auditoría para todos los eventos: /usr/sbin/audusr -p -f -E 9. Activar la auditoría para únicamente los eventos moddac y login: /usr/sbin/audevent –P –F –e moddac –e login 10. Desactivar el subsistema de auditoría: /usr/sbin/audsys –f 11. Verificar el log de auditoría: /usr/sbin/audisp /.secure/etc/audlog1 Configurar la historia de contraseñas de manera que el sistema recuerde las más recientes 1. Crear el archivo /etc/default/security con una línea como la siguiente: PASSWORD_HISTORY_DEPTH=10 2. Asignar los permisos 444 a /etc/default/security y colocar a bin como dueño y grupo de este archivo: /usr/bin/chmod 444 /etc/default/security /usr/bin/chown bin:bin /etc/default/security 3. La información de historia de contraseñas se guarda cifrada en el archivo / tcb/files/auth/system/pwhist/pwhist_0 Desactivar ip_forwarding 1. Leer la descripción de IP Forwarding: HP-UX 10.20: HP-UX 11.00: /usr/contrib/bin/nettune -h /usr/bin/ndd –h ip_forwarding 2. Determinar si está activado el forwarding: HP-UX 10.20: HP-UX 11.00: /usr/contrib/bin/nettune –l ip_forwarding /usr/bin/ndd –get /dev/ip ip_forwarding 3. Desactivar el forwarding: HP-UX 10.20: HP-UX 11.00: /usr/contrib/bin/nettune –s ip_forwarding 0 /usr/bin/ndd –set /dev/ip ip_forwarding 0 Restringir al mínimo la exportación de sistemas de archivos a través de NFS Pág. 3 de 8 1. Si es necesario compartir un sistema de archivos via NFS, exportarlo únicamente a máquinas bien conocidas y, en lo posible, hacerlo con permisos de sólo lectura: /usr/bin/cat /etc/exports /filesystem -access=host,ro Asegurar las conexiones via módem mediante un password adicional 1. Determinar los nombres de archivo de los dispositivos asociados con los puertos que desean asegurarse: /usr/sbin/ioscan –funC tty Class I H/W Path Driver S/W State H/W Type Description ================================================================== tty 0 0/0/4/0 asio0 CLAIMED INTERFACE PCI Serial (103c1048) /dev/GSPdiag1 /dev/diag/mux0 /dev/tty0p1 /dev/cua0p2 /dev/mux0 /dev/tty0p2 /dev/cul0p2 /dev/tty0p0 /dev/ttyd0p2 tty 1 0/0/5/0 asio0 CLAIMED INTERFACE PCI Serial (103c1048) /dev/GSPdiag2 /dev/mux1 /dev/diag/mux1 /dev/tty1p1 2. Crear el archivo /etc/dialups, incluyendo la ruta completa de los archivos de dispositivo de dial-in que serán usados para conectarse mediante una contraseña adicional: /usr/bin/cat /etc/dialups /dev/tty0p0 /dev/tty1p1 3. Crear una contraseña cifrada con DES para utilizar como método de autenticación en estos puertos. Capturar, compilar y utilizar el programa siguiente para tal efecto: #include <stdio.h> main() { char salt[3], pwd[9]; char *password; printf (“Ingrese el password a cifrar: ”); scanf(“%s”,pwd); printf (“Ingrese la salt a utilizar en el cifrado: ”); scanf(“%s”,salt); password=crypt(pwd,salt); printf (“El password cifrado con DES es %s\n”,password); } 4. Crear el archivo /etc/d_passwd y agregar una línea para habilitar el shell obtenido al conectarse via módem (por ejemplo, /usr/bin/sh) en los puertos especificados: /usr/bin/sh:password cifrado:comentario Restringir el acceso a los servicios de red 1. Editar y configurar el archivo /var/adm/inetd.sec: Pág. 4 de 8 # Permitir las conexiones via ftp a las máquinas1.2.3.4, “trusted_machine” y a cualquiera de la red 5.6.7, además de negarlas al resto del mundo ftp allow 1.2.3.4 trusted_machine 5.6.7.* # Negar las conexiones via telnet a la máquina “suspicious” y a cualquiera de los segmentos 3, 4 o 5 de la #red 1.2, además de permitirlas al resto del mundo telnet deny suspicious, 1.2.3-5.* Asegurar la configuración de cron 1. Asegurarse de que todos los archivos de cron pertenezcan al usuario adecuado y tengan permisos de sólo lectura para dicho usuario: /usr/bin/ll /var/spool/cron/crontabs 2. Asegurarse de que el archivo /var/adm/cron/cron.allow tenga permisos de sólo lectura: /usr/bin/chmod 444 /var/adm/cron/cron.allow Verificar las ACL’s de los archivos del sistema 1. Buscar todos los archivos que tengan las ACL’s activadas /usr/bin/find / –acl opt 2. Revisar las ACL’s de cada archivo encontrado: /usr/bin/lsacl archivo Verificar la integridad del software instalado 1. Verificar la integridad de los archivos instalados con el SD (Software Distributor): /usr/sbin/swverify 2. Revisar cuidadosamente el archivo de log generado: /usr/bin/more /var/adm/sw/swagent.log Activar el registro de conexiones para inetd 1. Editar el archivo /etc/rc.config.d/netdaemons y asegurarse de que exista una línea como la siguiente dentro de este archivo: export INETD_ARGS=”-l” 2. Parar los servicios de Internet: /sbin/init.d/inetd stop 3. Arrancar los servicios de Internet: /sbin/init.d/inetd start Limitar a la consola las conexiones de root Pág. 5 de 8 1. Crear el archivo /etc/securetty: /usr/bin/echo “console” > /etc/securetty 2. Colocar permisos de sólo lectura para root al archivo /etc/securetty: /usr/bin/chmod 400 /etc/securetty Asegurarse de que el archivo /var/adm/btmp tenga los permisos 600 y pertenezca a root 1. Ejecutar los siguientes comandos: /usr/bin/ll /var/adm/btmp /usr/bin/chmod 600 /var/adm/btmp Asegurarse de que la variable PATH de ningún usuario contenga un punto 1. Revisar los archivos de inicialización de los usuarios del sistema, ubicar la variable PATH y eliminar el punto (.). Desactivar la recepción de mensajes para el superusuario 1. Ejecutar el siguiente comando: /usr/bin/mesg n Configurar la variable TMOUT en los archivos profile 1. Agregar la siguiente línea al archivo /etc/profile, o bien, a los archivos $HOME/.profile de los usuarios deseados: TMOUT=600 # Cerrar la sesión luego de 10 minutos de inactividad Utilizar shells restringidos para los operadores 1. Crear la cuenta del operador y colocar /usr/bin/rsh o /usr/bin/rksh como shell. 2. Definir la variable PATH para la cuenta del operador de manera que esta únicamente haga referencia al directorio bin dentro del directorio HOME. 3. Asignar root como dueño del archivo .profile bajo el directorio HOME de la cuenta del operador y colocar los permisos 500. 4. Crear el directorio bin dentro del directorio HOME de la cuenta del operador 5. Bajo este directorio bin, crear ligas de los binarios que se permitirá ejecutar al operador. 6. Restringir a root los permisos de ejecución para el comando /usr/bin/chsh Desactivar o personalizar el banner de telnet Pág. 6 de 8 1. Editar el archivo /etc/inetd.conf: /usr/bin/vi /etc/inetd.conf 2. Agregar la opción –b al final de la línea del servicio telnetd para desactivar el banner, o bien, agregar la opción –b seguida de un espacio en blanco y el nombre del archivo que deseamos sea desplegado al usuario cuando este se conecte al sistema via telnet. Por ejemplo: telnet stream tcp nowait root /usr/local/etc/tcpd telnetd telnetd –b /etc/issue 3. Hacer que el demonio inetd vuelva a leer su archivo de configuración: /usr/sbin/inetd –c Desactivar los servicios de red no utilizados 1. Editar el archivo /etc/inetd.conf: /usr/bin/vi /etc/inetd.conf 2. Comentar las líneas correspondientes a los servicios innecesarios: #fingerd stream tcp nowait root /usr/local/etc/tcpd fingerd fingerd 3. Hacer que el demonio inetd vuelva a leer su archivo de configuración: /usr/sbin/inetd –c 4. Fuentes de información • • • • • • • • • • • • www.seguridad.unam.mx www.cert.org/advisories “Practical Unix and Internet Security” “Halting the Hacker” www.hp.com www.software.hp.com itrc.hp.com docs.hp.com/hpux www.hpeducacional.com.mx www.faqs.org/faqs/hp/hpux-faq www.dutchworks.nl/htbin/hpsysadmin hpux.cs.utah.edu 5. Comentarios • Los puntos de vista expresados por el autor no necesariamente reflejan los de la empresa para la cuál labora. Pág. 7 de 8 • • El lector asume por completo la responsabilidad derivada del uso de este material. Este documento no se encuentra de manera alguna concluído, por lo que será actualizado constantemente (última actualización realizada el 19 de Abril del 2001). • Pág. 8 de 8