domingo, 29 de enero de 2012

Protocolo BGP

¿Que es?

BGP(Border Gateway Protocol) es un protocolo de Enrutamiento exterior utilizado principalmente por los proveedores de servicios Internet (ISP). Es un protocolo mediante el cual se intercambia informacion de enrutamiento entre sistemas autonomos.

El Border Gateway Protocol juega un papel crítico en las comunicaciones en Internet. Facilita el intercambio de información sobre redes IP, la comunicación entre sistemas autónomos (AS). Por tanto BGP es un protocolo interdominio (entre sistemas autónomos) e intradominio (dentro del mismo sistema autónomo).
El protocolo BGP se utiliza para intercambiar información. El intercambio de información en la red se realiza mediante el establecimiento de una sesión de comunicación entre los routers de borde de los sistemas autónomos. Para conseguir una entrega fiable de la información, se hace uso de una sesión de comunicación basada en TCP en el puerto número 179. Esta sesión debe mantenerse conectada debido a que ambos extremos de la comunicación periódicamente se intercambian y actualizan información. De modo que al principio, cada router envía al vecino toda su información de encaminamiento y después únicamente se enviarán las nuevas rutas, las actualizaciones o la eliminación de rutas transmitidas con anterioridad. Además periódicamente se envían mensajes para garantizar la conectividad. Cuando una conexión TCP se interrumpe por alguna razón, cada extremo de la comunicación está obligado a dejar de utilizar la información que ha aprendido por el otro lado. En otras palabras, la sesión TCP sirve como un enlace virtual entre dos sistemas autónomos vecinos, y la falta de medios de comunicación indica que el enlace virtual se ha caído. Cabe destacar que esa unión virtual tendrá mas de un enlace físico que conecte a los dos routers frontera, pero si una conexión virtual se cae no indica necesariamente que la conexión física se haya caído.

¿Donde se utiliza?

En realidad, los proveedores de servicio(ISP), son los que utilizan el protocolo BGP, para el intercambio de informacion de ruta entre sistemas autonomos(SA); esto lo hace a traves de los routers externos de cada sistema autonomo.

¿Como funciona?

La función principal de un sistema BGP es una red de intercambio de información de accesibilidad con otros
sistemas BGP. Esta información de accesibilidad de red incluye información sobre la ruta completa de los Sistemas Autónomos (AS’s) que el tráfico debe recorrer para llegar a estas redes. Esta información es suficiente para construir un gráfico de Conectividad de los AS y de los bucles de enrutamiento que pueden ser eliminados y algunas políticas de decisión de enrutamiento a nivel de AS que
pueden ser implementadas.

BGP corre sobre un protocolo de transporte fiable (TCP). Esto elimina la necesidad de aplicar la
actualización de fragmentación explícita, la retransmisión, el reconocimiento y el secuenciamiento. Se puede utilizar cualquier esquema de autenticación utilizado por el protocolo de transporte además de los propios mecanismos de autenticación de BGP. El mecanismo de notificación de error utilizado por BGP asume que el protocolo de transporte soporta un cierre agradable ("graceful"), es decir, que todos los datos pendientes se entregarán antes de que se cierre la conexión.

Un AS es un conjunto de redes administradas por una misma organización que tiene definida una única política de encaminamiento, la cual decide las rutas admitidas desde los sistemas autónomos vecinos y las rutas que se envían hacia estos sistemas autónomos. Cada AS tiene un identificador (AS Number), formado por 16 bits, lo cual permitiría tener hasta 65,536 sistemas autónomos diferentes desde un punto de vista teórico. Los AS anuncian las rutas que ellos mismos pueden alcanzar a sus vecinos, y estos, a su vez, las reenvían a sus vecinos próximos añadiendo además las rutas alcanzables por ellos mismos. Estos anuncios se realizan mediante un mensaje BGP UPDATE, el cual contiene una serie de atributos, dentro de los cuales el más importante es el AS_PATH.

PROBLEMAS DEL PROTOCOLO BGP

En principio, BGP se diseñó con un modelo basado en la confianza, para permitir el enrutamiento interdominio a través de todo Internet entre redes confiables. Sin embargo, han surgido intereses comerciales y nuevas comunidades de usuarios, los cuales, sumados al crecimiento de Internet, producen que el modelo no sea el mismo planteado originalmente. Siempre que se cambian los modelos de confianza se llegan a problemas, y esto es algo que ha ocurrido en otros casos en Internet, como es el caso del spam en el correo electrónico.
1.- Ataques que pueden producirse entre Peers

Se ha desarrollado lo que se denomina un modelo de amenazas (threat model), para considerar aquellos ataques que son deseables de contrarrestar, el cual ha sido planteado en [4], y cuyas ideas abordamos a continuación. Se asume una operación BGP mínima, una comunicación entre dos peers, es decir, dos routers que se comunican sobre un canal compartido, el cual puede tener entidades maliciosas sobre él. Considerando esto, pueden darse los siguientes ataques:
Contra la confidencialidad: Los mensajes entre ambos routers pueden ser observados por un atacante, lo que se denomina eavesdropping (escuchar detrás de la puerta). Se puede decir que este es un ataque pasivo. Muchos ISP’s y grandes organizaciones tienen relaciones de negocios, arreglos confidenciales de aprovisionamiento del 3 servicio. El ataque consiste en que el atacante observa los mensajes e infiere las políticas y el enrutamiento. Esto supone un grave problema dado que para muchas organizaciones sus políticas de enrutamiento son secretas.
Contra la integridad de los mensajes: Consiste en que el atacante modifica los mensajes y los subvierte, de esta forma pueden darse los siguientes ataques:
i) Inserción de mensaje, el cual consiste en insertar mensajes con información de enrutamiento incorrecta,
podría forzar también a que se cierre la conexión, dado que cuando hay mensajes erróneos, BGP aborta la
sesión.
ii) Borrado de mensaje, con sisten en quitar los mensajes, y dado que BGP utiliza mensajes keep-alive
periódicamente enviados, si estos no se reciben, la sesión será cerrada.
iii) Modificación de mensaje, en este caso, se captura un mensaje durante su envío y se altera su contenido
antes de reenviarlo.
iv) Ataque de repetición (reply attack), en que el atacante intercepta los mensajes, los almacena y luego los envía al origen nuevamente. Se usa para producir que se reafirmen rutas que habían sido quitadas o quitar
las válidas, forzando que el router colapse.
Terminación no deseada de las sesiones: El atacante puede aprovecharse del modelo de máquina de estados del protocolo BGP. Por ejemplo, si dos routers están configurando una sesión BGP, el router A le envía al B un mensaje OPEN y pasa al estado OpenSent. B recibe el mensaje y responde con otro mensaje OPEN, lo que hace que A pase al estado OpenConfirm. Cuando se ha completado la configuración de la sesión, A y B están en estado Established, en el que BGP regularmente opera. Si en este punto el atacante inserta un mensaje OPEN, la sesión se cerrará porque viola la respuesta esperada. Y si en este punto ambos reciben un mensaje falso de NOTIFICATION, la sesión se cerrará, porque dicho mensaje se envía para indicar que ha ocurrido un error.

2.- Ataques a mayor escala

Debido a que hay cientos de miles de routers en Internet y que cada AS indirectamente está conectado a todos los demás mediante BGP, los ataques pueden afectar también a routers y a los AS’s lejanos.
Origen fraudulento: Un AS puede anunciar información incorrecta con el mensaje UPDATE pasado a sus vecinos. Se pueden dar los siguientes casos:
i) Secuestro de prefijo: Un AS malicioso puede anunciar un prefijo que no es el suyo como propio, los vecinos reciben este anuncio y pueden enrutarle paquetes destinados a ese prefijo. El originador real del prefijo no recibirá dicho tráfico. Ante esta situación se puede dar lo siguiente: 1) Black hole, lo cual ocurre si el AS malicioso decide descartar dichos paquetes que eran destinados al verdadero origen, lo cual produce que las direcciones “secuestradas” no estén disponibles; dsde fuera esto se ve como una simple caída y no se detecta; y 2) Si el AS malicioso decide falsear todas las direcciones de su bloque (y no hay algún sistema de autenticación), puede apersonarse de los recursos e información del espacio de direcciones “secuestrado”; puede, por ejemplo, recibir contraseñas e información sensible.
ii) Desagregación de prefijo: Esto ocurre cuando el anuncio de un prefijo grande (por ejemplo, 12.0.0.0/8) se fragmenta o duplica en un conjunto de anuncios para prefijos más pequeños (por ejemplo 12.0.0.0/16). Como BGP realiza el longest prefix matching, en que se escoge el prefijo más pequeño para enrutar (el de la máscara más grande), escogería entonces el prefijo 12.0.0.0/16. Esto daña el rendimiento de BGP y de la red, incrementando el tamaño de las tablas de rutas y llenando la red con actualizaciones redundantes y muchas veces incorrectas. Si un AS reclama falsamente ser el origen de un prefijo y la actualización tiene un prefijo más largo que los otros actualmente en la tabla de enrutamiento global, entonces tendrá completamente secuestrado a ese prefijo, lo cual se propagará a sus vecinos y a toda la red.
Modificación intencional de la información de camino: En este caso, se dan los siguientes problemas:
i) Modificación del atributo AS_PATH: Un AS malicioso puede falsear los atributos de camino (AS_PATH) de un mensaje UPDATE, modificando, quitando o insertando AS’s en él, o cambiando el orden de los AS’s (creando retardos, modificando patrones de tráfico).
ii) Modificación del atributo MED (Multi-Exit Discriminator): Este atributo se utiliza para sugerir una ruta preferida dentro de un AS hacia un AS externo. Esto puede producir que se vea disminuida la ingeniería de tráfico y las políticas de enrutamiento.
iii) Modificación del atributo community: Este atributo se usa para agrupar rutas con políticas comunes de
enrutamiento. Produce un efecto similar al anterior.
iv) Puede darse la alteración de caminos para transitar AS maliciosos, los cuales podrían recibir datos sensibles y enormes cantidades de información que no debería.

3.- Otros ataques

Ataques a TCP: i) TCP RST attack, que consiste en que si el atacante envía un paquete TCP RST, la conexión TCP se reiniciará; ii) SYN flood attack, en el cual el hand-shake de 3 vías se inicia (por el atacante) pero nunca es completado (ya que el atacante nunca envía el paquete de reconocimiento ante el handshake abierto); así la víctima saldrá de conexión, ya que debido a esto se puede reiniciar el dispositivo, o este será incapaz de cualquier otra transacción TCP.
Ataques a ICMP: Un atacante puede modificar paquetes ping, poniéndoles la dirección del router víctima y enviarlos en broadcast. Así, las respuestas (ecos) saturarán al router, no permitiendo cualquier otro tráfico,
incluyendo los mensajes keep-alive de BGP, forzando la terminación de la sesión.
Ataques físicos: Se pueden retirar los enlaces, lo cual altera todo el tráfico de enrutamiento. Sus consecuencias son:
- Table reset: Cuando un router queda fuera de línea, su tabla de enrutamiento necesita ser recreada y
reanuncia todos los prefijos que está originando, este proceso se conoce como reinicio de tabla (table reset). Los vecinos vierten sus tablas BGP y entonces tiene que tomar una serie de decisiones de enrutamiento, lo cual tiene una gran carga computacional y retrasa el tráfico.
- Route flapping: Esto ocurre si el router continuamente sale de línea, entonces las rutas que anuncia
desaparecerán y reaparecerán en las tablas de rutas de los peers, produciendo un daño en los demás routers
(carga computacional).
- Route dampening: Ocurre cuando, con el fin de minimizar el route flapping, las rutas inestables son
penalizadas. Así, los routers vecinos ignorarán los anuncios del router inestable (el tiempo de esto depende de la frecuencia de la inestabilidad). Esta supresión de rutas es un ataque altamente efectivo de negación del
servicio.



BGP es complicado de configurar. En un estudio [MAHAJAN 2002] se encontro que entre el 0.2 - 1 % de todos los prefijos en la tabla global, estan erroneamente configurados. Hay dos tipos de estos errores: 1) configuracion erronea de exportacion, que se produce cuando un AS exporta una ruta que debio haber filtrado; 2) Configuracion erronea de origen, que es cuando un AS accidentalmente inyecta un prefijo en las tablas BGP globales.


CASO PAKISTAN

El problema se originó por la manera en la que los ISPs comparten la información de ruta con los Border Gateway Protocol (BGP). El BGP es el estándar utilizado por los routers para encontrar los ordenadores en Internet, pero hay mucha información sobre direcciones BGP disponible. Para simplificar las cosas, los ISP comparten esta información entre ellos. Y esto puede provocar problemas cuando un ISP comparte datos erróneos con el resto de la red.

Esto fue lo que pasó el domingo con YouTube. Los datos del BGP para bloquear el acceso a YouTube en Pakistán se emitieron por error a otros proveedores de servicio, haciendo que la avería se extendiera a los servidores de todo el mundo.

Los proveedores de servicio normalmente validan la información BGP de sus clientes para asegurarse de que la información de ruta es acertada, pero en este caso, la Autoridad Pakistaní de Telecomunicaciones no lo hizo. Cuando el ISP pakistaní mandó los datos erróneos, este organismo terminó por compartirlos con ISPs de todo el mundo.

CASO EGIPTO


El cierre de Internet en Egipto por parte del gobierno Mubarak como reacción a la oleada de insurgencia coordinada a través de sitios sociales como blogs, Facebook o Twitter ha dejado clara la excesivamente elevada vulnerabilidad de la red al control gubernamental.
Un interesante artículo en GigaOM, “How Egypt switched off the Internet, basado en un detallado informe de Renesys explica cómo un gobierno ejecuta la decisión de desconectar completamente Internet tanto para sus ciudadanos en el interior, como para todos aquellos que desde el exterior pretendan acceder a recursos situados en el país. Un bloqueo total, algo que hemos presenciado en muy pocas ocasiones anteriormente, muy distinto de los cortes de acceso a determinados servicios como Twitter o Facebook llevados a cabo anteriormente por gobiernos como Irán o Túnez.
La caída de la red en Egipto se llevó a cabo de manera instantánea y con una certera efectividad: un 90% de las conexiones dejaron de funcionar al mismo tiempo, lo que equivale en la práctica a un “botón mágico” en manos de un dictador capaz de “apagar” de golpe Internet si estima que supone una amenaza. Una acción realizada a través de un control directo de todos los proveedores de acceso que operan en el país, que pasan a tener una importancia verdaderamente estratégica desde un punto de vista político.
Básicamente, la acción tiene lugar a dos niveles: en primer lugar, a nivel de DNS, que permite un control total del dominio .eg a todo aquel que pretenda acceder a recursos mediante el nombre de dominio. Pero dado que esto podría provocar una difusión inmediata de las direcciones IP numéricas de los servicios para poder acceder a través de éstas, utilizaron también el Border Gateway Protocol (BGP), el sistema a través del cual los proveedores de acceso a Internet publican dichas direcciones IP en la red: de manera simultánea, todos los proveedores de acceso del país dejaron de tener disponibles sus tablas de rutas. De repente, nadie sabe donde está nada ni puede acceder a nada: los usuarios desde fuera del país no pueden acceder a ningún recurso situado en un servidor dentro del país, y los usuarios desde dentro del país no pueden acceder a nada. Sin embargo, el bloqueo se puede establecer de manera selectiva: el mercado bursátil egipcio y algunas páginas web más siguieron funcionando sin problemas.
4.- Problemas por configuraciones erroneas