Le savoir n'a guère d'intérêt s'il n'est pas partagé.

Il n'y a pas très longtemps, j'ai découvert cet outil écrit en Python par Intentionet, une boîte américaine qui développe également un superbe outil nommé Batfish Enterprise.

Mais à quoi ça peut bien me servir me direz-vous ? Eh bien, ne vous est-il jamais arrivé d'avoir eu besoin d'envoyer votre configuration à un tiers mais que vous ne souhaitiez pas qu'il accède à certaines informations de celle-ci. Eh bien c'est faisable de cacher certaines informations, en les remplaçant par d'autres, avec l'outil nommé netconan. 🤯

Avant toutes choses, vous devez bien évidemment avoir Python d'installé sur votre machine et son gestionnaire de dépendances (pip ✔️).

Dès que vous avez tout ce qu'il faut pour commencer, vous pouvez utiliser la commande suivante pour installer l'outil :

pip install netconan

Maintenant que l'outil est installé, on va pouvoir commencer à jouer ! 😬

⚠️ A noter tout de même avant toutes choses que les tests ont été réalisés avec une configuration Cisco.

Pour l'exemple, j'ai utilisé un pack CVD de configuration (de Cisco obviously).

Dans ce pack on retrouve le fichier nommé "i4-201i-IWAN-CFG_Sep2017_rs32-4451x-2-confg_BGP". Pour les tests je l'ai renommé en "original-cfg". J'ai d'ailleurs supprimé les autres configs, elles ne me servent à rien pour l'exemple.

Voici un premier exemple tout simple permettant d'anonymiser les mots de passes et bien plus :

netconan -i original-cfg -o anonymized-cfg --anonymize-passwords

Vous avez plusieurs options très pratique avec cet outil qui sont :

  • --anonymise-passwords qui comme son nom l'indique permet de cacher les mots de passe de la configuration par d'autres hashs. D'ailleurs cette option permet également de cacher les communautés SNMP 😜
  • --anonymize-ips permet de cacher les adresses IP (v4/v6).
  • --sensitive-words permet de cacher des mots sensibles comme le nom de la société, d'un client.
  • On peut également cacher/remplacer les numéros d'AS dans le cas d'une configuration pour du BGP avec l'option `--as-numbers

Voici un exemple un peu plus complexe :

netconan -i original-cfg -o anonymized-cfg \
    --sensitive-words customer1,customer2,my-company \
    --anonymize-passwords \
    --anonymize-ips

On peut aller encore plus loin ? Oui ! 🤯

La section features de la doc officielle de l'outil détail comment préserverune structure utilisable, eneffet, parfois, nous souhaitons juste diffuser une configuration à un collègue tout en empêchant que celle-ci soit compréhensible par une tierse personne qui l'aurait intercepté. 😅

Vous n'aurez plus d'excuses pour échanger des configuration de manière un peu plus sécurisée à présent ! 😎