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