L’auteur a choisi le COVID-19 Relief Fund pour recevoir un don dans le cadre du programme Write for DOnations.
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.
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 :
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.
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 :
- sudo apt update
- 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é :
- 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.
OutputAS | 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 :
- 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 :
OutputAS | 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 :
- whois -h whois.cymru.com " -v as14061"
La sortie affichera de plus amples informations sur le SA :
OutputAS | 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.
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é :
- 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
:
- 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.
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 :
- 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 :
- 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 :
- ./bgpalerter-linux-x64 --version
Le numéro de la version actuelle sera alors affiché :
Output1.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é :
- 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 :
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 :
- ./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 :
OutputImpossible 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.
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 :
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.
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.
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.
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.
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 :
- crontab -e
Ensuite, ajoutez l’entrée suivante au bas du fichier 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 :
- logout
Ensuite, procédez à un redémarrage normal du système :
- 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 :
- sudo su bgpalerter
Vous pouvez alors vous joindre à la session à tout moment afin de visualiser les résultats de BGPalerter :
- screen -r bgpalerter
Lors de cette dernière étape, vous avez configurer BGPalerter pour qu’il se lance au démarrage.
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.
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!