Retour aux mises à jour
UpdatedJul 28, 2026

tabi — Mis à jour !

Détection de détournement BGP

Partager

Exemple avancé

Cet exemple montre comment utiliser le module tabi afin de détecter tous les détournements BGP possibles observés depuis un collecteur BGP.

Prérequis

AVERTISSEMENT : Avant d'essayer cet exemple, assurez-vous d'avoir au moins 2 Go de mémoire libre sur votre ordinateur

La procédure d'installation est décrite dans le README principal.

Analyseur MRT

Cet exemple est compatible avec mabo et bgpreader.

Détecter les détournements

python detect_hijacks.py -c rrc01 -i mabo \
    --rpki-roa-file roa.csv \
    --irr-ro-file routes.csv \
    --irr-mnt-file maintainers.csv \
    --irr-org-file organisations.csv \
    ../../{bview,updates}.*.gz

Ce script d'exemple affiche les événements anormaux détectés par le module tabi. De plus, il tente de filtrer les conflits qui sont très probablement légitimes à l'aide des méthodes suivantes :

  1. l'annonce en conflit est couverte par une ROA
  2. l'annonce en conflit est couverte par un objet route
  3. il existe une relation administrative entre les deux AS en conflit
  4. le AS_PATH du détourneur contient l'ASN de l'AS détourné

Ces heuristiques sont documentées dans le module tabi.annotate.

Interpréter les résultats

Exemple de mise à jour

Dans cet exemple, l'annonce qui met à jour la route de 2403:8600:ea89::/48 provenant de l'AS55441 entraîne probablement la redirection du trafic qui était initialement destiné à l'AS131317. C'est suspect car il existe des objets route et des ROA valides pour la route d'origine, mais pas pour la dernière mise à jour de route.

{
   "timestamp" : 1451609472,
   "collector" : "rrc01",
   "peer_ip" : "2001:7f8:4::7992:1",
   "peer_as" : 31122,
   "announce" : {
      "prefix" : "2403:8600:ea89::/48",
      "asn" : 55441,
      "as_path" : "31122 6939 6453 4755 45820 55441",
      "type" : "U"
   },
   "conflict_with" : {
      "prefix" : "2403:8600:ea89::/48",
      "asn" : 131317,
      "valid" : [
         "apnic",
         "roa"
      ]
   },
   "type" : "ABNORMAL"
}
  • timestamp : moment où l'annonce a été reçue (horodatage UTC)
  • collector : quel collecteur BGP a reçu l'annonce
  • peer_ip & peer_as : quel pair BGP a reçu l'annonce
  • announce : informations sur l'annonce
    • type : U si l'annonce a été reçue d'une mise à jour BGP, ou F si elle provient d'une vue complète BGP
  • conflict_with : informations sur l'entrée RIB en conflit avec l'annonce
    • valid : objets route ou ROA sur le couple prefix & asn

Exemple de retrait

Dans cet exemple, l'annonce qui retire la route 23.192.176.0/20 de l'AS5570 entraîne probablement la redirection du trafic vers l'AS35889, lequel annonce une route vers le préfixe moins spécifique 23.192.0.0/11.

{
   "timestamp" : 1451609643,
   "collector" : "rrc01",
   "peer_ip" : "195.66.224.138",
   "peer_as" : 2914,
   "withdraw" : {
      "asn" : 55740,
      "prefix" : "23.192.176.0/20",
      "type" : "W"
   },
   "conflict_with" : {
      "prefix" : "23.192.0.0/11",
      "asn" : 35994
   },
   "type" : "ABNORMAL"
}
  • timestamp : moment où l'annonce a été reçue (horodatage UTC)
  • collector : quel collecteur BGP a reçu l'annonce
  • peer_ip & peer_as : quel pair BGP a reçu l'annonce
  • withdraw : informations sur le retrait
  • conflict_with : informations sur l'entrée RIB en conflit avec l'annonce

Catégories