Aegurando el enrutamiento Parte III

Bueno ya estamos aquí con la tercera entrega, con algo de retraso pero llega. Como ya hemos visto el enrutamiento es fundamental en entornos corporativos pero también la correcta configuración del mismo. Vista la manera en la que nos pueden comprometer nuestras tablas de rutas y provocar un funcionamiento distinto al original, veremos la manera en la que podemos evitarlo.

Para empezar vamos a aplicar una idea fundamental, “Si algo no es estrictamente necesario para el funcionamiento, lo deshabilitamos”. De igual manera que la gente de sistemas deshabilita servicios, cierra puertos, etc. vamos a aplicarnos el cuento, y hacer lo mismo con el enrutamiento. Si éste se produce entre los switches de Core, en nuestro ejemplo CORE_OF_01, CORE_OF_02, CORE_SRV_01 y CORE_SRV_02; ¿para qué mandar actualizaciones hacia los switches de acceso como OF_01 si éstos no llevan a cabo enrutamiento? ¿Por qué mandar anuncios hacia ellos? El enrutamiento, hemos visto que se produce entre los de Core, con lo que no deberían propagarse más allá de ellos ya que no es necesario.  Por tanto, accedemos a la configuración del protocolo en cuestión y deshabilitaremos dichos anuncios.

core-of-01#conf t

core-of-01(config)#router ospf 1

core-of-01(config-router)#passive-interface vlan 10 

Con el commando passive-interface lo que vamos a conseguir es que se no se envíen actualizaciones del protocolo con lo que en nuestro caso la aplicación “Loki” no podrá capturarlas y por lo tanto nuestro atacante obtener la información sobre nuestras redes y posterior posible inyección de rutas. En esta ocasión la hemos aplicado a una interfaz virtual.

Otra opción es habilitar la autenticación entre interfaces que participan en el enrutamiento. Esto es, emplear un secreto compartido entre ellas, necesario para procesar el paquete con la información recibida. Podremos elegir entre una autenticación simple, en la que el secreto compartido va implícito en texto plano dentro de dicho paquete o bien emplear algún algoritmo que en lugar de éste enviará un hash que deberá ser recalculado en destino, y si coincide con el enviado, se procesará.

En nuestro caso emplearemos esta segunda opción siendo el algoritmo MD5. Para ello en primer lugar habilitaremos la autenticación en el protocolo para las áreas que deseemos. En nuestro caso el área 1:

core-of-01#conf t

core-of-01(config)#router ospf 1

core-of-01(config-router)#area 1 authentication message-digest

El siguiente paso será habilitar la autenticación para las interfaces implicadas en el enrutamiento. Como hemos dicho con anterioridad estamos empleando interfaces virtuales con lo que:

core-of-01(config)#interface vlan 20

core-of-01(config-if)#ip ospf message-digest-key 1 md5 edorta 

De aquí queda por decir que el “1” hace referencia al identificador de la contraseña; MD5 al tipo de algoritmo de hashing, y “edorta” la contraseña en sí. Obviamente la contraseña debe ser la misma que en nuestro router vecino.

Parece sencillo pero habrá quien no lo implemente y luego vengan los disgustos. Son pocas líneas, pero necesarios para proteger nuestra red, a los usuarios y sobre todo la información que viaje por ella y que éstos utilizan.

Un saludo y seguiremos informando.

Asegurando el enrutamiento Parte II

Siguiendo con el post anterior, en esta ocasión expondremos porqué resulta importante llevar a cabo algunas configuraciones adicionales en nuestros equipos para prevenir incidentes de seguridad, en lo que al enrutamiento se refiere.

Los protocolos de enrutamiento notifican a otros equipos los cambios que ha habido en la red como la pérdida de acceso a alguna de las redes. Llegado el caso, el equipo envía a otros un “aviso” de que ya no tiene acceso a esa red y por tanto hay que ver si existe una ruta alternativa. Estos avisos puedes ser bien por “tiempo”; cada equis segundos, enviará la relación de redes a las que tiene acceso o incluso toda la tabla de enrutamiento; o por “eventos”, cada vez que un equipo de capa 3 pierde la conectividad o el acceso a una red.

En el caso de OSPF los equipos establecen adyacencias mediante el envío de paquetes “Hello”, y una vez establecidas éstas se notifican las redes a las que cada cual tiene acceso. Considerando las que uno tiene, las que otros le notifican y un algoritmo, se calculan las mejores rutas a destino, creándose la tabla de enrutamiento.

Lo malo es que si, como digo, no tomamos ciertas precauciones, un usuario malicioso podría generar paquetes “Hello”, crear una adyacencia con el equipo de Capa 3 y conseguir que éste le entregue la relación de redes a las que tiene acceso. Veamos un ejemplo. En la imagen que se muestra a continuación se observa una red en la que existen 4 equipos que realizan labores de enrutamiento core-of-01 y core-of-02 (equipos centrales de redes de oficinas) y core-srv-01 y core-srv-02 (equipos centrales de la red de servidores). Estos equipos ejecutarán OSPF como protocolo de enrutamiento y estarán conectados por medio de redes 192.168.20.0 /24 (VLAN 20); 192.168.21.0 (VLAN 21) y así sucesivamente. La red de oficinas será la 192.168.10.0 /24 (VLAN 10) mientras que la red de servidores la 192.168.100.0 /24 (VLAN 100). Los switches srv-01 y of-01 son switches de acceso tanto de la red de servidores como de oficinas, respectivamente.

Con la aplicación Loki podremos, entre otras cosas, establecer una adyacencia con el router y conocer las redes a las que tiene acceso éste. En nuestro ejemplo esta aplicación estará instalada en el PC nombrado como “LOKI”, un equipo con Ubuntu 11.04. Ejecutaremos la aplicación y tras seleccionar la interfaz a usar veremos cómo ya comenzamos a conocer el ID del router, el área, la autenticación si la hubiese etc.

Si a continuación modificamos los valores de área y autenticación que figuran en la parte baja de la imagen y comenzamos a mandar los correspondientes mensajes “Hello” podremos establecer adyacencia con él y facilitándonos el listado de redes a las que tiene acceso.

Y si pinchamos en el botón “Hello” se establecerá una adyacencia como se muestra en la consola de core-of-01

Nuestro equipo con loki tiene la IP 192.168.10.24y y….¡Voila!

A partir de aquí podríamos incluso inyectar rutas, cracker passwords, etc.  además de otras muchas cosas …

Por ejemplo para inyectar una ruta, pincharemos sobre “Inyection” y escribimos la ruta que queremos inyectar, en este caso 10.10.10.0 /24 y seleccionamos “Add”.

Consultamos la tabla de enrutamiento de core-of-01 y ahí la tenemos:

Pero también tendremos que tener en cuenta que core-of-01 la anunciará al resto de los equipos que corran OSPF, por lo que por ejemplo core-srv-01 al igual que el resto de equipos involucrados en el enrutamiento la incluirán en su tabla de enrutamiento:

 

A lo que voy con estos ejemplos es que un usuario malicioso podría conocer las redes/subredes de nuestra red a partir de un protocolo de enrutamiento mal configurado, en nuestro caso OSPF. Por otra parte al poder inyectar rutas en las tablas de enrutamiento podría llegar a alterar el tráfico de nuestra red, vamos complicarnos la vida…

En resumen algo hay que hacer, pero eso lo dejaremos para la tercera, y última entrega.

Seguiremos informando.

Un saludo.