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

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 hace una herrami

DNS sobre TLS: privacidad en el DNS

Privacidad en el DNS En el sistema de nombres de dominio (DNS) la informaciĆ³n de preguntas y respuestas siempre ha viajado "en plano" por la red. Es decir, sin cifrar. Todo lo que se consulta vĆ­a DNS puede ser leĆ­do por quienes se encuentren en el camino entre un cliente y su "servidor DNS recursivo", por ejemplo los proveedores de Internet (ISPs) y gente que pueda analizar los paquetes de la red. Desde hace un tiempo que esto se ha visto con preocupaciĆ³n. Siempre se ha dicho que "los datos del DNS son pĆŗblicos", lo que es cierto, pero lo que alguien estĆ© consultando debiera ser privado. El sitio de alcohĆ³licos anĆ³nimos es pĆŗblico, pero debiera ser privado quiĆ©nes estĆ”n consultando por el. Esa es la diferencia. Se ha trabajado desde distintos lados las mejoras de privacidad, en especial desde IETF, el organismo que estandariza los protocolos en Internet. Hay avances en TLS (tambiĆ©n conocido como SSL) y por supuesto tambiĆ©n en DNS, donde hay varias t