Seguridad en HP-UX Recomendaciones de seguridad para el sistema operativo HP-UX de Hewlett Packard Company. César Vega Calderón EDS de México, S.A. de C.V. Abril 19 de 2001 • Resumen • Introducción • Guidelines de seguridad para HP-UX • Comentarios • Referencias • Revisión histórica Resumen Este documento contiene una serie de recomendaciones de seguridad para el sistema operativo HP-UX de Hewlett Packard Company. Éstas aplican tanto para una instalación en frío del sistema operativo, como para el robustecimiento de la seguridad de un sistema productivo. Introducción De sobra es sabido que el sistema operativo Unix no es seguro en absoluto y el 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 configurarse para 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 configuración 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 reparaciones • 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 documento 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, es altamente recomendable 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. Guidelines de seguridad para HP-UX • Convertir el sistema a Trusted System 1. Realizar un respaldo completo del sistema y asegurar que la información pueda ser recuperada, es decir, un respaldo í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 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. IAsignar 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. IILa 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: /usr/contrib/bin/nettune -h HP-UX 11.00: /usr/bin/ndd -h ip_forwarding 2. Determinar si está activado el forwarding: HP-UX 10.20: /usr/contrib/bin/nettune -l ip_forwarding HP-UX 11.00: /usr/bin/ndd -get /dev/ip ip_forwarding 3. Desactivar el forwarding: HP-UX 10.20: /usr/contrib/bin/nettune -s ip_forwarding 0 HP-UX 11.00: /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 1. Si es necesario compartir un sistema de archivos vía 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 vía 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. ICrear 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 vía 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: # Permitir las conexiones vía ftp a las máquinas # 1.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 vía 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. IAsegurarse 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. IRevisar 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. IRevisar 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. IParar los servicios de Internet: /sbin/init.d/inetd stop 3. IIArrancar los servicios de Internet: /sbin/init.d/inetd start • Limitar a la consola las conexiones de root 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. IDefinir 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. VRestringir a root los permisos de ejecución para el comando /usr/bin/chsh • Desactivar o personalizar el banner de telnet 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 éste se conecte al sistema vía 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 Comentarios Los puntos de vista expresados por el autor no necesariamente reflejan los de la empresa para la cual labora. El lector asume por completo la responsabilidad derivada del uso de este material. Este documento no se encuentra de manera alguna concluido, por lo que será actualizado constantemente (última actualización realizada el 19 de Abril del 2001). Referencias Practical Unix and Internet Security Búsqueda en Google Halting the Hacker Búsqueda en Google Seguridad UNAM www.seguridad.unam.mx CERT Advisories www.cert.org/advisories HP.com www.hp.com HP Software www.software.hp.com HP IT Resource Center itrc.hp.com HP Docs docs.hp.com/hpux Faqa.org www.faqs.org/faqs/hp/hpux-faq HP SysAdmin www.dutchworks.nl/htbin/hpsysadmin HP-UX hpucs.utah.edu Revisión histórica • Liberación original: • Última revisión: 7 de octubre de 2010 La Subdirección de Seguridad de la Información/UNAM-CERT agradece el apoyo en la elaboración y revisión de este documento a: • César Vega Calderón • Galvy Cruz Valencia • Andrés Leonardo Hernández Bermúdez Para mayor información acerca de éste documento de seguridad contactar a: UNAM-CERT Equipo de Respuesta a Incidentes UNAM Subdirección de Seguridad de la Información Dirección General de Cómputo y de Tecnologías de Información y Comunicación Universidad Naciónal Autónoma de México E-Mail: seguridad@seguridad.unam.mx http://www.cert.org.mx http://www.seguridad.unam.mx ftp://ftp.seguridad.unam.mx Tel: 56 22 81 69 Fax: 56 22 80 43