jueves, 24 de enero de 2008

HARDENING UNIX HP-UX 11

INTRODUCCION
HP-UX es la versión de Unix desarrollada y mantenida por Hewlett-Packard desde 1983, ejecutable típicamente sobre procesadores HP PA RISC y en sus últimas versiones sobre Intel Itanium (arquitectura Intel de 64 bits); a pesar de estar basada ampliamente en System V incorpora importantes características BSD. Existen numerosas instalaciones de sistemas más antiguos, especialmente HP-UX 10.x (1995-97) o incluso 9.x. (1992-95). Apartir de la versión 11.11 (2000) se usa un sistema de numeración doble, así la 11.11 es también conocida como 11i, la 11.20 es 11iv1.5 y así sucesivamente hasta la actual 11.23 (11iv2). Hasta su ultima versión 11.31 (11iv3) en febrero del 2007.
HP-UX es, como la mayor parte de Unix comerciales, un entorno de trabajo flexible, potente y estable, que soporta una variedad de aplicaciones que van desde simples editores de texto a complicados programas de diseño gráfico o cálculo científico, pasando por sistemas de control industrial que incluyen planificaciones de tiempo real.
Durante los últimos años Hewlett-Packard, como muchos otros fabricantes, parece haberse interesado bastante por la seguridad en general, y en concreto por los sistemas de protección para sus plataformas; prueba de ello es la gama de productos relacionados con este campo desarrollados para HP-UX, como el sistema de detección de intrusos IDS/9000 para HP-UX 11.x corriendo sobre máquinas HP-9000 o la utilidad Security Patch Check, similar al PatchDiag de Sun Microsystems. También es importante destacar las grandes mejoras en cuanto a seguridad del sistema se refiere entre HP-UX 9.x, HP-UX 10.x y muy especialmente HP-UX 11.x.
Una visión general de UNIX es que este sistema requiere un cuidado especial y una administración activa. Dennis Ritchi, uno de los creadores originales, escribió lo siguiente acerca de la seguridad de UNIX, “Unix no fue diseñado para ser seguro, Fue diseñado con las suficientes características para hacer a la seguridad practica”. Unix tiene varios mecanismos de seguridad disponibles. Sin embargo, estos serán inútiles cuando el sistema esta mal configurado, usado despreocupadamente, o contiene software de dudosa procedencia.









EL ENTORNO DE SEGURIDAD


Las computadoras y elementos de red conectados a redes, son vulnerables a un gran número de ataques, tales como:

1. Programas Backdoor
2. Programas Sniffing
3. Password grabber y herramientas de cracking
4. Aprovechamiento de defectos en los servicios del sistema operativo
5. Negación de servicio (DoS)

Algunos de esto ataques están basados en técnicas que son publicas, con scripts y otras herramientas disponibles a crackers con poco conocimiento para aplicar exploits en contra del sistema. Una vez que el sistema se ha visto comprometido, un intruso puede hacer varias cosas, dentro de las cuales se encuentran las siguientes:

1. Modificar o destruir información
2. Revelar información clasificada
3. Instalar código malicioso para reunir información
4. Utilizar el servidor comprometido para atacar otros sistemas

Cabe mencionar que ningún sistema es absolutamente seguro, pero medidas deben ser establecidas para fortalecer el sistema operativo. Una continua vigilancia es requerida para mantener los sistemas seguros.




EL INICIO

Para comenzar nuestro proceso de fortalecimiento es necesario saber como es que el atacante pudo tener acceso a nuestro sistema, cuales fueron sus recursos, esto con el fin de negarle esos recursos tratando de neutralizar su avance o por lo menos no facilitarle las cosas.

El atacante principia por obtener información acerca del sistema que va a ser su blanco. Esto es toma en cuenta lo siguiente:

· Que clase de maquina es?
· Cual es el nombre de la maquina?
· Cual es la versión del sistema operativo?
· Que aplicaciones se ejecutan en la maquina?
· Cuales son los nombres de acceso al sistema?
· Que tan bien esta administrada la maquina?
· El administrador esta en línea?







La siguiente lista provee de comandos y servicios que proveen información acerca del sistema, algunos de estos ni siquiera requieren un nombre de usuario valido o clave.

Dtgreet
telnet
finger
sendmail
rwho
ruptime
rusers
rstat
swlist
rpcinfo
showmount
snmpd


FORTALECIENDO HP-UX 11

Instalación mínima del sistema y aplicación de parches
Se asume que el servidor tiene la imagen mas pequeña posible de OS instalada y los últimos parches desarrollados han sido instalados. La reducción del tamaño implica menos servicios y mayor seguridad. Pero podría causar inconvenientes. Se deberá escoger seguridad sobre inconveniencia – si existe duda acerca del servicio, deshabilítelo y observe el efecto.

Se recomienda que la configuración básica sea como sigue:

Primary Swap Size [ 256Mb ->]
Secondary Swap Size [ None ->]
Software Selection [ Minimal system, networking (Eng.) ->]
Software Language [ English ->]
Locale Setting [ default (C) ->]
File System file name length [ Long ->]
/home Configuration [ None ->]
How many disks in root group [ One ->]
Make volatile dirs separate [ True ->]
Create /export volume [ False ->]

Es recomendable que los siguientes parches sean cargados:

Accounting -> Accounting
InternetSrvcs -> General network applications and daemons
MailUtilities -> User mail agents and related tools
Networking -> HP-UX_11.x_LanLink_Product
NonHP-Terminfo -> Non HP terminfo files
OS-Core -> Core Operating System
SecurityMon -> SecurityMon
SystemAdmin -> HP-UX System Administration Tools
TextEditors -> TextEditors
TextFormatters -> TextFormatters


Con el fin de llevar a cabo una buena práctica de administración de parches es recomendable instalar el “security_patch_check” de HP para identificar los parches de seguridad necesarios. Esta utilidad es un programa de Perl que lleva a cabo lo siguiente:
Automáticamente descarga un catalogo de parches actuales de seguridad
Compara la base de datos de productos instalados con el catalogo de parches de seguridad
Compara un catalogo de productos con el catalogo de parches de seguridad
Identifica parches “warnings” que deberían ser removidos
Identifica parches nuevos que deben ser añadidos


Desactivar servicios innecesarios
Muchos servicios innecesarios se encuentran instalados por default cuando se instala el sistema operativo HP-UX 11.
El comando para lista los servicios es:
swlist –l product
Hay que considerar remover servicios que no sean necesarios:
K100dtlogin.rc S333hpsppci100 S525rarpd S660xntpdK200tps.rc S340net S530rwhod S700acctK900nfs.server S370named S535inetsvcs S705pwgrS006hpfc S400nfs.core S540sendmail S710hparamgrS008net.init S406nisplus.server S550ddfa S710hparrayS100swagentd S408nisplus.client S560SnmpMaster S720lpS120swconfig S410nis.server S565OspfMib S722pdS200clean_ex S420nis.client S565SnmpHpunix S730cronS202clean_uucp S430nfs.client S565SnmpMib2 S740supprtinfoS204clean_tmps S440comsec S565SnmpTrpDst S760auditingS206clean_adm S462maclan S570dce S770audioS220syslogd S490mrouted S590Rpcd S780slsdS230ptydaemon S500inetd S600iforls S800spaS300nettl S510gated S610rbootd S870swagentdS320hpether S520rdpd S620xfs S900hpfcmsS323hpbase100 S522ppp S630vt

Utilice el comando swremove para quitar productos no necesarios. Tal vez sea necesario utilizar –x
También es necesario remover todo lo contenido en los directorios /sbin/rc3.d, y /sbin/rc4.d







Configurar la sincronización de tiempo usando NTP

La sincronización de tiempo puede ser establecida por medio de xntpd (daemon) y ntpdate (client). Mientras el demonio puede proveer de más funcionalidades a la red, también representa vulnerabilidades, una de ellas es xntpd buffer-overflow. A diferencia de xntpd el cual escucha en el puerto 123 constantemente, ntpdate es un cliente el cual será ejecutado únicamente cuando sea necesario para obtener la hora del día desde un servidor NTP predefinido.
Se recomienda que ntpdate sea usado para establecer el sistema de reloj de acuerdo al servidor NTP en el Packet Core Network. Para la actualización precisa de la hora ejecute este comando cada hora:
0 * * * * /usr/sbin/ntpdate –s NTP_server_addr >> /var/log/ntpdate.log
El –s switch registrara acciones de ntpdate a través de syslog en lugar de mandarlo a la salida estándar.


Monitoreo de registros

Una vez que el atacante ha ganado acceso a nuestro sistema va llevar a cabo acciones no autorizadas, por lo cual es necesario llevar un monitoreo de quien se encuentra dentro del sistema y que esta haciendo.

Monitoreo de archivos de registro

El atacante generalmente revisa los registros para entender el uso del sistema basándose en patrones y elimina estos para no dejar rastro.
Se debe de llevar acabo un monitoreo de actividad inusual de los archivos los que se encuentran en los siguientes directorios:

/var/adm/btmp Intentos de acceso fallidos
/var/adm/cron/log Trabajos de cron completados
/var/adm/lp/log Registros de impresión
/var/adm/sulog Registro de uso del comando su
/var/adm/sw/swagent.log Registro del agente SD-UX
/var/adm/syslog/syslog.log Registro general de varios servicios
/var/adm/wtmp Intentos de acceso exitosos

Comandos:
# who –R Despliega a los usuarios que se encuentran en el sistema
# last –R Despliega a los usuarios que se encontraban en el sistema
# lastb –R Despliega una lista de accesos fallidos al sistema
# more /var/adm/sulog Despliega una lista de accesos fallidos y exitosos al sistema que hayan ejecutado el comando su




Monitoreo de conexiones de red

Se utilizan los siguientes comandos para este propósito

netstat –f inet
Este comando es una herramienta simple para monitorear conexiones de red actualmente establecidas. Con esto se podrá supervisar direcciones entrantes de nombres host no comunes.

Idlookup
En caso de notar una conexión de un host inusual, con este comando se puede determinar el ID del usuario del intruso en el host externo. Simplemente se debe de especificar la dirección IP del host y el número de puerto.

El demonio de los servicios de Internet (inetd) invoca procesos para manejar solicitudes de conexiones entrantes para una variedad de servicios de red. El demonio esta diseñado para invocar todos los servicios de Internet que se necesiten con el fin de reducir la carga del sistema. Este se ejecuta al inicio del sistema. El inetd comienza con la opción de registro deshabilitada. La opcion –l habilita el registro de conexiones dichos registro son almacenados en /var/adm/syslog/syslog.log


Monitoreo con SWATCH

Swatch es una herramienta simple escrita en Perl que esta diseñada para monitorear archivos de registro. El programa explora los registros, vigila actividad inusual y toma acciones cuando una entrada de registro sospechosa es identificada. Tales mensajes incluyen enviarle un mensaje al root, desplegar el mensaje en pantalla o ejecutar un programa.

Se puede ejecutar de la siguiente forma una vez que se haya efectuado la configuración de los archivos de control de la operación del programa.

# swatch –f /var/adm/syslog/syslog.log >/dev/console


Monitoreo de actividad sospechosa con IDS/9000

El sistema de detección de intrusos (Intrusión Detection System) provee un medio más conveniente y robusto para monitorear actividad sospechosa. Este programa monitorea actividades de usuarios y del sistema por medio de patrones que puedan corresponder a una violación de seguridad. Este al enterarse de una violación manda una alerta al administrador. Es de mencionar que este programa no evita un ataque, simplemente alerta de el para que se tomen acciones correspondientes. El IDS no identifica vulnerabilidades en el sistema.


Puntos de detección:
Modificación de archivos y directorios
Cambios de archivos de registro
Creación de archivos de configuración UID
Repeticiones de intentos de acceso fallidos
Repeticiones de intentos de uso del su fallidos
Ataques de condición de carreras (race attacks)
Ataques de buffer overflow
Modificación de otros archivos de usuarios
Monitoreo de inicio de sesiones interactivas
Monitoreo de entradas y salidas del sistema


Mejorando las claves de seguridad y de usuario con Trusted System

El sistema soporta una gran variedad de mecanismos de autentificación. La siguiente carta de comparación nos muestra una comparativa de características con el System Trusted, el cual es incluido en el producto SecurityMon.
La herramienta SAM (system administrador manager) es la recomendada para convertir el sistema en Trusted System. El SecurityMon debe estar instalado.





Los siguientes pasos son realizados por SAM durante el proceso de conversión:
• Archivo /etc/passwd es copiado al archivo /etc/passwd.old.save backup
• Claves son copiadas desde /etc/passwd a /.secure/etc/passwd
• Claves encriptadas en los archivos originales son reemplazados con “*”.
• ID Auditoria es creado para cada usuario.
• La bandera de auditoria es habilitada para todos los usuarios
• Archivos batch y crontab son convertidos para el uso de ID de Auditoria.


Control de Accesos

Accesos a archivos

Si el atacante logra entrar el sistema de permisos de los archivos es la última línea de defensa para proteger los datos. Configurar apropiadamente los permisos de los archivos es muy importante para la defensa del sistema.


Acciones del atacante:
Modificar /etc/passwd y otros archivos críticos
Remover entradas del sistema de archivos de registro
Insertar código malicioso en los ejecutables del sistema
Copiar archivos confidenciales

Los archivos tienen permisos de escritura, lectura y ejecución, al asignarle estos permisos dependiendo del tipo de archivo ayuda a reforzar el acceso a datos. Se utilizan los siguientes comandos:

chmod con las opciones r w x

SUID es un bit que permite usuarios sin privilegios la habilidad de realizar tareas privilegiadas. Nunca se deben de instalar programas con SUID a menos que sean de una fuente confiable. Se debe de utilizar el comando find para inventariar y monitorear programas SUID. Lo mismo se recomienda para SGID


Configurar control de acceso a la red.

Se necesita desactivar el acceso de red de root con el siguiente comando:
echo “console” > /etc/securetty

Con excepción de la consola, un usuario puede acceder como el mismo y entonces usar el comando su para volverse root. Entonces remover todas las entradas de “pseudo” cuentas en el archivo /etc/passwd file o configurarlas con claves para prevenir su uso con el acceso interactivo.

Desactive el uso de FTP para root y otras cuantas del sistema por medio de los siguientes comandos:
touch /etc/ftpusers
Para usuarios en root daemon bin sys nobody\
noaccess nobody4 uucp nuucp adm lp \ smtp listen do echo $user >> /etc/ftpusers
done chown root /etc/ftpusers
chgrp root /etc/ftpusers
chmod 600 /etc/ftpusers

Remueva soporte de .rhosts de /etc/pam.conf.

grep –v rhosts_auth /etc/pam.conf > \
/etc/pam.new
mv /etc/pam.new /etc/pam.conf
chown root /etc/pam.conf
chgrp sys /etc/pam.conf
chmod 644 /etc/pam.conf

Instale TCP Wrapper tcpd binario en /usr/sbin . Si se tiene necesidad de dejar telnet y FTP en el sistema, póngalos atrás de TCP Wrapper. Se recomienda el uso de SSH en lugar de telnet y FTP


Vulnerabilidades con NESSUS

Nessus es una herramienta que simplifica el proceso de búsqueda de vulnerabilidades, examinando los archivos de configuración local para identificar puntos débiles en el sistema. Este programa analiza cada puerto y trata de determinar que puertos pueden ser vulnerables a ataques en algunos casos, nessus nos explica porque y como el servicio puede ser deshabilitado.
Incluye un mecanismo de reporte muy flexible y puede ser ejecutado en modo no destructivo.
Fortaleciendo HP-UX con Bastille

Bastille es un programa, basado en la exploración del host, que examina la configuración actual del sistema, presenta una lista de verificación de medidas de seguridad recomendadas y basado en las respuestas del administrador procede hacer los cambios necesarios para fortalecer el sistema. Entre otras cosas, el programa deshabilita servicios que no son necesarios, remplaza mensajes de banner, habilita claves de acceso en inetd, modifica configuraciones del sistema y puede configurar el firewall. Si la configuración del programa es muy restrictiva Bastille puede revertir el proceso a su estado anterior.
Firewall; IPFilter

Objetivos:

Restringe el flujo de información entre las redes y hosts
Monitorea el flujo de información
Previene que los atacantes obtengan información del sistema y de la red

IPFilter es un programa que provee de un medio para el filtrado y registro de paquetes. Con esto es posible definir una lista de reglas para determinar que paquetes deben ser permitidos a través del filtro y cuales bloqueados. El filtrado esta basado en las direcciones fuente y destino, numero de puerto y protocolo de información almacenado en el encabezado del paquete.





LINKS
TEMAS
http://www.securitydocs.com/library/2237
UX-HP 11 Operating System Hardening, Guideline Document
http://www.blacksheepnetworks.com/security/resources/hp-ux11.html
Securing HP-UX 11 por Larry Harker, Mayo 30 2001
http://www.docs.hp.com
Guía para los administradores de sistemas HP-UX, Edición 9.


BIBLIOGRAFIA

Practical UNIX and Network Security Part 1 y 2 H3541S, Version D.02

No hay comentarios: