RPKI

Resource Public Key Infrastructure (RPKI)

RPKI permite a los titulares de direccionamiento público IP declarar sus recursos de forma verificada gracias a una cadena de certificados.

El motivo de utilizar RPKI es conseguir que el encaminamiento en Internet sea más seguro.

RPKI está siendo promovido por mucha gente, desde desarrolladores de software libre, proveedores de hardware, podcasters, ¿verdad que sí?, y por supuesto los cinto RIR (Registros Regionales de Internet): ARIN, APNIC, AFRINIC, LACNIC y por supuesto nuestro RIPE NCC

Actualmente, RPKI se utiliza para permitir que el titular legítimo de un bloque de direccionamiento IP haga una declaración autorizada sobre qué AS está autorizado para originar su prefijo en BGP. Además, todo el Mundo puede descargar y validar estas declaraciones y tomar decisiones de enrutamiento basadas en ellas. Este proceso se conoce como validación del origen de la ruta (ROV – Route Origin Validator).

El objetivo final de RPKI no es más que proporcionar la validación de los prefijos en Internet.

ROA

Antes de nada tenemos que saber qué es el ROA (Route Origin Authorization). Una ROA es una declaración firmada que consta de un prefijo, una longitud máxima de prefijo y un ASN de origen.

Porción de la lista de ROAs de Tecnocrática en el Lir Portal de RIPE NCC

Por cada prefijo podemos tener el ROA en tres posibles estados:

  • Desconocido
  • Inválido
  • Válido

Una vez que ya sabemos lo que es el ROA ya podemos empezar con RPKI. En RPKI, los certificados de los recursos dan fe de la asignación por parte del emisor de direcciones IP o números de AS al usuario final.

Jerarquía RIR y certificados

Como resultado, la jerarquía de certificados en RPKI sigue la misma estructura que la jerarquía de asignación de recursos de números de Internet, con la excepción del nivel IANA porque claro, IANA en el tema de RPKI está fuera.

En cambio, cada uno de los cinco RIR ofrece un CA raíz del que se deriva una cadena de confianza para los recursos que administra cada uno de ellos.

Sistema de CA raíz para los RPKI

Algo más que tenemos que saber es que los certificados digitales utilizados en RPKI están basados ​​en X.509,

Algo que podría alguien decir es que los certificados X.509 se utilizan para autenticar individuos o webs y claro, en RPKI los certificados no tienen información de identidad.

BGP y RPKI

Otro tema a saber cuando se habla de RPKI es BGP, nuestro protocolo de routing favorito, pero como ya hemos hablado bastante de BGP no vamos a volver a liarnos la manta a la cabeza.

Llegados a este punto tenemos que pensar en cómo vamos a securizar BGP, porque RPKI nos va a servir básicamente para validar si una ruta es de quien dice ser o no, para evitar entre otras cosas secuestro de prefijos BGP o BGP hijacking.

Vamos a imaginar que hemos recibido el prefijo 217.18.32.0/22 generado en el AS15954, es decir Tecnocrática.

Pues vamos a ver el ROA y el ROA nos dice que ese rango se tiene que generar en el AS que hemos dicho, pero el most specific length allowed es de 20 y en el prefijo recibido es de 22, así que tendríamos un problema porque el prefijo no coincidiría con la información del ROA con lo cual la ruta sería invalida.

Este es el ejemplo podemos ver cómo un fallo de configuración o de definición del ROA puede hacer que nuestro anuncio BGP sea invalido.

Esto normalmente no pasa, si en el LIR Portal defines que vas a anunciar un /20 se supone que es lo que vas a hacer.

Pero ahora imaginad que ese direccionamiento llega anunciado por el AS1234, que obviamente no es el bueno, no es el definido en el ROA, en ese caso RPKI sería invalido y en este caso estaríamos hablando de un secuestro de prefijo de BGP.

Ahora, es nuestro trabajo decidir si cuando nos llega un prefijo invalido lo descartamos o no. Mi consejo es descartarlo siempre, si es un error en el AS origen se van a dar cuenta y si es un secuestro pues nos ahorraremos problemas.

Routinator 3000

Pero claro, eso es en un Mundo ideal y fantástico en el que todos los routers del Mundo soportan RPKI, y a día de hoy no todos soportan RPKI, de hecho aún son una minoría, creciente, pero minoría.

¿Qué software hace todo esto? Pues el software que nos va a servir como validador de RPKI es Routinator 3000,

Este software se puede descargar de NLNetlabs y será el encargado de validar los prefijos. El software es gratuito y libre distribuido con licencia BSD en Github.

Idealmente deberíais de tener un par de Routinator a los que puedan consultar vuestros routers, y es interesante tener dos, en plataformas diferentes si usáis virtualización para evitar problemas.

Foto de mark glancy en Pexels