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