Sauvegardez vos actifs réseaux HP, Cisco ou Juniper de manière automatisée avec RANCID

Magazine
Marque
GNU/Linux Magazine
Numéro
160
Mois de parution
mai 2013
Spécialité(s)


Résumé

RANCID (Really Awesome New Cisco confIg Differ) est un logiciel open source qui permet de faire des sauvegardes d’actifs réseau (HP ProCurve, Cisco, Juniper…) de manière automatisée et surtout, il gère le versioning grâce à CVS. Cela permet de suivre l’évolution des configurations.


Body

En tant qu’administrateur, on cherche toujours à améliorer et à sécuriser les réseaux, mais malheureusement, la sauvegarde des actifs réseau n’est pas toujours une priorité, on fait une modification en urgence, on se dit qu’on fera la sauvegarde un peu plus tard... Mais le jour où on connaît une panne, il faudra bien refaire la configuration, avec une backup ce serait mieux et si elle est à jour ce serait parfait. D’où l’utilité de la mise en place d’un système de backup automatisé pour les actifs réseau. En cherchant sur Internet, je suis tombé sur RANCID (à cette adresse http://www.shrubbery.net/rancid/), j’ai tout de suite été séduit par l’ajout de CVS pour gérer les versions des configurations ; petit bonus : on peut configurer la partie mail pour être alerté des modifications sur les configurations. On peut aussi utiliser Subversion ; dans l’installation que je vais vous présenter, je resterai sur CVS.

1. Installation de RANCID

J’ai choisi Ubuntu 12.04 LTS pour héberger mes backups, donc toutes mes commandes seront orientées pour Ubuntu, mais il est possible d’installer RANCID sur d’autres distributions. L’installation se fera à partir des sources de RANCID, donc il faudra un compilateur, CVS et un utilisateur dédié pour RANCID. La version courante, au moment où j’écris ces lignes est la 2.3.8.

Prérequis :

sudo apt-get install build-essential

Installation de CVS :

sudo apt-get install cvs cvsweb expect

Création de l’utilisateur rancid :

sudo adduser rancid --home /home/rancid

Récupération des sources :

wget ftp://ftp.shrubbery.net/pub/rancid/rancid-2.3.8.tar.gz

Décompression :

tar xvzf rancid-2.3.8.tar.gz

Compilation :

cd rancid-2.3.8/

sudo ./configure --prefix=/home/rancid

sudo make install

sudo chown rancid:rancid /home/rancid -R

À ce stade, l’installation de RANCID et des prérequis est finie.

2. Configuration de RANCID

Pour commencer, il faut configurer le ou les groupe(s) de switch, cette partie servira à regrouper les switchs dans l’interface web de CVS. Vous pouvez par exemple les regrouper par site géographique, ou marque… Pour simplifier, je vais créer un seul groupe que j’appellerai MES_SWITCHS. Si vous souhaitez ajouter plusieurs groupes, il suffit de les séparer par des espaces.

2.1 rancid.conf

Il faut éditer le fichier rancid.conf pour ajouter la directive ci-dessous et modifier la variable PATH pour ajouter /usr/sbin :

su rancid

nano /home/rancid/etc/rancid.conf

LIST_OF_GROUPS="MES_SWITCHS"

PATH=/home/rancid/bin:/usr/bin:.:/bin:/usr/local/bin:/usr/sbin:/usr/bin; export PATH

Une fois les groupes créés, il faut exécuter la commande :

/home/rancid/bin/rancid-cvs

Elle permet de créer les répertoires CVS ainsi que le fichier router.db dans chaque répertoire CVS. Ce fichier permet de stocker les noms DNS ou IP des switchs. Un répertoire pour chaque groupe sera créé.

2.2 router.db

Voici un petit tableau qui sera utile pour la configuration du fichierrouter.db.

 

Device

Description

alteon

An Alteon WebOS switches.

baynet

A Bay Networks router.

cat5

A Cisco catalyst series 5000 and 4000 switches (i.e.: running the catalyst OS, not IOS).

cisco

A Cisco router, PIX, or switch such as the 3500XL or 6000 running IOS (or IOS-like) OS.

css

A Cisco content services switch.

enterasys

An enterasys NAS. This is currently an alias for the riverstone device type.

erx

A Juniper E-series edge router.

Extreme

An Extreme switch.

ezt3

An ADC-Kentrox EZ-T3 mux.

force10

A Force10 router.

foundry

A Foundry router, switch, or router-switch. This includes HP Procurve switches that are OEMs of Foundry products, such as the HP9304M.

hitachi

A Hitachi routers.

hp

A HP Procurve switch such as the 2524 or 4108 procurve switches. Also see the foundry type.

mrtd

A host running the (merit) MRTd daemon.

netscalar

A Netscalar load balancer.

netscreen

A Netscreen firewall.

redback

A Redback router, NAS, etc.

tnt

A lucent TNT.

zebra

Zebra routing software.

riverstone

A Riverstone NAS or Cabletron (starting with version ~9.0.3) router.

juniper

A Juniper router.

Nous allons maintenant pouvoir configurer le fichier router.db ; dans notre cas, il y a qu’un seul fichier router.db, car nous n’avons qu’un seul groupe.

nano /home/rancid/var/CVS/MES_SWITCHS/router.db

Pour configurer ce fichier, nous allons nous baser sur le tableau suivant :

 

Nom DNS

IP

Protocole

Nom d’utilisateur

Mot de passe

sw1.domain.local

10.10.10.1

telnet

Administrator

Toto

sw2.domain.local

10.10.10.2

telnet

Administrator

Toto

sw3.domain.local

10.10.10.3

telnet

Administrator

Toto

sw4.domain2.local

10.10.10.4

ssh

admin

Tata

sw5.domain2.local

10.10.10.5

ssh

admin

Tata

Il regroupe les noms, IP, types d’authentification et identifiants de connexion.

Le fichier se compose comme suit :

Nom ou ip:marque:statut (10.10.10.1:hp:up, ou aussi sw.toto.local:cisco:down)

Nous aurons donc dans le fichier les lignes suivantes :

sw1.domain.local:hp:up

sw2.domain.local:hp:up

sw3.domain.local:hp:up

sw4.domain2.local:hp:up

sw5.domain2.local:hp:up

Le statut (dernier paramètre) permet de signifier à RANCID qu’il faudra ignorer cet équipement.

2.3 .cloginrc

Ensuite, il faut configurer les identifiants et la méthode de connexion aux équipements réseau. C’est là que cela peut se compliquer, selon les marques et même les modèles, les identifiants peuvent être différents, certains utilisent « admin » en login, d’autres « Administrator ». Pareil pour le enable (#) : sur certains switchs, on est tout de suite en enable (autoenable), sur d’autres, il faut taper la commande enable et saisir un mot de passe.

RANCID est capable de faire beaucoup de choses au niveau de la connexion, par exemple, on peut lui spécifier que le prompt pour la connexion utilisateur n’est pas « user : », mais « utilisateur : ».

Le fichier .cloginrc, qui permet de gérer les paramètres de connexion, est bien commenté et très explicite. Il faut savoir aussi que le fichier va être lu de haut en bas, donc il vaut mieux mettre les switchs où il y aura des paramètres spécifiques (mots de passe différents…) en premiers et mettre les switchs « génériques » à la fin. Pour avoir une configuration plus claire, je vous recommande de créer des alias (Host A) DNS pour vos switchs. Cela permet de créer un masque *.domain.local si tous les actifs ont le même mot de passe, sinon on a aussi la possibilité de renseigner des adresses IP.

Je vous ai fait un petit résumé des directives les plus intéressantes :

add password <ip ou nomdns ou *> <mot de passe> <mot de passe enable>

permet d’ajouter un mot de passe en fonction de l’IP ou du nom DNS ; on peut utiliser le caractère générique * pour faire *.domain.local ou 10.10.*, à cela il faut ajouter le mot de passe pour accéder à l’équipement et en option le mot de passe pour passer en enable.

add user <ip ou nomdns ou *> <nom d’utilisateur>

permet d’ajouter un nom d’utilisateur ; on peut comme au-dessus filtrer selon l’IP ou le nom DNS.

add userprompt <ip ou nomdns ou *> <prompt>

permet de spécifier un nouveau prompt pour le nom d’utilisateur. Par défaut : {"(Username|login|user name):"}

add passprompt <ip ou nomdns ou *> <prompt>

permet de spécifier un nouveau prompt pour le mot de passe. Par défaut : {"(\[Pp]assword|passwd):"}

add method <ip ou nomdns ou *> {telnet} {ssh} {rsh}

permet de spécifier les types de connexion et l’ordre.

add noenable <ip ou nomdns ou *> <0 ou 1>

permet de préciser si le routeur accepte le enable.

add autoenable <ip ou nomdns ou *> <0 ou 1>

permet de spécifier si on est directement en enable après la connexion.

Vous pourrez trouver plus de renseignements et des fichiers d’exemple dans le dossier /home/rancid/share.

Nous allons configurer le fichier .cloginrc pour notre exemple (le tableau vu précédemment).

nano /home/rancid/.cloginrc

# tous mes switchs sont autoenable, sinon vous pouvez spécifier l’adresse IP

add autoenable * 1

# configuration pour les switchs domain

add method *.domain.local telnet

add user *.domain.local Administrator

add password *.domain.local Toto

#configuration pour les switchs domain2

add method *.domain2.local ssh

add user *.domain2.local admin

add password *.domain2.local Tata

Le fichier va être lu de haut en bas, il faut donc veiller à respecter l’ordre qui est du plus précis au plus générique. Par exemple :

add user sw1.domain.local admin

add user sw*.domain.local administrateur

add user *.domain.local administrator

Du coup, si c’est le sw1, il prendra le user « admin », si le switch correspond à sw*.domain.local, il prendra « administrateur » et si c’est le dernier cas, il prendra « administrator ».

Une fois le fichier .cloginrc complété, il faut le sécuriser :

chmod 600 /home/rancid/.cloginrc

chown rancid:rancid /home/rancid/.cloginrc

Vous pouvez lancer la commande suivante :

/home/rancid/bin/rancid-run

Cette commande va créer la première version des backups. Vous pourrez aussi surveiller le fichier /home/rancid/var/logs/MES_SWITCHS.date.heure. Ce fichier pourra vous informer si RANCID n’a pas réussi à se connecter à un équipement ; du coup, il faudra modifier le fichier .cloginrc en conséquence.

2.4 Configuration de CVS

Il faut ensuite configurer CVS. Pour cela, il faut éditer le fichier /etc/cvsweb/cvsweb.conf et modifier la partie @CVSrepositories.

sudo nano /etc/cvsweb/cvsweb.conf

@CVSrepositories = (

'local' => ['Local Repository', '/var/lib/cvs'],

'MES_SWITCHS' => ['MES_SWITCHS', '/home/rancid/var/CVS'],

);

Il faut aussi faire un lien symbolique pour que les icônes et la feuille de styles fonctionnent correctement :

sudo ln -s /usr/share/cvsweb/ /var/www/cvsweb

Vous pouvez voir le résultat à l’adresse http://votreip/cgi-bin/cvsweb/MES_SWITCHS/configs/.

2.5 Planification

Maintenant, il ne nous reste plus qu’à planifier l’exécution automatique des backups, ainsi que le nettoyage des logs. Pour cela, il faut ajouter les tâches dans le crontab de l’utilisateur rancid :

su rancid

crontab –e

10 23 * * * /home/rancid/bin/rancid-run

30 23 * * * /usr/bin/find /home/rancid/var/logs -type f -mtime +7 -exec rm {} \;

La première entrée exécutera RANCID tous les jours à 23h10 et la deuxième recherchera les logs de plus de 7 jours et les supprimera.

2.6 Envoi de mail

Vous avez la possibilité d’être alerté par mail si RANCID trouve une modification dans une configuration. Pour cela, on va ajouter Sendmail comme MTA :

sudo apt-get install sendmail

Maintenant, il faut configurer les alias :

nano /etc/aliases

Et ajouter les alias de mails sous cette forme :

rancid-NOMGROUPE: adressemail

rancid-admin-NOMGROUPE: adressemail

La première adresse recevra les rapports avec les changements et la deuxième (rancid-admin) recevra les erreurs. Ce qui donne dans notre cas :

rancid-MES_SWITCHS: toto@domain.com

rancid-admin-MES_SWITCHS: toto@domain.com

Puis, il faut lancer la commande newaliases pour que tout soit pris en compte :

sudo newaliases

Et voilà, tous les soirs vous serez prévenu des changements dans la configuration, mais aussi si un module du switch a été enlevé.

3. Astuces

Vous pouvez trouver de l’aide grâce aux fichiers man ; pour les consulter, il faut exécuter la commande suivante :

man -M /home/rancid/share/man/ clogin

RANCID ne s’arrête pas là, il permet aussi d’exécuter des commandes sur les équipements. Vous pouvez donc faire un show version, voire ajouter un nouveau VLAN sur plusieurs switchs. Il existe différentes commandes selon les modèles, hlogin pour le matériel HP, clogin pour Cisco ; elles se trouvent toutes dans le dossier /home/rancid/bin/.

Voici un premier exemple, faire un show version sur un équipement HP ProCurve :

/home/rancid/bin/hlogin -c "sh ver" -f /home/rancid/.cloginrc sw1.domain.local > test.txt

Le résultat sera stocké dans le fichier test.txt. Vous pouvez exécuter la commande sur plusieurs switchs en les ajoutant les uns à la suite des autres, comme ci-dessous :

/home/rancid/bin/hlogin -c "sh ver" -f /home/rancid/.cloginrc sw1 sw2 sw…. > test.txt

Pour le deuxième exemple, je vais ajouter un VLAN supplémentaire sur 2 switchs :

/home/rancid/bin/hlogin -c "conf t;vlan 666;name test;exit;exit;wr mem" -f /home/rancid/.cloginrc sw1 sw2 sw3

Conclusion

Voilà, vous avez pu voir au cours de cet article, l’installation, la configuration des différents fichiers, ainsi que quelques astuces concernant RANCID. Maintenant, il n’y aura plus d’excuse pour l’oubli des backups des équipements réseau ! Et cela vous permettra de suivre l’évolution de vos configurations. De plus, vous aurez la possibilité de déployer des ajouts dans la configuration de plusieurs équipements, sans avoir à passer sur chacun.

Bibliographie

http://www.shrubbery.net/rancid/

http://www.it-wars.com/article298/cisco-backup-avec-rancid

http://evilrouters.net/2010/05/31/installing-rancid-on-ubuntu-10-04-lts/

http://www.debian-administration.org/articles/429

 



Article rédigé par

Les derniers articles Premiums

Les derniers articles Premium

PostgreSQL au centre de votre SI avec PostgREST

Magazine
Marque
Contenu Premium
Spécialité(s)
Résumé

Dans un système d’information, il devient de plus en plus important d’avoir la possibilité d’échanger des données entre applications. Ce passage au stade de l’interopérabilité est généralement confié à des services web autorisant la mise en œuvre d’un couplage faible entre composants. C’est justement ce que permet de faire PostgREST pour les bases de données PostgreSQL.

La place de l’Intelligence Artificielle dans les entreprises

Magazine
Marque
Contenu Premium
Spécialité(s)
Résumé

L’intelligence artificielle est en train de redéfinir le paysage professionnel. De l’automatisation des tâches répétitives à la cybersécurité, en passant par l’analyse des données, l’IA s’immisce dans tous les aspects de l’entreprise moderne. Toutefois, cette révolution technologique soulève des questions éthiques et sociétales, notamment sur l’avenir des emplois. Cet article se penche sur l’évolution de l’IA, ses applications variées, et les enjeux qu’elle engendre dans le monde du travail.

Petit guide d’outils open source pour le télétravail

Magazine
Marque
Contenu Premium
Spécialité(s)
Résumé

Ah le Covid ! Si en cette période de nombreux cas resurgissent, ce n’est rien comparé aux vagues que nous avons connues en 2020 et 2021. Ce fléau a contraint une large partie de la population à faire ce que tout le monde connaît sous le nom de télétravail. Nous avons dû changer nos habitudes et avons dû apprendre à utiliser de nombreux outils collaboratifs, de visioconférence, etc., dont tout le monde n’était pas habitué. Dans cet article, nous passons en revue quelques outils open source utiles pour le travail à la maison. En effet, pour les adeptes du costume en haut et du pyjama en bas, la communauté open source s’est démenée pour proposer des alternatives aux outils propriétaires et payants.

Sécurisez vos applications web : comment Symfony vous protège des menaces courantes

Magazine
Marque
Contenu Premium
Spécialité(s)
Résumé

Les frameworks tels que Symfony ont bouleversé le développement web en apportant une structure solide et des outils performants. Malgré ces qualités, nous pouvons découvrir d’innombrables vulnérabilités. Cet article met le doigt sur les failles de sécurité les plus fréquentes qui affectent même les environnements les plus robustes. De l’injection de requêtes à distance à l’exécution de scripts malveillants, découvrez comment ces failles peuvent mettre en péril vos applications et, surtout, comment vous en prémunir.

Les listes de lecture

9 article(s) - ajoutée le 01/07/2020
Vous désirez apprendre le langage Python, mais ne savez pas trop par où commencer ? Cette liste de lecture vous permettra de faire vos premiers pas en découvrant l'écosystème de Python et en écrivant de petits scripts.
11 article(s) - ajoutée le 01/07/2020
La base de tout programme effectuant une tâche un tant soit peu complexe est un algorithme, une méthode permettant de manipuler des données pour obtenir un résultat attendu. Dans cette liste, vous pourrez découvrir quelques spécimens d'algorithmes.
10 article(s) - ajoutée le 01/07/2020
À quoi bon se targuer de posséder des pétaoctets de données si l'on est incapable d'analyser ces dernières ? Cette liste vous aidera à "faire parler" vos données.
Voir les 125 listes de lecture

Abonnez-vous maintenant

et profitez de tous les contenus en illimité

Je découvre les offres

Déjà abonné ? Connectez-vous