Siguiente: Modelo de funcionamiento Arriba: Sistemas de Detección de Intrusiones Previo: Historia
2.1.1 Seguridad, dos puntos de vista
2.1.6 Elementos de la infraestructura de seguridad
2.1.6.2 Identificación y Autenticación
2.2 Motivos que originan problemas de seguridad
2.3 Elementos de la detección de intrusiones
2.3.2 Fuentes de datos, monitorización
La detección de intrusiones es el proceso de monitorizar redes de ordenadores y sistemas en busca de violaciones de políticas de seguridad [1]. Los sistemas de detección de intrusiones están compuestos por tres elementos funcionales básicos:
La detección de intrusiones es la evolución de las auditorías tradicionales. El término auditar, en inglés "audit", y este del latín "audīre" (oír), se define como "Examinar la gestión económica de una entidad a fin de comprobar si se ajusta a lo establecido por ley o costumbre". [2]
En términos de seguridad informática, llevar a cabo la auditoría de un sistema significa examinar y analizar el rastro de auditoría ("audit trail") que genera el sistema operativo y otros elementos del sistema. La revisión de los eventos se llevaba a cabo entre otros motivos para asegurarse de que no se violaban una serie de políticas de seguridad. Cuando se encontraba alguna irregularidad, surgían nuevos elementos básicos que cubrir:
A medida que las máquinas se fueron haciendo más rápidas y complejas, el número de sucesos a analizar era tal que no podía llevarse a cabo de la manera tradicional. Por esta razón se desarrollaron mecanismos cada vez más eficaces para simplificar la labor de los auditores de sistemas. Los primeros sistemas que se encargaban de esta labor utilizaban soluciones basadas en técnicas de reducción de eventos y patrones estadísticos. Este aspecto está explicado más a fondo en el capítulo 1.
Antes de hacer que un sistema o red sea seguro, primero es necesario definir lo que se entiende por términos como seguridad, confianza, vulnerabilidad, etc.
La seguridad se puede entender desde dos puntos de vista; el práctico y el formal.
Desde una perspectiva práctica, un sistema seguro es "aquel con que se cuenta que actúe de la manera esperada". Este punto de vista tiene unas explícitas implicaciones de confianza. Pero la confianza no se puede medir. No podemos confiar en que un sistema se comporte como debe. Nadie nos puede asegurar que un sistema se está comportando como realmente tiene que hacerlo.
Según el enfoque formal, más preciso, la seguridad se define a través de una "tríada de conceptos": confidencialidad, integridad y disponibilidad.
La confidencialidad implica que la información sea accedida exclusivamente por el personal autorizado a la misma.
La integridad consiste en la necesidad de mantener la información inalterada.
La disponibilidad se refiere a la necesidad de ofrecer un servicio ininterrumpidamente, de forma que pueda ser accedido en cualquier momento y desde cualquier lugar, evitando en lo posible que algún tipo de incidencia detenga el mismo.
Otro aspecto muy importante en la seguridad de sistemas es la confianza. La confianza es la esperanza que se tiene de que un sistema se comporte como realmente debería. Establecer relaciones de confianza sin garantías conlleva la aparición de vulnerabilidades, que se convierten en potenciales amenazas.
Las vulnerabilidades son deficiencias o agujeros de seguridad del sistema que pueden ser utilizadas para violar las políticas de seguridad. Existen muchos tipos de vulnerabilidades. Pueden ser debidas a problemas en el diseño de una aplicación, bien de software o de hardware. O también pueden ser debidas a un plan poco exhaustivo o insuficiente de políticas de sistema.
Las amenazas son el resultado de explotar las vulnerabilidades. Una amenaza es una situación que tiene la capacidad de perjudicar o dañar al sistema. Aunque tanto las amenazas como las vulnerabilidades estén muy relacionadas, no son lo mismo. La detección de intrusiones se debe encargar de identificar y responder a ambas.
Las políticas de seguridad son el resultado de documentar las expectativas de seguridad. El concepto de seguridad, como se explicó antes, está relacionado con el comportamiento esperado de un sistema. Se puede afirmar que las políticas de seguridad intentan plasmar de alguna manera en el mundo real, los conceptos abstractos de seguridad.
Hay dos formas de definir las políticas de seguridad: procesal (o directiva) y formal.
La política de seguridad procesal consiste en plasmar de forma práctica las ideas o filosofías de la empresa en cuanto a seguridad. Aquí abajo se puede observar el funcionamiento básico de esta forma de entender las políticas de seguridad.
Política |
Procedimiento |
Práctica |
Necesitamos proteger nuestro servidor Web contra accesos no autorizados. |
Se mantendrá actualizado el servidor Web en cuanto a seguridad. |
Se comprobará diariamente si existen parches de seguridad del servidor Web, en cuyo caso se aplicarán. |
Se instalará un IDS configurado para comprobar que la actividad en el servidor Web es normal. |
Se instalará la última versión del "Snort", y se aplicarán los cambios de configuración pertinentes para concentrar la vigilancia especialmente en el servidor Web. |
Tabla 2‑1 - Ejemplo de política de seguridad procesal
Hay que señalar que los objetivos de la política de seguridad de un sistema son similares a los de los códigos legales. Ambos pretenden proteger a los usuarios legítimos del sistema de los delincuentes. Las políticas de seguridad se escriben en lenguaje informal, no de forma matemática.
Una política de seguridad formal es un modelo matemático del sistema que abarca todos los posibles estados y operaciones así como un esquema de cómo cada estado y operación pueden tener lugar. Definir este tipo de política de seguridad es una ardua labor. Es más apropiada para los diseñadores de sistemas de detección de intrusiones porque, al estar definida de una forma precisa, es más fácil de traducir en patrones de detección. Además, esta forma de describir el sistema ayuda al diseñador a escoger el tipo de información que se debe recopilar para el análisis.
Aunque la detección de intrusiones pueda ser uno de los sistemas más importantes en el ámbito de la seguridad, no es la solución definitiva. Existen otros elementos que ayudan en la labor de mantener un sistema seguro, sin los cuales no se podría obtener un nivel apropiado de fiabilidad. En una instalación física segura, como un edificio, se utilizan materiales robustos para su construcción. Se sitúan ventanas de forma que no sean fácilmente accesibles por ladrones. Se colocan barreras y controles de acceso alrededor de la instalación. En el interior, además, se dispone de sistemas de vigilancia y alarmas, así como de personal debidamente equipado que patrulla continuamente la instalación. Este tipo de protección se encuentra a diario en bancos o instalaciones militares.
Aunque se contara con los mejores equipos de alarma de ladrones del mundo, a nadie se le ocurriría pensar que podrían sustituir al resto de elementos de la infraestructura de seguridad del complejo.
Pues bien, esto mismo ocurre con los ordenadores y las redes de datos. Hay numerosos componentes y funciones que forman parte del intrincado plan de estrategias de protección de un sistema. Algunos de los cuales se comentan a continuación.
El control de acceso restringe el acceso a objetos según los permisos de acceso del sujeto. Se divide en Control de Acceso Obligatorio (MAC), en el que los permisos de acceso los proporciona el sistema; y el Control de Acceso Discrecional (DAC), en el que los permisos de acceso los controla y configura el propietario del objeto.
Los mecanismos de identificación y autenticación (I&A) posibilitan la identificación adecuada de sujetos y objetos al sistema.
Estos elementos se pueden dividir en tres categorías, dependiendo de los datos que necesiten: lo que sabes, lo que tienes, lo que eres. Todas y cada una de las categorías implica un secreto que sólo conocen el sistema y el usuario. Si el secreto del usuario coincide con el que guarda el sistema, se valida la identidad del usuario y se obtiene permiso de acceso al sistema.
"Lo que sabes" se corresponde con el mecanismo básico de I&A, en el que cada sujeto se identifica y autentifica con un nombre de usuario y una contraseña. Desgraciadamente, este mecanismo ha demostrado ser ineficaz ante varios ataques, como "password-crackers" (rompedores de contraseñas) o troyanos que capturan actividad de teclado. Esta técnica de autenticación está siendo lentamente reemplazada por otras más robustas, de conocimiento cero que evitan el acto de pasar el secreto en sí mismo. [3]
La siguiente categoría, "lo que tienes" se puede ejemplificar claramente en sistemas "token-based" (basados en testigos), tales como los que necesitan el uso de una tarjeta inteligente, una clave ("key"), un disco especial. Muchos de estos testigos se han diseñado para utilizar medios criptográficos y soportes físicos resistentes para protegerse de ataques o suplantaciones de identidad (enmascaramiento).
Por último "lo que eres" representa a los mecanismos de I&A que utilizan elementos biométricos tales como la voz, huellas dactilares, o retina.
Los procesos de autenticación también se utilizan para proporcionar seguridad, y no sólo para dar acceso al sistema a los usuarios. Además, también sirven a los sistemas de detección de intrusiones para detectar si los comportamientos sospechosos son iniciados por usuarios legítimos o intrusos.
El cifrado es probablemente el método más antiguo utilizado para proteger información. No sólo permite ocultar información a sujetos no autorizados, sino que permite detectar posibles alteraciones, intencionadas o accidentales, en la misma.
El cifrado es el proceso por el cual un documento en claro, sometido a un algoritmo de cifrado con una clave, da lugar a un documento cifrado. Aunque el cifrado protege en gran medida la información, no puede evitar que sea eliminada de forma malintencionada. No puede proteger el documento antes de ser cifrado ni después de ser descifrado. Además, es completamente inútil si la clave es descubierta.
Los cortafuegos proporcionan una barrera de seguridad entre redes de distintos niveles de confianza o seguridad, utilizando políticas de control de acceso de nivel de red. Los elementos que entran en este grupo son por ejemplo los servidores "proxy", filtros de paquetes de red, túneles de datos cifrados (también conocidos como Redes Privadas Virtuales (VPN)). Los cortafuegos filtran paquetes de red, permitiendo o denegando su paso según las políticas establecidas. También hacen traducciones de direcciones, permitiendo mantener oculta la configuración interna de una red local.
Los problemas de seguridad pueden deberse a una enorme variedad de razones. No obstante, la etiología de la gran mayoría de los problemas de seguridad se divide en tres categorías: diseño/desarrollo, gestión, y confianza.
Los problemas originados por un diseño o desarrollo ineficaces afectan tanto al software como al hardware. Un ejemplo de esto lo tenemos en las tarjetas inteligentes que albergan claves de cifrado. Se ha conseguido extraer muchas de estas claves de las tarjetas reproduciendo el reloj adecuado y variando el voltaje de algunas señales eléctricas de entrada. Otro ejemplo clásico es el que ocurre cuando un usuario malicioso substituye un valor en un programa en el intervalo de tiempo en que este no lo está usando. Este fallo se denomina condición de carrera ("race condition"), y tiene lugar cuando aparece un intervalo entre el momento de creación de un valor y el de su chequeo. Otro ejemplo famoso es el que consiste en desbordar el "buffer" de entrada de una determinada aplicación, pasándole como argumentos unos parámetros intencionadamente largos, provocando la caída del programa y consiguiendo entrar al sistema, casi siempre con privilegios de administrador.
Muchos de estos problemas se pueden prevenir mediante una sólida formación en mecanismos de diseño y desarrollo seguro, y sometiendo a los productos a duros controles de calidad.
En este grupo entran los problemas debidos a una incorrecta configuración del sistema o de cualquier mecanismo encargado de protegerlo. Son de índole diversa, como por ejemplo una inadecuada aplicación de los permisos de los archivos de sistema o una plantilla de seguridad demasiado permisiva. También entrarían aquí situaciones en la que bien los administradores o los usuarios sortean los mecanismos de seguridad de alguna manera. Por ejemplo, cuando en una red local, protegida mediante un cortafuegos, alguien decide utilizar un módem para establecer una conexión con el exterior. Esta conexión está, naturalmente, burlando los controles establecidos por el administrador.
Los problemas más agudos son los relacionados con la confianza. Y muchas veces ocurren por no diferenciar entre el entorno de desarrollo y el de de producción. Como ejemplo está el sistema operativo UNIX. Durante sus comienzos, fue desarrollado en un entorno universitario. Con el paso del tiempo, sin embargo, surgieron expectativas comerciales para este sistema. Ya no iba a ser utilizado exclusivamente por programadores o ingenieros de sistemas. Al principio los diseñadores confiaban en que los usuarios utilizaran el sistema según las especificaciones, en un determinado entorno bajo unas características especiales. Los usuarios confiaban en que hubiera un administrador controlando el sistema de forma fiable y competente. Pero ¿qué pasaba cuando se rompía esta confianza? Este escenario sigue teniendo lugar, provocando fallos de seguridad.
A la hora de proteger un sistema basándose en los registros que se analizan mediante una auditoría requiere que estos registros sean almacenados de una forma segura en un entorno distinto al del sistema protegido. Este requisito lo cumple cualquier sistema de detección de intrusiones con un mínimo de calidad. Esto se hace por varias razones. Para evitar que el intruso pueda eliminar los registros, para evitar que el intruso pueda alterar la información contenida en los registros y para no perjudicar con el mecanismo de detección de intrusiones el rendimiento del sistema a proteger.
En este tipo de arquitectura el sistema que ejecuta el sistema de detección de intrusiones se denomina "host" y el sistema monitorizado "target" (objetivo).
La fuente de datos es una de las primeras cosas a tener en cuenta a la hora de diseñar un sistema de detección de intrusiones. Estas fuentes se pueden clasificar de muchas maneras. En lo que respecta a la detección de intrusiones las clasificaremos por localización. De esta forma, la monitorización de sistemas, y por tanto la detección de intrusiones, se puede dividir en cuatro categorías: "host", red, aplicación y objetivo. Usaremos el término "monitorizar" como el acto de recoger datos de una determinada fuente y enviarlos a un motor de análisis.
· Monitores basados en máquina ("host based"): Recogen los datos generados por un ordenador, normalmente a nivel del sistema operativo. Los registros de sucesos y las colas de auditoría pertenecen a este grupo.
· Monitores basados en múltiples máquinas ("multi-host based"): Como su propio nombre indica, utiliza la información recogida en dos o más máquinas. Su enfoque es muy similar al basado en máquina, con la dificultad añadida de tener que coordinar los datos de varias fuentes.
· Monitores basados en redes ("network based"): Capturan paquetes de red. Para ello, normalmente se utilizan dispositivos de red en modo promiscuo, convirtiendo al sistema en un "sniffer" o rastreador.
· Monitores basados en aplicación ("application based"): Registran la actividad de una determinada aplicación. Por ejemplo, los registros de un servidor ftp.
· Monitores basados en objetivos ("target based"): Estos monitores difieren ligeramente del resto porque generan sus propios registros. Utilizan funciones de cifrado para detectar posibles alteraciones de sus objetivos, y contrastan los resultados con las políticas. Este método es especialmente útil cuando se usa contra elementos que, por sus características, no permiten ser monitorizados de otra forma.
· Monitores híbridos ("hybrid"): Combinan dos o más fuentes de distinto tipo. Cada vez es más frecuente encontrarse con productos de detección de intrusiones basados en este punto de vista. Así, amplían sus posibilidades de detección.
Existen productos que combinan varias estrategias de monitorización. Estas soluciones se denominan soluciones integradas.
Hay que añadir que existen sistemas de detección de intrusiones que reciben el nombre de NNID ("Network Node Intrusion Detector"), es decir, Detector de Intrusiones de Nodo de Red. En realidad, son un caso especial de la detección basada en red. Este nombre se aplica cuando el monitor basado en red se sitúa en un "host", monitorizando los paquetes destinados u originados por la máquina anfitriona. Una de las razones más importantes para hacer esto es para sortear el problema de las encriptaciones durante la comunicación, ya que el tráfico es cifrado o descifrado por el propio "host". Un detector basado en red convencional no podría analizar el tráfico en un punto intermedio entre dos nodos que cifraran sus comunicaciones. Los NNIDS son también útiles en entornos de red con conmutadores ("switches") en los que un "host", aunque esté en modo promiscuo, sólo percibe el tráfico destinado a él. En el siguiente capítulo, en el apartado 3.1.2.1 "Paquetes de red", se comenta en detalle este último aspecto.
Después del proceso de recopilación de información, se lleva a cabo el proceso de análisis. La detección de intrusiones también se puede clasificar según los objetivos del motor de análisis. Los dos tipos principales de análisis son:
· Detección de usos indebidos ("misuse"): Para encontrar usos indebidos se comparan firmas (1) con la información recogida en busca de coincidencias.
· Detección de anomalías: Para la detección de anomalías se manejan técnicas estadísticas que definen de forma aproximada lo que es el comportamiento usual o normal.
La siguiente figura muestra un esquema general de detector de intrusiones de usos indebidos (mediante comparación de patrones) y de anomalías.
Figura 2‑1 - Esquema general de un Sistema de Detección de Intrusiones
La mayoría de los detectores son de usos indebidos, anomalías o una mezcla de ambos. Algunas empresas están empezando a utilizar también técnicas específicas para la detección de ataques de denegación de servicio (DoS), dadas sus características especiales.
Aparte del análisis basado en firmas y estadísticas, también existe el análisis de integridad. Este es el método utilizado por las herramientas de chequeo de integridad de ficheros, que complementan a los Sistemas de Detección de Intrusiones. Estas herramientas detectan cambios en ficheros u objetos, utilizando mecanismos robustos de encriptación tales como funciones resumen ("hash functions").
Otro enfoque a la hora de distinguir formas de detección de intrusiones es teniendo en cuenta el uso que hacen los análisis del tiempo:
· Por lotes ("batch mode"): Cada intervalo de tiempo se procesa una porción de los datos recibidos, enviando las posibles alarmas de intrusiones después de que hayan ocurrido.
· Tiempo real: Los datos son examinados en el tiempo en que son recibidos (o con un retardo mínimo). La aparición de los análisis en tiempo real hizo posible las respuestas automáticas.
El mecanismo de respuesta, explicado en detalle en el capítulo 3, es otro de los factores que ayudan a definir el tipo de sistema de detección de intrusiones:
· Respuestas pasivas: En este caso, el detector no toma acciones que puedan cambiar el curso de un ataque. En vez de esto, se limita a enviar o registrar la alarma correspondiente al responsable cualificado.
· Respuestas activas: Pertenecen esta categoría aquellos sistemas que, además de generar la alarma correspondiente, reaccionan modificando el entorno. Un ejemplo de este tipo de respuesta activa consiste en el bloqueo de las acciones del intruso, o el cierre de la sesión del usuario sospechoso.
Lo visto hasta ahora permite realizar una clasificación de los IDSs según diversos criterios. Aunque hay más formas de clasificar estos sistemas, se han sintetizado las más comunes en la figura a continuación:
Figura 2‑2 -Tipos principales de IDS
Los objetivos de la detección son otro factor a tener en cuenta en el análisis de la detección de intrusiones.
Si además de detectar posibles errores de seguridad, se pretende perseguir al atacante mediante acciones legales, es importante dedicar tiempo a la apropiada conservación y formato de los registros generados por el sistema. Si, por el contrario, sólo se desea mantener seguro el sistema, utilizando las posibles intrusiones para corregir los posibles errores que puedan ir surgiendo, los datos de las auditorías se pueden eliminar.
Por otra parte, como ya se comentó, la mejora de las capacidades de proceso ha hecho posible el análisis en tiempo real. Esto ha permitido desarrollar mecanismos automáticos de respuesta ante posibles ataques, como por ejemplo denegando el acceso a un posible intruso, o reflejando contra el atacante los ataques realizados. Estos métodos se describen con más detalle en capítulos posteriores.
La forma de administrar un sistema de detección de intrusiones es otro elemento a tener en cuenta. Existen dos acercamientos, según el sistema monitorice múltiples "hosts" o redes: la centralización y la integración con herramientas de gestión de redes.
La centralización consiste en concentrar las funciones de control en un nodo, que dirige a los demás elementos de detección de intrusiones. Para este punto de vista es necesario establecer comunicaciones seguras entre los elementos del sistema. También es necesario poder mostrar los resultados recogidos por todos los elementos de forma coherente y clara.
Otra forma de solucionar el control de la detección de intrusiones centralizada es hacer que forme parte de las funciones de gestión de redes. Muchos productos comerciales de detección de intrusiones ofrecen la posibilidad de generar mensajes SNMP (Protocolo de Gestión de Redes Simple) para la herramienta de captura de gestión de redes.
[1] Bace, R. Intrusion Detection. Macmillan Technical Publishing, 2000.
[2] Real Academia Española. Diccionario de la lengua Española. Espasa Calpe, S.A. 1994.
[3] H. Danisch. The Exponential Security System TESS: An Identity-Based Cryptographic Protocol for Authenticated Key-Exchange (E.I.S.S.-Report 1995/4). [en línea]. Agosto, 1995 [consultado en febrero, 2003]. Capítulo 3.1, Zero Knowledge Authentication. Categoría informativa. <http://www.ietf.org/rfc/rfc791.txt>.
(1) Patrones de ataques conocidos.
Siguiente: Modelo de funcionamiento Arriba: Sistemas de Detección de Intrusiones Previo: Historia
Sistemas de
Detección de Intrusiones, versión 1.01. Julio,
2003.
Diego González Gómez