Generalmente existen dos grandes enfoques a la hora de clasificar a los sistemas
de detección de intrusos: o bien en función de qué sistemas vigilan,
o bien en función de cómo lo hacen.
Si elegimos la primera de estas aproximaciones tenemos dos grupos de sistemas
de detección de intrusos: los que analizan actividades de una única
máquina en busca de posibles ataques, y los que lo hacen de una subred
(generalmente, de un mismo dominio de colisión) aunque se emplazen en uno
sólo de los hosts de la misma. Esta última puntualización es
importante: un IDS que detecta actividades sospechosas en una red no tiene
porqué (y de hecho en la mayor parte de casos no suele ser así) ubicarse
en todas las máquinas de esa red.
- IDSes basados en red.
Un IDS basado en red monitoriza los paquetes que circulan por nuestra red en
busca de elementos que denoten un ataque contra alguno de los sistemas ubicados
en ella; el IDS puede situarse en cualquiera de los hosts o en un
elemento que analice todo el tráfico (como un HUB o un enrutador). Esté
donde esté, monitorizará diversas máquinas y no una sola: esta es la
principal diferencia con los sistemas de detección de intrusos basados en
host.
- IDSes basados en máquina.
Mientras que los sistemas de detección de intrusos basados en red operan
bajo todo un dominio de colisión, los basados en máquina realizan su
función protegiendo un único sistema; de una forma similar - guardando las
distancias, por supuesto - a como actúa un escudo antivirus residente en
MS-DOS, el IDS es un proceso que trabaja en background (o que despierta
periódicamente) buscando patrones que puedan denotar un intento de intrusión
y alertando o tomando las medidas oportunas en caso de que uno de estos
intentos sea detectado.
Algunos autores ([Gra00]) dividen el segundo grupo, el de los sistemas
de detección de intrusos basados en máquina, en tres subcategorías:
- Verificadores de integridad del sistema (SIV).
Un verificador de integridad no es más que un mecanismo encargado de
monitorizar archivos de una máquina en busca de posibles modificaciones no
autorizadas, por norma general backdoors dejadas por un intruso (por
ejemplo, una entrada adicional en el fichero de contraseñas o un /bin/login que permite el acceso ante cierto nombre de usuario no registrado).
El SIV más conocido es sin duda Tripwire, comentado en este mismo trabajo;
la importancia de estos mecanismos es tal que en la actualidad algunos sistemas
Unix integran `de serie' verificadores de integridad, como Solaris y su ASET
(Automated Security Enhancement Tools).
- Monitores de registros (LFM).
Estos sistemas monitorizan los archivos de log generados por los programas
- generalmente demonios de red - de una máquina en busca de patrones que
puedan indicar un ataque o una intrusión. Un ejemplo de monitor puede ser
swatch, pero más habituales que él son los pequeños shellscripts que casi todos los administradores realizan para comprobar
periódicamente sus archivos de log en busca de entradas sospechosas
(por ejemplo, conexiones rechazadas en varios puertos provenientes de un
determinado host, intentos de entrada remota como root...).
- Sistemas de decepción.
Los sistemas de decepción o tarros de miel (honeypots), como Deception Toolkit (DTK), son mecanismos
encargados de simular servicios con problemas de seguridad de forma que un
pirata piense que realmente el problema se puede aprovechar para acceder a un
sistema, cuando realmente se está aprovechando para registrar todas sus
actividades. Se trata de un mecanismo útil en muchas ocasiones - por ejemplo,
para conseguir `entretener' al atacante mientras se tracea su conexión -
pero que puede resultar peligroso: >qué sucede si el propio sistema de
decepción tiene un bug que desconocemos, y el atacante lo aprovecha para
acceder realmente a nuestra máquina?
Realmente esta división queda algo pobre, ya que cada día se avanza más
en la construcción de sistemas de detección de intrusos basados en host que no podrían englobarse en ninguna de las subcategorías
anteriores.
La segunda gran clasificación de los IDSes se realiza en función de cómo
actúan estos sistemas; actualmente existen dos grandes técnicas de
detección de intrusos ([Sun96]): las basadas en la detección de
anomalías (anomaly detection) y las basadas en la detección de
usos indebidos del sistema (misuse detection). Aunque más tarde
hablaremos con mayor profundidad de cada uno de estos modelos, la idea básica
de los mismos es la siguiente:
- Detección de anomalías.
La base del funcionamiento de estos sistemas es suponer que una intrusión se
puede ver como una anomalía de nuestro sistema, por lo que si fuéramos
capaces de establecer un perfil del comportamiento habitual de los sistemas
seríamos capaces de detectar las intrusiones por pura estadística:
probablemente una intrusión sería una desviación excesiva de la media
de nuestro perfil de comportamiento.
- Detección de usos indebidos.
El funcionamiento de los IDSes basados en la detección de usos indebidos
presupone que podemos establecer patrones para los diferentes ataques conocidos
y algunas de sus variaciones; mientras que la detección de anomalías
conoce lo normal (en ocasiones se dice que tienen un `conocimiento positivo',
positive knowledge) y detecta lo que no lo es, este esquema se limita a
conocer lo anormal para poderlo detectar (conocimiento negativo, negative
knowledge).
Para ver más claramente la diferencia entre ambos esquemas, imaginemos un
sistema de detección basado en monitorizar las máquinas origen desde las
que un usuario sospechoso conecta a nuestro sistema: si se tratara de un modelo
basado en la detección de anomalías, seguramente mantendría una
lista de las dos o tres direcciones más utilizadas por el usuario
legítimo, alertando al responsable de seguridad en caso de que el usuario
conecte desde otro lugar; por contra, si se tratara de un modelo basado en la
detección de usos indebidos, mantendría una lista mucho más amplia que
la anterior, pero formada por las direcciones desde las sabemos con una alta
probabilidad que ese usuario no va a conectar, de forma que si detectara un
acceso desde una de esas máquinas, entonces es cuando el sistema tomaría
las acciones oportunas.
En muchos trabajos ([Esc98], [Thu00]...) aparece una
tercera clasificación de los IDSes; se trata de la diferenciación entre los
sistemas que trabajan periódicamente (denominados `pasivos') y los que operan
en tiempo real (activos). Nosotros no
contemplaremos, aunque la citemos, esta clasificación, ya que es totalmente
minoritaria en comparación con las otras dos que hemos comentado. De
cualquier forma, la idea es muy simple: un IDS de tiempo real (los denominados
Real-Time Intrusion Detection Systems) trabaja contínuamente en
busca de posibles ataques, mientras que los sistemas que se ejecutan a
intervalos (Vulnerability Scanners) son analizadores de vulnerabilidades
que cualquier administrador ha de ejecutar regularmente (ya sea de forma
manual o automática) contra sus sistemas para verificar que no presentan
problemas de seguridad.
© 2002 Antonio Villalón Huerta