Seguridad Activa – Control de Redes

Para conocer qué está pasando en nuestra red y qué están haciendo los usuarios autorizados, necesitaremos espiarnos a nosotros mismos, buscando garantizar la disponibilidad de la red (localizaremos enlaces saturados) y detectar ataques en curso.

10-Ago-2016

Monitorización y Análisis de la red

Para conocer qué está pasando en nuestra red y qué están haciendo los usuarios autorizados, necesitaremos espiarnos a nosotros mismos, buscando garantizar la disponibilidad de la red (localizaremos enlaces saturados) y detectar ataques en curso.

Para procesar el tráfico que se genera en la red se utilizan dos técnicas:

La monitorización del tráfico.

  • Trabaja a alto nivel.
  • Se limita a los llamados contadores, como puedan ser el total de bytes enviados o recibidos en un interfaz, agrupados por puerto de origen o destino.
  • Resulta fácil de activar en toda la red dado que son los propios equipos los que facilitan esta información sobre sus interfaces.
  • Genera relativamente poca información para transmitir y procesar.
  • Es suficiente para conocer la disponibilidad de la red o el tipo de tráfico que transita.

El análisis del tráfico.

  • Trabaja a bajo nivel.
  • Captura todos los paquetes que transitan por una interfaz (los conocidos sniffer de red).
  • Los paquetes solo son leídos, no interceptados: el paquete continúa su camino.
  • Permite analizar las conversaciones entre los equipos, comprobando que se ajustan al comportamiento esperado en el protocolo estándar (analizador de protocolos).
  • La captura es muy costosa de activar en toda la red, porque se dispara la cantidad de información que hay que transmitir y procesar
  • Se utiliza en situaciones concretas que no se pueden abordar con el estudio de contadores, como es la detección de ataques.

En ambos casos, necesitaremos herramientas que nos ayuden a recoger, procesar, analizar y presentar toda la información disponible. Con estas herramientas hay que conseguir un equilibrio entre los objetivos de seguridad y la carga extra que supone tratar esta información.

Se suelen utilizar para detectar:

  • Problemas sencillos como Broadcast (demasiados paquetes de tipo broadcast, donde un equipo envía información a una multitud de nodos receptores de manera simultánea).
  • Problemas complejos como DoS denegación de servicios (sobrecarga de un servidor por un exceso de peticiones).

Opcionalmente también podemos utilizar los equipos sonda, que se comportan como clientes normales de algún servicio y que se encargan de forma periódica de comprobar que estos servicios funcionan correctamente, de tal manera que si alguno falla lo más normal es que también le falle al resto de los equipos de la red.

Capturar Conversaciones

Utilizando el análisis del tráfico

La captura de conversaciones utilizada en la técnica del análisis del tráfico es compleja de activar. Las opciones son:

  • Conseguir el control sobre alguno de los extremos de la conexión para poder utilizar alguna herramienta como tcpdump o wireshark.
  • Interceptar la conexión misma desde algún equipo de red por donde pasen los paquetes intercambiados. Si este equipo tiene cierta inteligencia, seguramente incorporará funcionalidades avanzadas, como el port mirroring; incluso puede ser un router Linux.
  • Como último recurso podríamos conectar de manera temporal un hub en el puerto que queremos vigilar. Utilizamos un hub y no un switch porque el hub repite el tráfico de cada puerto a todos los demás, justo lo que necesitamos.
Espionaje utilizando un Hub

tcpdump

tcpdump es una herramienta sencilla disponible en Linux y Windows que permite hacer un volcado de todo el tráfico que llega a una tarjeta de red.

  • Captura todo el tráfico, no solo el tráfico TCP
  • Los paquetes se pueden mostrar por pantalla o ser almacenados en un archivo log para su posterior análisis.
  • Se necesitan privilegios para ser ejecutada.
  • Hay que poner la tarjeta en modo promiscuo para que acepte todos los paquetes, no solo los destinados a su MAC.
  • La captura con tcpdump se puede hacer en uno de los extremos si la conversación que estamos estudiando ocurre entre una máquina Unix y otra máquina.
  • Se utiliza muchas veces para capturar las conversaciones que atraviesan un router Linux.

La siguiente imagen muestra cómo podremos capturar las comunicaciones entre los ordenadores de las dos VLAN y todas las conexiones a Internet, aunque no podremos conocer qué hablan entre sí los ordenadores de una misma VLAN.

Captura de datos con Router Linux

WireShark

WireShark es la herramienta más extendida en Windows para realizar capturas de tráfico y analizar los resultados. Es una evolución de una herramienta anterior llamada Ethereal. Para la captura de paquetes utiliza la librería pcap, que también aparece en otros sniffer, como tcpdump. La interfaz de usuario es muy potente, así como el número de protocolos que es capaz de analizar.
En los filtros de visualización de pantalla, nos permite eliminar los paquetes que no nos interesan.

Port mirroring

Es una característica de los switch gestionables que consiste en modificar la configuración del switch para que replique todo el tráfico de un puerto a otro. En el segundo puerto conectaremos el sniffer. El equipo o equipos conectados en el primer puerto funcionan con normalidad, no saben que están siendo espiados.

  • Se puede elegir el tipo de tráfico entrante, saliente o ambos.
  • En algunos modelos, podemos hacer que varios puertos vuelquen su tráfico a un mismo puerto.
Port Mirroring

IDS/IPS

Detección y Prevención de Intrusiones

Son sistemas que nos permiten interpretar y revisar los resultados obtenidos durante el análisis de la red ayudando a la detección y prevención de intrusiones.

En los sistemas IDS/IPS (Intrusion Detection System / Intrusion Prevention System), los IDS detectan los ataques y los IPS actúan contra ellos. Tenemos dos tipos de IDS/IPS:

  • NIDS/NIPS (Network Intrusion y Network Prevention). Buscan ataques sobre servicios de comunicaciones. Se basan en el análisis de los paquetes que forman parte de la comunicación entre dos máquinas, comprobando que se ajustan al protocolo estándar.
  • HIDS/HIPS (Host Intrusion y Host Prevention). Buscan ataques sobre las aplicaciones y el sistema operativo de la máquina. Se basan en el análisis de los procesos actuales (ocupación de CPU y memoria, puertos abiertos) y la configuración y el log de cada uno de los servicios.

Los sistemas NIDS/NIPS procesan un fichero de captura de tráfico (o la realizan ellos mismos) y buscan patrones de comportamiento en los paquetes intercambiados entre los equipos. No se limitan a revisar las cabeceras del protocolo, sino que también miran en el contenido del paquete (payload). Cuando detectan un posible ataque, si es un IDS solo avisa al usuario y si es un IPS solo responde al ataque.

La respuesta de un IPS puede ser impedir que ese paquete y los siguientes de esa conexión lleguen a su destino.

La inteligencia de estas herramientas suele residir en un conjunto de reglas que se cargan en el programa desde un fichero de configuración que son elaboradas por expertos en seguridad que, cuando han identificado un nuevo tipo de ataque, escriben la regla que permitirá al IDS detectarlo.

Los problemas de los IDS son dos:

  • Rendimiento. El número de reglas es creciente (hay nuevos ataques y no podemos descartar los antiguos) y el volumen de tráfico también, por lo que necesitamos un hardware muy potente para tener funcionando un IDS sobre capturas de tráfico en tiempo real.
  • Falsos positivos. Las reglas no son perfectas y puede que estemos alertando sobre comunicaciones que son perfectamente legales.

Snort es un software NIDS, que actúa como un sniffer de paquetes y un detector de intrusos basado en red para sistemas Unix y Windows.

Firewall

Otra forma de defensa es tomar medidas en las máquinas que tengamos bajo nuestro control para que reaccionen adecuadamente ante la presencia de estos paquetes sospechosos. Si un paquete consigue entrar en la red y engañar al NIPS y llega al equipo, todavía tiene que superar un control más por cada equipo: el firewall o cortafuegos.

¿Qué hace?

El firewall es un software especializado que se interpone entre las aplicaciones y el software de red para hacer un filtrado de paquetes:

  • En el tráfico entrante, la tarjeta de red recibe el paquete y lo identifica, pero antes de entregarlo a la aplicación correspondiente, pasa por el firewall para que decida si prospera o no.
  • En el tráfico saliente, las aplicaciones elaboran sus paquetes de datos, pero antes de entregarlo al software de red para que lo envíe, pasa por el firewall.
  • En los servidores generalmente actúa sobre el tráfico entrante: los servicios que ejecutan abren determinados puertos y nos permite controlar quién se conecta a ellos.
  • En los equipos cliente: por defecto, todas las conexiones entrantes están prohibidas si la conversación no la ha iniciado el propio cliente y todas las salientes permitidas.

La inteligencia del firewall se expresa mediante reglas de configuración, donde el administrador de la máquina puede individualmente activarlas, desactivarlas, modificarlas o añadir nuevas. Este proceso puede ser automático.

Las reglas se suelen aplicar sólo a las cabeceras TCP/IP: el firewall básicamente mira direcciones IP y puertos, aunque también puede reconocer conversaciones entre dos equipos y controlarlas.

Existe un tipo de firewall más sofisticado, llamado firewall de nivel de aplicación, donde sí se entra a mirar en los datos de usuario que hay más allá de las cabeceras. Se utiliza sobre todo en protocolos web (HTTP). Por tanto, es más potente (y más lento) que el firewall normal, pero menos complejo (y más rápido) que todo un IPS.

¿Dónde situarlo?

Todas las máquinas de la empresa conectadas a la red necesitan activar un firewall. El firewall nos ayuda a bloquear paquetes de red no solicitados.

Para evitar que se inunde la red con paquetes que no llegarán a su destino, o para ayudar a máquinas que no tienen firewall, en los puntos críticos de la red se suelen colocar máquinas independientes ejecutando tareas de firewall (firewall de red).

Los routers domésticos proporcionados por los ISP (Internet Service Provider) hacen funciones de firewall, porque por defecto se comportan como equipos de usuario y no permiten conexiones entrantes; pero una empresa suele necesitar más configuraciones, por lo que instalará su propio firewall de red.

En las empresas grandes hay máquinas distintas para cada servicio, todas situadas en una subred especial llamada DMZ (Demilitarized Zone, zona desmilitarizada). El firewall de esta zona es menos exigente que el que protege nuestra LAN, porque tenemos que permitir conexiones a esos servicios; pero, como está expuesto a más ataques, se suele acompañar de un IDS/IPS.

Despliege Firewall de empresa con DMZ

Firewall en Linux. iptables

Cuando llega un paquete a la tarjeta de red, el sistema operativo (más concretamente, el software de red) decide qué hacer con él. El resultado de esa decisión puede ser:

  • Descartarlo. Si el destinatario del paquete no es nuestra máquina o, aunque lo sea, ningún proceso actual lo espera, el paquete termina aquí.
  • Aceptarlo, porque es para nosotros y hay un proceso que sabe qué hacer con ese paquete.
  • Aceptarlo, aunque no sea para nosotros, porque somos un router y vamos a enviarlo por otra interfaz.
  • Aceptarlo, aunque no es para nosotros y tampoco somos un router: pero estamos escuchando todos los paquetes porque somos un sniffer de red.

En el caso de Linux, la utilidad iptables permite introducir reglas en cada una de estas fases:

  • Cuando llega el paquete para un proceso nuestro pero todavía no se lo hemos entregado, en iptables hablamos de input.
  • Cuando somos un router y estamos a punto de traspasar el paquete de una interfaz a otra, en iptables hablamos de forward.
  • Cuando un paquete está listo para salir por una interfaz, en iptables hablamos de output.

Hay un par de etapas más:

  • Prerouting. Se ejecuta antes de input. Sirve para obviar el enrutamiento porque sabemos exactamente qué tratamiento dar a esos paquetes.
  • Postrouting (después de output y después de forward). Se utiliza para aplicar alguna modificación a los paquetes que están a punto de abandonar la máquina.

Las reglas de iptables tienen una lista de condiciones y una acción, de manera que, cuando un paquete cumple todas las condiciones de una regla, se ejecuta la acción.

Condiciones:

  • interfaz por la que entró, la interfaz por la que va a salir, la dirección IP o la subred del paquete, el tipo de protocolo, el puerto origen o destino, etc.

Acciones:

  • Pueden ser simplemente aceptar o rechazar el paquete, o también modificarlo.

Pero no todas las acciones están disponibles en todas las situaciones. Por esto las reglas se agrupan en tres tablas principales:

  • filter. Es la tabla principal. Su misión es aceptar o rechazar paquetes. Es el firewall propiamente dicho.
  • nat. Las reglas de esta tabla permiten cambiar la dirección de origen o destino de los paquetes.
  • mangle. En esta tabla podemos alterar varios campos de la cabecera IP, como el ToS (Type of Service). Se suele usar para aplicar QoS (Quality of Service), marcando los paquetes de determinados servicios para luego priorizarlos.
Funcionamiento de iptables en Linux

Firewall en Windows

Los sistemas operativos Windows siempre han tenido mala fama en cuanto a seguridad ante malware; sin embargo, la versión XP introdujo un firewall muy robusto y sencillo. Las versiones posteriores (Vista, Windows 7, 8, 10) han mantenido la robustez, aunque han sacrificado la sencillez para elaborar reglas complejas que permitan cubrir todas las necesidades del usuario.

Comparado con iptables, el firewall de Windows es más sencillo (no hay tantas tablas ni etapas) y más agradable de usar (interfaz de ventanas en lugar de comandos). A diferencia de Linux, la configuración por defecto para las conexiones entrantes es rechazarlas, no aceptarlas.

Cuando un programa decide ofrecer algún tipo de servicio (servidor web apache, mysql, etc) decide abrir un puerto para recibir conexiones, la decisión por defecto del firewall es bloquear esa conexión.

En estos casos podemos decidir desbloquear el acceso a nuestro servidor desde redes públicas y privadas. Si más adelante queremos cambiar este comportamiento, podemos buscar la regla en la lista de reglas y editarla; pero resulta más cómodo utilizar una opción de configuración del firewall donde aparece directamente la lista de programas de nuestra máquina y qué pueden hacer en cada red.

Proxy

Un proxy nos ofrece otra forma de  controlar qué están hablando dos máquinas entre sí. Podemos introducir un nuevo interlocutor en medio de la conversación: donde antes A hablaba con B, ahora hay un C, de manera que A habla con C y C se lo cuenta a B, y viceversa. Ese nuevo intermediario es un proxy, y como tiene acceso a todos los paquetes intercambiados, puede aplicar medidas de seguridad.

Un proxy es un servicio de red que hace de intermediario en un determinado protocolo. El proxy más habitual es el proxy HTTP: un navegador en una máquina cliente que quiere descargarse una página web de un servidor no lo hace directamente, sino que le pide a un proxy que lo haga por él. El servidor no se ve afectado porque le da igual quién consulta sus páginas.

Ventajas de la utilización de un proxy de red:

  • Seguridad para el software del cliente. Puede ocurrir que el software del ordenador cliente esté hecho para una versión antigua del protocolo o tenga vulnerabilidades. Pasando por un proxy actualizado evitamos estos problemas.
  • Rendimiento. Si en una LAN varios equipos acceden a la misma página, haciendo que pasen por el proxy podemos conseguir que la conexión al servidor se haga solo la primera vez, y el resto recibe una copia de la página que ha sido almacenada por el proxy.
  • Anonimato. En determinados países hay censura a las comunicaciones, por lo que utilizar un proxy del extranjero les permite navegar con libertad.
  • Acceso restringido. Si en nuestra LAN no está activado el routing a Internet, sino que solo puede salir un equipo, podemos dar navegación al resto instalando un proxy en ese equipo.

¿Qué hace?

El proxy recibe de una máquina origen A un mensaje formateado para el servidor B según un protocolo determinado. Lo procesa y genera un nuevo mensaje para el mismo destino B, pero ahora el origen es P, la máquina del proxy. Cuando el servidor B genera la respuesta, la envía a P. La máquina P procesa ese mensaje y genera su propio mensaje de respuesta con destino A.

Además de controlar las conexiones web, el proxy mejora el rendimiento global de la navegación porque guarda en disco las páginas que envía a los clientes.  Es el llamado proxy caché. De esta manera, si esa misma máquina o cualquier otra solicita al proxy la misma página, no hace falta generar la petición 2 ni esperar la respuesta 3: directamente, el proxy le devuelve la respuesta 4. Hemos ahorrado los dos mensajes que van sobre la red más lenta.

Funcionamiento Proxy HTTP

¿Dónde situarlo?

Si el volumen de tráfico que pasará por el proxy es reducido y las reglas definidas son sencillas, el servidor proxy necesitará pocos recursos.

Si el volumen es elevado o las reglas que hemos definido son complejas, no podemos permitirnos afectar a otros servicios: necesitaremos una máquina en exclusividad.

En cualquier caso, el servidor proxy debe tener la mejor conectividad posible con los servidores para los que hace de intermediario (generalmente, servidores web en Internet).

Tipos de Proxy

Tenemos dos opciones:

  • Proxy explícito. Configuramos los navegadores de los usuarios para que utilicen el proxy de la empresa. Podemos incluir un mecanismo de autenticación, de manera que solo algunos usuarios puedan acceder a Internet y solo a algunas web.
  • Proxy transparente. En algún punto de la red un router filtrará ese tipo de tráfico (por ejemplo, comprobando que el destino es el puerto 80 de TCP) y lo enviará al proxy, sin que el usuario tenga que hacer nada. Si estamos utilizando un router Linux, la solución óptima es instalarlo ahí, porque ahorramos sacar el tráfico hasta otra máquina.

Spam

En las empresas, el correo electrónico es tan importante o más que el teléfono. Los empleados necesitan estar en contacto con otros empleados de la misma empresa, con los proveedores y con los clientes. Como responsables de la infraestructura informática, debemos garantizar que los mensajes se envían y reciben con normalidad, pero también que no hacemos perder el tiempo a nuestros usuarios entregando correos no deseados (spam). Estos correos, como mínimo, llevan publicidad, pero también son una fuente de infección de virus y troyanos que pueden venir en un fichero adjunto o que aprovechan una vulnerabilidad del programa de correo.

Antispam, ¿Qué hace?

El software antispam colabora con el servidor de correo para detectar mensajes indeseables. Para determinar si un mensaje entra en esa categoría, el antispam utiliza:

  • La cabecera del mensaje, buscando si el servidor de correo origen está en alguna lista negra de spammers reconocidos, si la fecha de envío utiliza un formato incorrecto, etc.
  • El contenido del mensaje, buscando palabras poco relacionadas con la actividad de la empresa o que la versión de texto plano es muy diferente de la versión HTML, etc.
  • La propia experiencia del programa (autoaprendizaje), según el tipo de mensajes que maneja el servidor de correo de nuestra empresa en concreto.

Acciones:

  • Bloquearlo aquí e impedir que llegue hasta el usuario. No se suele usar porque nunca tendremos la certeza de que no hemos eliminado algún correo importante.
  • Dejarlo pasar, pero avisando al usuario de que es un correo sospechoso. Es la opción por defecto. El aviso al usuario consiste en añadir texto en el título del correo (por ejemplo, *** SPAM ***).
  • Dejarlo pasar, pero convirtiendo el texto del correo en un fichero adjunto, para que sea más difícil engañar al usuario y solo lo abra si está seguro de que el correo le interesa.
Funcionamiento del AntiSpam

SpamAssasin

El software SpamAssasin es uno de los más extendidos por su eficacia y la amplia variedad de filtros que puede llegar a aplicar para determinar si un correo es spam. Los filtros se especifican mediante reglas. Si un mensaje cumple una regla, se le asigna una puntuación. Cuando un mensaje supera un determinado umbral (por defecto, 5), se considera que es spam.

SpamAssasin, además, utiliza técnicas de inteligencia artificial para reducir el número de falsos positivos (correo spam que no lo es) y falsos negativos (correo spam que no ha sido detectado como tal).