Tutorial

Comment surveiller les annonces et les itinéraires BGP en utilisant BGPalerter sur Ubuntu 18.04

Published on May 15, 2020
Français
Comment surveiller les annonces et les itinéraires BGP en utilisant BGPalerter sur Ubuntu 18.04

L’auteur a choisi le COVID-19 Relief Fund pour recevoir un don dans le cadre du programme Write for DOnations.

Introduction

BGP (Border Gateway Protocol) est l’un des principaux protocoles utilisés pour le routage des paquets sur Internet, de sorte que lorsqu’il se trompe, des pannes importantes peuvent se produire. Par exemple, en 2019, un petit FAI a effectué une mauvaise configuration de BGP qui s’est malheureusement propagée en amont et a mis hors ligne une grande partie de Cloudflare et d’AWS pendant plus d’une heure. De plus, un an plus tôt, un détournement du BGP avait eu lieu afin d’intercepter le trafic vers un fournisseur bien connu de portefeuille de crypto-monnaie et de voler les fonds de clients peu méfiants.

BGPalerter est un outil de surveillance open source du réseau BGP qui peut fournir des alertes en temps réel sur l’activité du BGP, y compris la visibilité des itinéraires et l’annonce de nouveaux itinéraires, ainsi que sur les activités potentiellement néfastes telles que les détournements ou les fuites d’itinéraires. BGPalerter ingère automatiquement les informations de routage réseau disponibles au public, ce qui signifie qu’il n’a pas besoin d’avoir un niveau d’accès privilégié ou d’intégration dans le(s) réseau(x) que vous souhaitez surveiller.

Remarque : BGPalerter ingère automatiquement les informations de routage de réseau disponibles au public, ce qui signifie qu’il n’a pas besoin d’avoir un niveau d’accès privilégié ou d’intégration dans le(s) réseau(x) que vous souhaitez surveiller. Tous les contrôles sont entièrement conformes à la loi sur l’utilisation abusive de l’informatique, à la loi sur la fraude et les abus informatiques et à d’autres lois similaires. Toutefois, il est recommandé de divulguer de manière responsable toute constatation pertinente au gestionnaire de réseau concerné.

Dans ce tutoriel, vous allez installer et configurer BGPalerter pour surveiller vos réseaux importants afin de détecter toute activité potentiellement suspecte.

Conditions préalables

Pour suivre ce tutoriel, vous aurez besoin de :

  • Un serveur Ubuntu 18.04 configuré en suivant la Configuration initiale du serveur avec Ubuntu 18.04, y compris un utilisateur sudo non root.

  • Un ou plusieurs réseaux ou appareils que vous souhaitez surveiller, par exemple :

    • Un serveur dont vous êtes chargé de la maintenance
    • Le réseau de votre entreprise
    • Votre FAI local

    Pour chaque appareil ou réseau, vous devrez identifier soit l’adresse IP individuelle, soit la plage d’adresses IP, soit le numéro du système autonome dont il fait partie. Cette opération est couverte dans l’Étape 1.

Une fois que tout cela est prêt, connectez-vous à votre serveur en tant qu’utilisateur non root pour commencer.

Étape 1 — Identification des réseaux à surveiller

Au cours de cette étape, vous identifierez les détails pertinents des réseaux que vous souhaitez surveiller.

BGPalerter peut effectuer un suivi sur la base d’adresses IP individuelles ou de préfixes de réseau. Il peut également surveiller des réseaux entiers sur la base de leur numéro de système autonome (SA), qui est un identifiant unique au niveau mondial pour un réseau appartenant à une entité administrative particulière.

Pour trouver ces informations, vous pouvez utiliser le IP-to-ASN WHOIS lookup service fourni par le service de renseignements sur les menaces Team Cymru. Il s’agit d’un serveur WHOIS personnalisé conçu pour la recherche d’adresses IP et d’informations sur le routage du réseau.

Si vous n’avez pas encore installé whois, vous pouvez le faire en utilisant les commandes suivantes :

  1. sudo apt update
  2. sudo apt install whois

Une fois que vous avez confirmé que whois a été installé, commencez par rechercher l’adresse IP de votre propre serveur, en utilisant l’argument -h pour spécifier un serveur personnalisé :

  1. whois -h whois.cymru.com your-ip-address

Vous obtiendrez alors une sortie similaire à celle qui suit, qui indique le nom et le numéro du SA dont votre serveur fait partie. Il s’agit généralement du SA de votre fournisseur d’hébergement de serveur, par exemple, DigitalOcean.

Output
AS | IP | AS Name 14061 | your-ip-address | DIGITALOCEAN-ASN, US

Ensuite, vous pouvez effectuer une recherche pour identifier le préfixe/la plage de réseau dont votre serveur fait partie. Pour ce faire, vous devez ajouter l’argument -p à votre demande :

  1. whois -h whois.cymru.com " -p your-ip-address"

La sortie sera très similaire à la commande précédente, mais affichera désormais le préfixe de l’adresse IP à laquelle appartient l’adresse IP de votre serveur :

Output
AS | IP | BGP Prefix | AS Name 14061 | your-ip-address | 157.230.80.0/20 | DIGITALOCEAN-ASN, US

Enfin, vous pouvez consulter d’autres détails sur le SA dont votre serveur fait partie, notamment la région géographique et la date d’attribution.

Modifiez le numéro SA que vous avez identifié en utilisant les commandes précédentes. Vous utilisez l’argument -v pour permettre une sortie verbeuse, ce qui garantit que tous les détails pertinents sont affichés :

  1. whois -h whois.cymru.com " -v as14061"

La sortie affichera de plus amples informations sur le SA :

Output
AS | CC | Registry | Allocated | AS Name 14061 | US | arin | 2012-09-25 | DIGITALOCEAN-ASN, US

Vous avez identifié les principaux détails concernant le(s) réseau(x) que vous souhaitez surveiller. Prenez note de ces détails quelque part, car vous en aurez besoin plus tard. Ensuite, vous commencerez la configuration de BGPalerter.

Étape 2 — Création d’un utilisateur sans privilège pour BGPalerter

Au cours de cette étape, vous allez créer un nouveau compte utilisateur sans privilège pour BGPalerter, car le programme n’a pas besoin de fonctionner avec les privilèges sudo/root.

Tout d’abord, créez un nouvel utilisateur avec un mot de passe désactivé :

  1. sudo adduser --disabled-password bgpalerter

Vous n’avez pas besoin de définir un mot de passe ou des clés SSH, car vous utiliserez cet utilisateur uniquement comme compte de service pour l’exécution/la maintenance de BGPalerter.

Connectez-vous au nouvel utilisateur à l’aide de su :

  1. sudo su bgpalerter

Vous êtes maintenant connecté en tant que nouvel utilisateur :

bgpalerter@droplet:/home/user$

Utilisez la commande cd pour vous déplacer vers le répertoire d’accueil de votre nouvel utilisateur :

bgpalerter@droplet:/home/user$ cd
bgpalerter@droplet:~$

Vous avez créé un nouvel utilisateur sans privilège pour BGPalerter. Ensuite, vous installerez et configurerez BGPalerter sur votre système.

Étape 3 — Installation et configuration de BGPalerter

Au cours de cette étape, vous allez installer et configurer BGPalerter. Assurez-vous d’être toujours connecté en tant que nouvel utilisateur sans privilège.

Tout d’abord, vous devez identifier la dernière version de BGPalerter, afin de vous assurer que vous téléchargez la version la plus récente. Naviguez vers la page BGPalerter Releases et sélectionnez une copie du lien de téléchargement de la version Linux x64 la plus récente.

Vous pouvez maintenant télécharger une copie de BGPalerter en utilisant wget, en vous assurant de substituer le bon lien de téléchargement :

  1. wget https://github.com/nttgin/BGPalerter/releases/download/v1.24.0/bgpalerter-linux-x64

Une fois le téléchargement du fichier terminé, marquez-le comme exécutable :

  1. chmod +x bgpalerter-linux-x64

Ensuite, vérifiez que BGPalerter a été téléchargé et installé avec succès en vérifiant le numéro de version :

  1. ./bgpalerter-linux-x64 --version

Le numéro de la version actuelle sera alors affiché :

Output
1.24.0

Avant de pouvoir exécuter correctement BGPalerter, vous devez définir les réseaux que vous souhaitez surveiller dans un fichier de configuration. Créez et ouvrez le fichier prefixes.yml dans votre éditeur de texte préféré :

  1. nano ~/prefixes.yml

Dans ce fichier de configuration, vous spécifierez chacune des adresses IP individuelles, des plages d’adresses IP et des numéros SA que vous souhaitez surveiller.

Ajoutez l’exemple suivant et ajustez les valeurs de configuration selon les besoins, en utilisant les informations réseau que vous avez identifiées à l’Étape 1 :

~/prefixes.yml
your-ip-address/32:
  description: My Server
  asn:
    - 14061
  ignoreMorespecifics: false

157.230.80.0/20:
  description: IP range for my Server
  asn:
    - 14061
  ignoreMorespecifics: false

options:
  monitorASns:
    '14061':
      group: default

Vous pouvez surveiller autant de plages d’adresses IP ou de numéros SA que vous le souhaitez. Pour surveiller les adresses IP individuelles, représentez-les en utilisant /32 pour IPv4, et /128 pour IPv6.

La valeur ignoreMorespecifics est utilisée pour contrôler si BGPalerter doit ignorer l’activité pour les itinéraires qui sont plus spécifiques (plus petits) que celui que vous surveillez. Par exemple, si vous surveillez un /20 et qu’un changement de routage est détecté pour un /24 à l’intérieur de celui-ci, cela est considéré comme plus spécifique. Dans la plupart des cas, vous ne voulez pas les ignorer, mais si vous surveillez un grand réseau avec plusieurs préfixes clients délégués, cela peut contribuer à réduire le bruit de fond.

Vous pouvez maintenant lancer BGPalerter pour la première fois, afin de commencer à surveiller vos réseaux :

  1. ./bgpalerter-linux-x64

Si BGPalerter démarre avec succès, vous obtiendrez une sortie similaire à celle qui suit. Notez qu’il faut parfois quelques minutes pour que la surveillance commence :

Output
Impossible to load config.yml. A default configuration file has been generated. BGPalerter, version: 1.24.0 environment: production Loaded config: /home/bgpalerter/config.yml Monitoring 157.230.80.0/20 Monitoring your-ip-address/32 Monitoring AS 14061

BGPalerter continuera de fonctionner jusqu’à ce que vous l’arrêtiez en utilisant Ctrl+C.

Dans l’étape suivante, vous interpréterez certaines des alertes que BGPalerter peut générer.

Étape 4 — Interprétation des alertes BGPalerter

Dans cette étape, vous allez examiner quelques exemples d’alertes BGPalerter. BGPalerter émettra des alertes sur le flux de sortie principal, ainsi qu’en option sur tout autre point final de rapport pouvant être configuré dans config.yml, comme décrit dans la documentation de BGPalerter.

Par défaut, BGPalerter surveille et alerte sur les points suivants :

  • Détournement d’itinéraire : se produit lorsqu’un SA annonce un préfixe qu’il n’est pas autorisé à utiliser, ce qui entraîne un acheminement erroné du trafic. Il peut s’agir soit d’une attaque délibérée, soit d’une erreur de configuration accidentelle.

  • Perte de visibilité de l’itinéraire : un itinéraire est considéré comme visible lorsqu’une majorité de routeurs BGP sur Internet sont capables de l’atteindre de manière fiable. La perte de visibilité signifie que votre réseau est potentiellement indisponible, par exemple si votre peering BGP a cessé de fonctionner.

  • Annonces de nouveaux sous-préfixes : renvoie au moment où un SA commence à annoncer un préfixe plus petit que ce qui est prévu. Cela peut être le signe d’un changement de configuration prévu, d’une mauvaise configuration accidentelle ou, dans certains cas, d’une attaque.

  • Activité au sein de votre SA : fait généralement référence aux annonces de nouveaux itinéraires. Un itinéraire est considéré comme “nouveau” si BGPalerter ne le connaît pas encore.

Vous trouverez ci-dessous quelques exemples d’alertes, ainsi qu’une brève description de leur signification :

Alert #1
The prefix 203.0.113.0/24 is announced by AS64496 instead of AS65540

Cette alerte montre la preuve d’un détournement d’itinéraire, où l’AS64496 a annoncé 203.0.113.0/24 alors qu’il est prévu que ce itinéraire soit annoncé par l’AS65540. C’est un indicateur fort d’une mauvaise configuration menant à une fuite d’itinéraire, ou à un détournement délibéré par un agresseur.

Alert #2
The prefix 203.0.113.0/24 has been withdrawn. It is no longer visible from 6 peers

Cette alerte montre que le réseau 203.0.113.0/24 n’est plus visible. Cela peut être dû à un problème de routage en amont, ou à une panne de courant sur un routeur.

Alert #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

Cette alerte montre qu’un préfixe plus spécifique a été annoncé là où il n’est pas prévu, par exemple en annonçant un /25 alors que seul un /24 est prévu. Il s’agit très probablement d’une mauvaise configuration, mais dans certains cas, cela pourrait être la preuve d’un détournement d’itinéraire.

Alert #4
AS64496 is announcing 192.0.2.0/24 but this prefix is not in the configured list of announced prefixes

Enfin, cette alerte montre que l’AS64496 a annoncé un préfixe dont BGPalerter n’a pas encore connaissance. Cela pourrait être dû au fait que vous annoncez légitimement un nouveau préfixe, ou cela pourrait être le signe d’une mauvaise configuration qui vous amènerait à annoncer accidentellement un préfixe appartenant à quelqu’un d’autre.

Dans cette étape, vous avez passé en revue quelques exemples d’alertes BGPalerter. Ensuite, vous configurerez BGPalerter pour qu’il s’exécute automatiquement au démarrage.

Étape 5 — Démarrage de BGPalerter au démarrage

Lors de cette dernière étape, vous configurerez BGPalerter pour qu’il se lance au démarrage.

Assurez-vous que vous êtes toujours connecté en tant que nouvel utilisateur sans privilège, puis ouvrez l’éditeur crontab :

  1. crontab -e

Ensuite, ajoutez l’entrée suivante au bas du fichier crontab :

crontab
@reboot sleep 10; screen -dmS bgpalerter "./bgpalerter-linux-x64"

À chaque fois que votre système démarrera, cela créera une session d'écran détachée appelée “bgpalerter”, et lancera BGPalerter dans cette session.

Sauvegardez et quittez l’éditeur crontab. Vous souhaitez peut-être désormais redémarrer votre système afin de vous assurer que BGPalerter est correctement lancé au démarrage.

Vous devez d’abord vous déconnecter de votre utilisateur BGPalerter :

  1. logout

Ensuite, procédez à un redémarrage normal du système :

  1. sudo reboot

Une fois que votre système a redémarré, reconnectez-vous à votre serveur et utilisez su pour accéder à nouveau à votre utilisateur BGPalerter :

  1. sudo su bgpalerter

Vous pouvez alors vous joindre à la session à tout moment afin de visualiser les résultats de BGPalerter :

  1. screen -r bgpalerter

Lors de cette dernière étape, vous avez configurer BGPalerter pour qu’il se lance au démarrage.

Conclusion

Dans cet article, vous avez configuré BGPalerter et l’avez utilisé pour surveiller les réseaux afin de détecter les changements de routage BGP.

Si vous souhaitez rendre BGPalerter plus facile à utiliser, vous pouvez le configurer pour envoyer des alertes à un canal Slack via un webhook :

Si vous souhaitez en savoir plus sur le BGP lui-même, mais que vous n’avez pas accès à un environnement de production de BGP, vous pouvez utiliser DN42 pour expérimenter le BGP dans un environnement sûr et isolé :

Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.

Learn more about our products

About the authors
Default avatar

Security Engineer

IT Security Engineer, technical writer and occasional blogger from the United Kingdom, with an interest in security defence and blue team activities.



Still looking for an answer?

Ask a questionSearch for more help

Was this helpful?
 
Leave a comment


This textbox defaults to using Markdown to format your answer.

You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!

Try DigitalOcean for free

Click below to sign up and get $200 of credit to try our products over 60 days!

Sign up

Join the Tech Talk
Success! Thank you! Please check your email for further details.

Please complete your information!

Featured on Community

Get our biweekly newsletter

Sign up for Infrastructure as a Newsletter.

Hollie's Hub for Good

Working on improving health and education, reducing inequality, and spurring economic growth? We'd like to help.

Become a contributor

Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.

Welcome to the developer cloud

DigitalOcean makes it simple to launch in the cloud and scale up as you grow — whether you're running one virtual machine or ten thousand.

Learn more