DETECCIÓN DE INTRUSIONES

 

1. Que es una detección de intrusiones

2.1. Conceptos básicos de la detección de intrusiones

2.2. Integridad

2. Detectando Intrusos

2.1. TCP Wrappers

2.2. SSH

2.3. Nessus

2.5. nmap

2.6. Cortafuegos

 

1. ¿Qué es una detección de intrusiones?

Unix guarda logs de casi todas las cosas: logíns, logouts, peticiones de conexión, fallos del equipo, negación de servicio, comandos de usuario, tráfico de paquetes y una docena de cosas más. Pero, aunque los logs son esenciales, los encargados de la seguridad de las computadoras han buscado durante mucho tiempo maneras de mejorar su valor o producir algo mejor porque, si piensa en ello, los logs por sí mismos no son nada más que evidencias forenses de una escena de asesinato. El crimen ya ha sucedido, la víctima ya está muerta y todo lo que puede hacer es reunir las pistas que han quedado.

Los progresos para mejorar la detección y respuesta han llevado a un nuevo campo de investigación; la detección de intrusiones.

La detección de intrusiones es la práctica de utilizar herramientas inteligentes y automáticas para detectar intentos de intrusión en tiempo real. Dichas herramientas se llaman Sistemas de Detección de Intrusiones (Intrusion Detection Systems, IDS).

Existen dos tipos básicos de sistemas de detección de intrusiones:

Sistemas basados en normas. Basados en bibliotecas y bases de datos de ataques y firmas responsables de ataque conocidos. Cuando el tráfico entrante se encuentra con un criterio o norma particular, se etiqueta como un intento de intrusión. La desventaja principal de estos sistemas es que dependen del paso del tiempo (la base de datos de ataques debe ser actual) y del mantenimiento diligente. Aún más, a veces puede haber una relación inversa entre la especificación de la norma y los índices de detección asegurados. Es decir si una regla es demasiado específica, los ataques que son similares pero no idénticos a ella, pasarán.

Sistemas adaptables. Estos emplean técnicas más avanzadas, incluyendo inteligencia artificial, no sólo para reconocer firmas de ataque conocidas, sino para aprender otras nuevas. Las principales desventajas de los sistemas adaptables son su elevado coste, se despliegan principalmente en entornos de investigación, son difíciles de mantener y requieren que tenga conocimientos avanzados de matemáticas y estadística.

1.2. Conceptos básicos de detección de intrusiones

En los sistemas de detección de intrusiones basados en normas hay dos métodos: prevención y reacción. La diferencia radica en el momento:

• En el método preventivo, su herramienta de detección de intrusiones en realidad escucha el tráfico de la red. Cuando se detecta una actividad sospechosa (un flujo de paquetes en particular, por ejemplo), el sistema actúa de la manera apropiada.

• En el método de reacción, su herramienta de detección de intrusiones obser­va sus logs. De nuevo, cuando se detecta una actividad sospechosa, el sistema actúa de la manera apropiada.

Esta distinción puede parecer excesivamente sutil, pero hay una gran diferencia. El método reaccionario está sencillamente un paso por delante del logging estándar; le alerta del hecho de que acaba de suceder un ataque, incluso si hace 3,5 segundos.

Por el contrario, el método preventivo permite que nuestro sistema responda mientras un atacante está planeando su asalto. Igualmente, ciertos sistemas permiten a los operadores en uso ser testigos y seguir la pista de una ataque en progreso.

Se puede conseguir un modelo de reacción utilizando herramientas de seguridad estándar. Por ejemplo, teóricamente, se podría construir un sistema de detección de pseudo intrusiones y respuesta de este modo:

• Utilizando LogSurfer para buscar cierta actividad predefinida y amenazadora en los logs. Indicando a LogSurfer que cuando encuentre tal actividad, debe responder...

• Un script que añade la dirección del atacante (o incluso su red completa) a hosts.deny para que tcpd niegue futuras conexiones.

Este es un método rápido de detección y respuesta a intrusiones. El atacante recibe un impacto, así que tiene que hacerlo funcionar. Sin embargo, este método tiene muchos defectos. Uno es que las direcciones de origen no son fiables. Se falsifican fácilmente, de manera que un atacante puede seguir intentándolo, utilizando una dirección de origen distinta cada vez.

Pero los modelos de prevención también tienen defectos. Uno es que consumen muchos recursos, ademas:  si un atacante sabe que está ejecutando un sistema de detección de intrusiones preventivo, puede hacer varias suposiciones. Una es que su IDS llevará a cabo una acción idéntica cuando se encuentre con un ataque idéntico. Por tanto, inundando su host con múltiples ejemplos del mismo ataque desde diferentes direcciones, puede realizar un ataque de saturación y, quizá, incapacitar su IDS. Por ejemplo, ¿qué ocurre si su IDS invoca a una shell para ejecutar comandos cuando está bajo un ataque? ¿Cuántos procesos shell se llevarán a cabo antes de que su sistema se estropee?. Segundo, dependiendo de la potencia de su procesador y de las limitaciones de memoria, puede verse obligado a elegir análisis del tráfico en lugar de análisis del contenido. El análisis de tráfico es menos intensivo en recursos porque está procesando títulos de paquete y no contenidos. Esto protege contra muchos ataques, pero no contra todos. Ni mucho menos. En el contenido del paquete hay un número sustancial de firmas de ataque, y el simple análisis de tráfico es insuficiente para esto.

Finalmente, ambos métodos pueden generar falsos positivos, lo que puede tener serias consecuencias. Por ejemplo, muchas personas indican a sus sistemas de detección de intrusiones que les avisen cuando se está produciendo un ataque. Después de suficientes falsos positivos, los miembros del personal técnico empezaran a ignorar dichos avisos.

La detección de intrusiones pues, no es, de ninguna manera, una ciencia exacta.

De hecho, la detección de intrusiones está todavía en pañales. Por tanto, no importa qué sistema elija, puede encontrarse con que tiene uno o más de estos problemas. Más aún, la mayoría de los sistemas de detección de intrusiones disponibles son más bien paquetes de herramientas que soluciones finales. Por consiguiente, puede verse forzado a definir sus propias normas, respuestas y convenciones de informe.

Para terminar, debería añadir que los sistemas de detección de intrusiones son difíciles de implementar y necesitan un compromiso considerable por parte de quien lo utilice sobre todo porque la cantidad de opciones a configurar los hace incomodos. Puede encontrarse con que utilizar este sistema no compensa en un análisis coste beneficio.

 

2. Detectando intrusos


Afortunadamente, existen herramientas dedicadas a facilitar la tarea de los administradores y para todos los mecanismos de seguridad que he clasificado anteriormente. Solo mostrare los que siguen a continuación ya que ha sido de los que información mas completa e inteligible he conseguido:

TCP Wrappers

Siempre se puede limitar el acceso a ciertos servicios de red que no se pueden deshabilitar completamente, como FTP o Telnet, ya que dejarlos accesibles para todos los usuarios de la red (incluso de toda Internet) es muy peligroso.

Para implementar este tipo de restricciones se utilizan los TCP Wrappers.  TCP Wrappers pertenece al software libre. De hecho, muchos sistemas Unix gratuitos (como Linux) lo traen configurado por defecto.

Este paquete es extremadamente configurable, pero es bastante sencillo. Se puede establecer cuáles serán los equipos que tendrán acceso y a qué recursos cada uno modificando el archivo /etc/hosts.allow

SSH

Actualmente se considera como uno de los más graves problemas de seguridad en Unix la transmisión de datos en texto en claro (desde los datos de una sesión de FTP hasta el mismísimo password). Actualmente, casi nadie sigue usando los métodos tradicionales para intercambio de datos entre equipos (ya sean Unix o no), ya que existen otros métodos que han entrado a sustituir a éstos y que utilizan cifrado para todas las etapas de la transmisión, de modo que un atacante lo tiene muy difícil para conseguir algo útil de lo que pueda capturar (recordemos que el cifrado de datos no protege de robos, sino que su efecto es que lo que se haya robado sea inservible o casi). Algunos ejemplos de protocolos que utilizan cifrado son TCFS o SSL.
SSH (Secure Shell) es un paquete que consta de un conjunto de utilidades destinadas a proteger la información que circula por canales inseguros, tales como una sesión Telnet, de manera que sustituye a estos programas inseguros tanto en el cliente como en el servidor. Puede ser un sustituto ideal para órdenes como ftp, telnet o cualquier comando remote* utilizando cifrado RSA, Kerberos, SecurID, TIS y/o la autenticación clásica de login y password. Además soporta otras características más avanzadas, tales como cifrado en protocolos como NFS y XWindows. Existen dos versiones de SSH, una de uso libre con fines no comerciales y otra de código fuente público, denominada OpenSSH y que no es del todo compatible con SSH (pero casi). SSH funciona en la mayoría de los Unix, Windows y MacOS, y nunca se debe sustituir un sistema como TCP Wrappers por este ya que pueden convivir los dos conjuntamente y se complementan uno al otro.

Nessus

Nessus surgió (por la falta de actualizaciones) a partir de una de las utilidades de detección de vulnerabilidades en sistemas Unix más famosas de la historia de este sistema operativo: SATAN (Security Analysis Tool for Auditing Networks), que fue renombrado a SANTA (por las connotaciones del nombre SATAN). El objetivo de SANTA y Nessus es detectar todo tipo de vulnerabilidades en sistemas Unix, desde políticas incorrectas de seguridad hasta agujeros conocidos, pasando por puertas traseras, presentando el resultado en un fichero HTML para su cómoda revisión por parte de los administradores. Nessus es una herramienta muy parecida a SATAN en su finalidad, pero que consta de muchas mejoras, tales como un cómodo interfaz gráfico, igual de fácil de manejar que SATAN y de código fuente libre.


nmap

Es una de las herramientas más poderosas para la obtención de información de sistemas (cualquier sistema, ya sea Unix o no). De hecho, nmap se está actualizando constantemente y es de código fuente libre. Proporciona una gran información de los puertos del sistema escaneado y es capaz de interpretar qué tipo de sistema operativo está funcionando en esa máquina, y esta es quizá una de sus características más interesantes. Para realizar esta interpretación, envía paquetes TCP inválidos al sistema destino, de manera que como cada sistema reacciona ante estos paquetes de una forma distinta, debido a que estas respuestas no están cubiertas en los RFCs, nmap realiza un análisis de la pila TCP del sistema, comparando este análisis con otros resultados que tenga en su base de datos (que se está ampliando constantemente) y dan como resultado la mejor aproximación al sistema operativo del destino, incluyendo los números de versión.
Estos datos proporcionan una gran información a un posible atacante, ya que le permite preparar en cuestión de pocos minutos un ataques específicos contra el sistema operativo desde el que se haya intentado atacar.

Cortafuegos (firewalls)

No es un sistema de detección sino de prevención de intrusos (mas vale prevenir que curar).
Un cortafuegos o firewall es una máquina o un conjunto de máquinas que implementan una política de acceso entre dos redes. Se trata de separar lógicamente una o más máquinas de una red de las de otra (como puede ser Internet), protegiendo a una de estas redes de las posibles amenazas de seguridad que puedan venir de la otra y limitando el acceso al exterior de las máquinas protegidas. Este espacio de máquinas protegidas se denomina perímetro de seguridad, y la red no confiable, zona de riesgo. En estas arquitecturas existe una máquina, denominada host bastión (bastion host), especialmente asegurada y que es la que hace de puente entre las dos redes filtrando el tráfico de entrada y salida y escondiendo la configuración de la red protegida del exterior.

Los firewalls son prácticamente impenetrables cuando están bien configurados. A pesar de que son bastante fiables, no son infalibles 100% asi que se deberían complementar con el resto de utilidades que he mencionado antes. Además las firewalls solo son útiles para defenderse de ataques exteriores pero puede darse el caso de que el enemigo no acceda desde el exterior.