Cómo monitorear anuncios y rutas BGP usando BGPalerter en Ubuntu 18.04

El autor seleccionó el Fondo de Ayuda COVID-19 para recibir una donación como parte del programa Write for DOnations.
Introducción
BGP (Border Gateway Protocol) es uno de los protocolos principales responsables de enrutar paquetes a través de Internet, por lo que, cuando falla, pueden producirse interrupciones importantes. Por ejemplo, en 2019, un pequeño ISP cometió un error de configuración de BGP que, lamentablemente, se propagó en sentido ascendente y dejó fuera de servicio grandes partes de Cloudflare y AWS durante más de una hora. Además, un año antes, se produjo un secuestro de BGP para interceptar el tráfico hacia un conocido proveedor de billeteras de criptomonedas y robar los fondos de clientes desprevenidos.
BGPalerter es una herramienta de monitoreo de red BGP de código abierto que puede proporcionar alertas en tiempo real sobre la actividad de BGP, incluida la visibilidad de rutas y anuncios de nuevas rutas, así como también actividades potencialmente nefastas como secuestros de rutas o fugas de rutas.
Nota: BGPalerter ingiere automáticamente información de enrutamiento de red disponible públicamente, lo que significa que no necesita tener ningún nivel de acceso privilegiado o integración en la(s) red(es) que desea monitorear. Todo monitoreo cumple totalmente con la Ley de uso indebido de computadoras, la Ley de fraude y abuso informático y otras leyes similares. Sin embargo, se recomienda divulgar de manera responsable cualquier hallazgo relevante al operador de red afectado.
En este tutorial, instalará y configurará BGPalerter para monitorear sus redes importantes en busca de actividad potencialmente sospechosa.
Prerrequisitos
Para completar este tutorial, necesitarás:
-
Un servidor Ubuntu 18.04 configurado siguiendo la configuración inicial del servidor con Ubuntu 18.04, incluido un usuario sudo no root.
-
Una o más redes o dispositivos que desea monitorear, por ejemplo:
- Un servidor que usted mantiene
- La red de tu empresa
- Su proveedor de servicios de Internet local
Para cada dispositivo o red, deberá identificar la dirección IP individual, el rango de direcciones IP o el número de sistema autónomo del que forma parte. Esto se explica en el paso 1.
Una vez que tenga esto listo, inicie sesión en su servidor como usuario no root para comenzar.
Paso 1: Identificación de las redes a monitorear
En este paso, identificará los detalles relevantes de las redes que desea monitorear.
BGPalerter puede monitorear en función de direcciones IP individuales o prefijos de red. También puede monitorear redes enteras en función de su número de Sistema Autónomo (AS), que es un identificador único global para una red propiedad de una entidad administrativa en particular.
Para encontrar esta información, puede utilizar el servicio de búsqueda WHOIS de IP a ASN que ofrece el servicio de inteligencia de amenazas Team Cymru. Se trata de un servidor WHOIS personalizado diseñado para buscar direcciones IP e información de enrutamiento de red.
Si aún no lo tienes whois
instalado, puedes instalarlo usando los siguientes comandos:
- sudo apt update
- sudo apt install whois
Una vez que haya confirmado que whois
está instalado, comience por realizar una búsqueda de la dirección IP de su propio servidor, utilizando el -h
argumento para especificar un servidor personalizado:
- whois -h whois.cymru.com your-ip-address
Esto generará un resultado similar al siguiente, que muestra el nombre y el número del AS del que forma parte su servidor. Por lo general, será el AS de su proveedor de alojamiento de servidores, por ejemplo, DigitalOcean.
OutputAS | IP | AS Name14061 | your-ip-address | DIGITALOCEAN-ASN, US
A continuación, puede realizar una búsqueda para identificar el prefijo o rango de red del que forma parte su servidor. Para ello, agregue el -p
argumento a su solicitud:
- whois -h whois.cymru.com " -p your-ip-address"
La salida será muy similar al comando anterior, pero ahora mostrará el prefijo de dirección IP al que pertenece la dirección IP de su servidor:
OutputAS | IP | BGP Prefix | AS Name14061 | your-ip-address | 157.230.80.0/20 | DIGITALOCEAN-ASN, US
Por último, puede buscar más detalles del AS del que forma parte su servidor, incluida la región geográfica y la fecha de asignación.
Sustituya el número de AS que identificó con los comandos anteriores. Utilice el -v
argumento para habilitar la salida detallada, lo que garantiza que se muestren todos los detalles relevantes:
- whois -h whois.cymru.com " -v as14061"
La salida mostrará más información sobre el AS:
OutputAS | CC | Registry | Allocated | AS Name14061 | US | arin | 2012-09-25 | DIGITALOCEAN-ASN, US
Ha identificado detalles clave sobre las redes que desea monitorear. Anote estos detalles en algún lugar, ya que los necesitará más adelante. A continuación, comenzará la configuración de BGPalerter.
Paso 2: creación de un usuario sin privilegios para BGPalerter
En este paso, creará una nueva cuenta de usuario sin privilegios para BGPalerter, ya que el programa no necesita ejecutarse con privilegios sudo/root.
En primer lugar, cree un nuevo usuario con una contraseña deshabilitada:
- sudo adduser --disabled-password bgpalerter
No es necesario configurar una contraseña ni claves SSH, ya que utilizará este usuario solo como una cuenta de servicio para ejecutar y mantener BGPalerter.
Inicie sesión con el nuevo usuario utilizando su
:
- sudo su bgpalerter
Ahora iniciará sesión como el nuevo usuario:
bgpalerter@droplet:/home/user$
Utilice el cd
comando para moverse al directorio de inicio de su nuevo usuario:
bgpalerter@droplet:/home/user$ cdbgpalerter@droplet:~$
Ha creado un nuevo usuario sin privilegios para BGPalerter. A continuación, instalará y configurará BGPalerter en su sistema.
Paso 3: Instalación y configuración de BGPalerter
En este paso, instalará y configurará BGPalerter. Asegúrese de seguir conectado como su nuevo usuario sin privilegios.
En primer lugar, debe identificar la última versión de BGPalerter para asegurarse de descargar la versión más actualizada. Vaya a la página de versiones de BGPalerter y obtenga una copia del enlace de descarga de la versión más reciente de Linux x64.
Ahora puedes descargar una copia de BGPalerter usando wget
, asegurándote de sustituir el enlace de descarga correcto:
- wget https://github.com/nttgin/BGPalerter/releases/download/v1.24.0/bgpalerter-linux-x64
Una vez que el archivo haya terminado de descargarse, márquelo como ejecutable:
- chmod +x bgpalerter-linux-x64
A continuación, verifique que BGPalerter se haya descargado e instalado correctamente comprobando el número de versión:
- ./bgpalerter-linux-x64 --version
Esto mostrará el número de versión actual:
Output1.24.0
Antes de poder ejecutar BGPalerter correctamente, deberá definir las redes que desea supervisar en un archivo de configuración. Cree y abra el prefixes.yml
archivo en su editor de texto favorito:
- nano ~/prefixes.yml
En este archivo de configuración, especificará cada una de las direcciones IP individuales, rangos de direcciones IP y números de AS que desea monitorear.
Agregue el siguiente ejemplo y ajuste los valores de configuración según sea necesario utilizando la información de red que identificó en el Paso 1:
~/prefijos.yml
your-ip-address/32: description: My Server asn: - 14061 ignoreMorespecifics: false157.230.80.0/20: description: IP range for my Server asn: - 14061 ignoreMorespecifics: falseoptions: monitorASns: '14061': group: default
Puede supervisar tantos rangos de direcciones IP o números de AS como desee. Para supervisar direcciones IP individuales, represéntelas utilizando /32
para IPv4 y /128
para IPv6.
El ignoreMorespecifics
valor se utiliza para controlar si BGPalerter debe ignorar la actividad de las rutas que son más específicas (más pequeñas) que la que estás monitoreando. Por ejemplo, si estás monitoreando una ruta /20
y se detecta un cambio de ruta para una /24
dentro de ella, esto se considera más específico. En la mayoría de los casos, no querrás ignorarlos, sin embargo, si estás monitoreando una red grande con múltiples prefijos de clientes delegados, esto puede ayudar a reducir el ruido de fondo.
Ahora puedes ejecutar BGPalerter por primera vez para comenzar a monitorear tus redes:
- ./bgpalerter-linux-x64
Si BGPalerter se inicia correctamente, verá un resultado similar al siguiente. Tenga en cuenta que, a veces, el inicio del monitoreo puede demorar algunos minutos:
OutputImpossible to load config.yml. A default configuration file has been generated.BGPalerter, version: 1.24.0 environment: productionLoaded config: /home/bgpalerter/config.ymlMonitoring 157.230.80.0/20Monitoring your-ip-address/32Monitoring AS 14061
BGPalerter continuará ejecutándose hasta que lo detenga mediante Ctrl+C
.
En el siguiente paso, interpretará algunas de las alertas que BGPalerter puede generar.
Paso 4: Interpretación de las alertas de BGPalerter
En este paso, revisará algunos ejemplos de alertas de BGPalerter. BGPalerter enviará alertas a la fuente de salida principal y, opcionalmente, también a cualquier punto final de informes adicional que se pueda configurar dentro de config.yml
, como se describe en la documentación de BGPalerter.
De forma predeterminada, BGPalerter monitorea y alerta sobre lo siguiente:
-
Secuestro de rutas: se produce cuando un sistema autónomo anuncia un prefijo que no está permitido, lo que provoca que el tráfico se enrute de forma errónea. Esto podría deberse a un ataque deliberado o a un error de configuración accidental.
-
Pérdida de visibilidad de la ruta: una ruta se considera visible cuando la mayoría de los enrutadores BGP en Internet pueden enrutarla de manera confiable. La pérdida de visibilidad se refiere a la posibilidad de que su red no esté disponible, por ejemplo, si su interconexión BGP dejó de funcionar.
-
Anuncios de nuevos subprefijos: es cuando un AS comienza a anunciar un prefijo que es más pequeño que el previsto. Esto podría indicar un cambio de configuración intencional, una configuración incorrecta accidental o, en algunos casos, un ataque.
-
Actividad dentro de su AS: generalmente se refiere a anuncios de nuevas rutas. Una ruta se considera “nueva” si BGPalerter aún no la conoce.
A continuación se muestran algunos ejemplos de alertas, junto con una breve descripción de su significado:
Alerta #1
The prefix 203.0.113.0/24 is announced by AS64496 instead of AS65540
Esta alerta muestra evidencia de un secuestro de ruta, donde AS64496 ha anunciado 203.0.113.0/24
cuando se esperaba que AS65540 anunciara esta ruta. Este es un fuerte indicador de una configuración incorrecta que conduce a una fuga de ruta o un secuestro deliberado por parte de un atacante.
Alerta #2
The prefix 203.0.113.0/24 has been withdrawn. It is no longer visible from 6 peers
Esta alerta indica que la 203.0.113.0/24
red ya no está visible. Esto podría deberse a un problema de enrutamiento ascendente o a un corte de energía en un enrutador.
Alerta #3
A new prefix 203.0.113.0/25 is announced by AS64496. It should be instead 203.0.113.0/24 announced by AS64496
Esta alerta muestra que se ha anunciado un prefijo más específico cuando no se esperaba, por ejemplo, al anunciar a /25
cuando solo /24
se esperaba a. Es muy probable que se trate de una configuración incorrecta, aunque en algunos casos podría ser evidencia de un secuestro de ruta.
Alerta #4
AS64496 is announcing 192.0.2.0/24 but this prefix is not in the configured list of announced prefixes
Por último, esta alerta muestra que AS64496 ha anunciado un prefijo que BGPalerter aún no conoce. Esto podría deberse a que está anunciando legítimamente un nuevo prefijo o podría ser un indicio de una configuración incorrecta que provocó que anunciara accidentalmente un prefijo que pertenece a otra persona.
En este paso, revisaste algunos ejemplos de alertas de BGPalerter. A continuación, configurarás BGPalerter para que se ejecute automáticamente durante el arranque.
Paso 5: iniciar BGPalerter en el arranque
En este paso final, configurará BGPalerter para que se ejecute en el arranque.
Asegúrate de que aún estés conectado como tu nuevo usuario sin privilegios y luego abre el editor crontab:
- crontab -e
A continuación, agregue la siguiente entrada al final del archivo crontab:
crontab
@reboot sleep 10; screen -dmS bgpalerter "./bgpalerter-linux-x64"
Cada vez que se inicia el sistema, se creará una screen
sesión separada llamada 'bgpalerter' y se iniciará BGPalerter dentro de ella.
Guarde y salga del editor de crontab. Ahora puede reiniciar el sistema para asegurarse de que BGPalerter se inicie correctamente al iniciar el sistema.
Primero deberá cerrar la sesión de su usuario de BGPalerter:
- logout
Luego proceda a un reinicio normal del sistema:
- sudo reboot
Una vez que su sistema se haya reiniciado, vuelva a iniciar sesión en su servidor y utilice su
para acceder nuevamente a su usuario BGPalerter:
- sudo su bgpalerter
Luego, puede conectarse a la sesión en cualquier momento para ver el resultado de BGPalerter:
- screen -r bgpalerter
En este paso final, configuró BGPalerter para que se ejecute en el arranque.
Conclusión
En este artículo, configuró BGPalerter y lo usó para monitorear redes en busca de cambios en el enrutamiento BGP.
Si desea que BGPalerter sea más fácil de usar, puede configurarlo para enviar alertas a un canal de Slack a través de un webhook:
- Configurar los informes de Slack para BGPalerter
Si desea obtener más información sobre BGP en sí, pero no tiene acceso a un entorno de producción BGP, puede disfrutar usando DN42 para experimentar con BGP en un entorno seguro y aislado:
- Red descentralizada 42
Deja una respuesta