Ir al contenido principal

Routing seguro: instalación de FORT y FRR con RPKI

Una de las principales ventajas de las herramientas de Código Abierto es que permiten bajo licencias de uso acceder a su fuente y modificarla de acuerdo al objetivo de cada plataforma. Asimismo, millones de personas colaboran de manera productiva en la innovación y desarrollo de estas herramientas, lo que se traduce en su rápido avance y genera una constante retroalimentación dentro de la comunidad.

Sin embargo, surgen diferentes inquietudes respecto al mundo de Código Abierto, una de ellas es: ¿Puede un proyecto mantener su desarrollo en los próximos 5 o 10 años? Un elemento tranquilizador es que hoy en día se observa que las grandes compañías cada vez se involucran más en las piezas de software construidos en Código Abierto; esta vinculación les permite escalar sus desarrollos tecnológicos a costos más bajos, pudiendo diseñar soluciones a la medida y adaptarlas a sus requerimientos. Estas compañías contribuyen con la comunidad aportando ideas y compartiendo parte de sus experiencias, buen indicio para los proyectos en Código Abierto a largo plazo.

 

VALIDADOR FORT

FORT es un validador RPKI de código abierto, forma parte de una iniciativa de Lacnic y NIC.MX sobre seguridad de ruteo para una Internet libre y abierta.

Recordemos que RPKI, por sus siglas en inglés Resource Public Key Infraestructure, es un mecanismo que sirve para validar el origen de una ruta en redes TCP/IP.

Los validadores permiten a los operadores de redes ratificar la información de enrutamiento BGP contra el repositorio RPKI para usarla en su configuración y resolución de rutas.

FORT está conformado por un validador y un servidor RTR (Ready To Run); el primero se encarga de la comunicación con los repositorios RPKI de cada RIR (Regional Internet Registry) y realizar la sincronización de la información, almacenando los archivos ROA en su memoria y re-sincronizando cada cierto tiempo.

Imagen extraída de https://nicmx.github.io/FORT-validator/intro-fort.html

Por otra parte, el servidor RTR es quien se comunica con los routers y les entrega la información de los ROA como respuesta a las peticiones.

ROA por sus siglas en inglés Routing Origin Authorization, son objetos firmados digitalmente usando los certificados generados por RPKI, contienen información sobre el sistema autónomo autorizado para anunciar un conjunto de prefijos.

 

RECETA FRR

¿Por qué hablamos de Receta? Una receta indica el procedimiento e ingredientes necesarios para que un platillo, o un sistema, puedan recrearse con los mismos resultados, lo que define adecuadamente el objetivo del artículo; iniciaremos compartiendo la receta para instalar el demonio de enrutamiento dinámico FRR, conformando una solución de ruteo de Código Abierto que pueda ser integrada al validador y permita verificar los recursos de red.

Las instalaciones descritas a continuación fueron realizadas en un ambiente corriendo Centos 7.

Se debe iniciar por instalar las siguientes dependencias:

[s1]# yum install pcre-devel
[s1]# yum install libssh
[s1]# yum install libssh-devel
[s1]# yum install c-ares

Continuamos con la instalación de las librerías libyang y librtr, se indica el URL desde donde pueden ser extraídas:

[s1]# wget https://ci1.netdef.org/browse/LIBYANG-YANGRELEASE-10/artifact/shared/CentOS-7-x86_64-Packages/
[s1]# rpm -iUv libyang-0.16.111-0.x86_64.rpm
[s1]# rpm -iUv libyang-devel-0.16.111-0.x86_64.rpm
[s1]# wget https://ci1.netdef.org/browse/RPKI-RTRLIB-110/artifact/shared/CentOS-7-x86_64-Packages/
[s1]# rpm -iUv librtr-0.7.0-1.el7.centos.x86_64.rpm
[s1]# rpm -iUv librtr-devel-0.7.0-1.el7.centos.x86_64.rpm

Una vez establecidas las dos condiciones previas necesarias, procedemos a instalar FRR con RPKI, la versión que se desee instalar puede ser extraída de la página de github:

[s1]# wget https://github.com/FRRouting/frr/releases/tag/frr-7.2/frr-7.2RPKI-01.el7.centos.x86_64.rpm
[s1]# rpm -iUv frr-7.2RPKI-01.el7.centos.x86_64.rpm

Una vez realizada la instalación, se debe modificar un archivo llamado daemon, este contiene el detalle de los servicios que puede iniciar FRR, vienen todos deshabilitados de forma predeterminada, se habilitan reemplazando el "no" por un "yes" en la etiqueta del servicio:

[s1]# nano /etc/frr/daemons
        bgpd=yes
        ospfd=yes
        ospf6d=yes

Adicionalmente, en el mismo archivo daemon debemos identificar la etiqueta con nombre bgpd_options=" -A 127.0.0.1" y agregar luego de la dirección IP lo siguiente: -M rpki quedando de la siguiente manera:

bgpd_options="-A 127.0.0.1 -M rpki"

Luego de esto guardamos los cambios y se podría iniciar el servicio

[s1]# systemctl daemon-reload
[s1]# systemctl start frr
Vista de servicio FRR luego de ser iniciado

 

RECETA FORT

Se desplegó la versión 1.3.0 para centos7 del validador, iniciamos por instalar las siguientes dependencias:

[s1]# yum install autoconf automake git jansson-devel pkgconfig rsync libcurl-devel libxml2-devel
[s1]# yum groupinstall "Development Tools"

Luego se debe instalar OpenSSL, la versión para centos7 debe ser igual o superior a 1.1.0 sino tendremos problemas a la hora de iniciar el validador. La versión que se encontraba disponible en el repositorio de centos al momento de la instalación era la 1.0.2, por ello descargamos la versión 1.1.0 y la compilamos.

  
[s1]# curl https://www.openssl.org/source/openssl-1.1.0k.tar.gz | tar xvz
[s1]# cd openssl-1.1.0k
[s1]# ./config --prefix=/usr/local --openssldir=/usr/local/openssl
[s1]# make
[s1]# make install
[s1]# mv libcrypto.so.1.1 libssl.so.1.1 /usr/lib64/
[s1]# ln -sfn /usr/local/bin/openssl /usr/bin/openssl

Posteriormente, se debe actualizar el compilador a una versión igual o superior a 4.9, en nuestra caso se instaló la herramienta devtoolset-8-gcc

[s1]# yum install devtoolset-8-gcc

Luego de este paso, se deben instalar otras dependencias, es importante seguir el orden para evitar problemas a la hora de iniciar el validador

[s1]# yum install centos-release-scl epel-release openssl11-devel

Finalmente, se puede iniciar sesión en el compilador para instalar el validador FORT

[s1]# scl enable devtoolset-8 bash
[s1]# cd ~
[s1 ~]# curl -L https://github.com/NICMx/FORT-validator/releases/download/v1.3.0/fort-1.3.0.tar.gz --output fort-1.3.0.tar.gz
[s1 ~]# tar xvzf fort-1.3.0.tar.gz
[s1 ~]# cd fort-1.3.0

Se deben insertar unos flags de la nueva versión de OpenSSL

[s1 fort-1.3.0]# export CFLAGS+="$(pkg-config --cflags openssl11)" LDFLAGS+="$(pkg-config --libs openssl11)"
[s1 fort-1.3.0]# ./configure
[s1 fort-1.3.0]# make
[s1 fort-1.3.0]# make install

Se cierra la sesión de “devtoolset”

[s1 fort-1.3.0]# exit

A continuación se debe ubicar la ruta donde se encuentran los archivos TAL en el servidor, FORT trae por defecto cuatro de los cinco archivos TAL en la siguiente ruta /root/fort-1.3.0/examples/tal. El archivo faltante corresponde a ARIN y puede ser descargado de la siguiente dirección: https://www.arin.net/resources/manage/rpki/tal/ debe tener extensión ".tal"

Los archivos TAL por sus siglas en inglés Trust Anchor Locator contienen la información necesaria para que una herramienta de validación de RPKI pueda acceder a la localización del repositorio y comenzar el proceso de validación, están constituidos por una URL que apunta al repositorio RPKI del RIR y una clave pública codificada apropiadamente.

Vista de un archivo TAL

Luego de validar la ruta para acceder a los 5 archivos TAL necesarios, podemos iniciar FORT, para ello debemos ubicar la dirección del ejecutable y correrlo con una serie de parámetros:

[s1]# /usr/local/bin/fort --mode server --tal /root/fort-1.3.0/examples/tal/ --local-repository /tmp/fort/repository --server.address dirección_IP --server.port 323

Si se desea crear el servicio fort para iniciarlo y detenerlo con systemctl, se debe crear un archivo con extensión ".service" con las siguientes características y dentro de la ruta /etc/systemd/system:

[s1]# nano /etc/systemd/system/fort.service
        [Unit]
        Description=FORT
        [Service]
        Type=simple
        ExecStart=/usr/local/bin/fort --mode server --tal /root/fort-1.3.0/examples/tal/ --local repository /tmp/fort/repository --server.address dirección_IP --server.port 323
        [Install]
        WantedBy=multi-user.target

Luego de guardar los cambios, podemos iniciar el servicio

[s1]# systemctl enable fort
[s1]# systemctl start fort
Vista de servicio FORT luego de ser iniciado

Iniciar RPKI

Tras la instalación de las herramientas descrita anteriormente, basta con acceder al modo router de FRR y configurar el servidor caché de rpki:

Entrar al router

[s1]# vtysh

Configurar Servidor RPKI

s1# config term
s1(config)# rpki
s1(config-rpki)# rpki cache dirección_IP 323 preference 1

Salir del modo de configuración e iniciar RPKI

s1# rpki start

Una vez finalizado el procedimiento, podemos iniciar la validación de los recursos de red. Cabe destacar que, la instalación de ambas herramientas fue realizada en el mismo servidor sin embargo, pueden ser instaladas en equipos diferentes mientras tengan conectividad entre ellos.

Más información

Este documento es un resumen de la presentación realizada durante el Webinar "Implementando RPKI con FORT Validator en Cisco y FRR" organizado por LACNOG el 14 de Agosto de 2020. Acá puede ver un video de la charla (youtube).

Comentarios

Entradas más populares de este blog

Servicio AS112: atendiendo los reversos de direcciones IP privadas

El uso más común que se le da al servicio DNS es el de "transformar los nombres de dominio en direcciones IP", que permite por ejemplo a los humanos recordar fácilmente una dirección de un sitio web como "www.nic.cl", y dejar que sean las máquinas -mediante el DNS- que lo transformen a una dirección IPv6 como 2001:1398:5::6003, ó 200.7.7.3 en IPv4. Pero no es el único uso del DNS. También existe el llamado "servicio reverso", que como su nombre lo indica, hace lo contrario: transformar una IP en un nombre de máquina. Esto no es usado por los usuarios corrientes, sino por servicios por ejemplo de control de acceso, o registro de logs, etcétera; quienes parten de una dirección IPv6 como 2800:3f0:4003:c00::69 y obtienen como resultado www.google.com. Por otro lado, también existen direcciones IP especiales que se les llama "privadas", o "locales"; que tienen la particularidad que pueden ser usadas libremente por organizaciones en sus ...

Uso correcto del servicio DNS secundario gratuito

NIC Chile desde hace más de 20 años ha ofrecido el servicio de " Secundario DNS gratuito " para sus clientes. El objetivo siempre fue mejorar la robustez de .CL, ya que disponer de solo 1 NS es demasiado frágil, y este servicio siempre se ha mantenido con los niveles de infraestructura y tiempos de respuesta adecuados a su tiempo. El uso del servicio ha sido sostenido en el tiempo. Actualmente, más de 30 mil de nuestros clientes lo utilizan! Y con la adición de tecnologías como IPv6, se ha permitido que estos miles de dominios CL tengan presencia en la nueva red . Sin embargo, no todo es miel sobre hojuelas. Desde los inicios se ha detectado un problema técnico recurrente. El uso de este servicio, si bien es gratuito para clientes de NIC Chile, requiere una configuración técnica especial para que funcione correctamente. Y esta configuración debe ser realizada por quien administre el servicio DNS del dominio (por ejemplo la empresa de hospedaje (" host...

dns-tools: herramienta para verificar zonas (ZONEMD) y firmar DNSSEC en forma distribuida

Actualmente existen diversas soluciones que permiten automatizar la firma DNSSEC de los dominios, integrados a los mismos servicios que normalmente proveen DNS. En el ámbito de código abierto, los más utilizados permiten activar DNSSEC con algunas instrucciones en la configuración, sin preocuparse de llaves ni firmas. Sin embargo, siempre es bueno tener herramientas que permitan hacer verificaciones o incluso firmas de una forma más de bajo nivel. Suelen ocurrir casos de uso donde alguien prefiere tener más control, o integrarse con sistemas internos no estándar. Les presentamos  dns-tools , una herramienta de línea de comandos (CLI), escrita en lenguaje Go, que permite firmar con DNSSEC una zona, crear registros de  integridad  de zona llamados ZONEMD, y a su vez validar estas firmas y registros. Esta herramienta fue creada por NICLabs , el laboratorio de NIC Chile. Es mantenida con código abierto en github , con licencia MIT. Una de las cosas más destacadas, y que lo ha...