Sauvegarde et Versionning automatique des confs Cisco avec Rancid

Je discutais dernièrement avec Pascal_1, un fidèle lecteur du blog (merci 😀 ) , et utilisateur d’un Cisco Pix (donc quelqu’un de bien 🙂 ).

Donc ce petit billet lui est spécialement dédicacé mais je ne doute pas qu’ils servent à d’autres 😀 .

 

Précédemment, je vous avais expliqué comment mettre en oeuvre une authentification centralisée via Tacacs+ sur vos Ciscos.

Nous allons nous servir de cette fonctionnalité pour sauvegarder automatiquement nos configurations et bien entendu, mettre en place un versionning CVS nous permettant de comparer les modifications apportés et pouvoir faire un retour arrière en cas de soucis.

 

Je partirais d’un serveur sous Gnu/Linux Debian qui servira de centralisateur des confs.

Les paquets à installer :

#apt-get install apache2 

#apt-get install expect

#apt-get install cvs

#apt-get install cvsweb

 

Création d’un user « rancid » pour l’application :

 

 #useradd -d /opt/rancid rancid

(j’installe mes programmes compilés toujours sous /opt mais je vous laisse libre de votre choix 🙂 )

 

On récupère l’excellentissime logiciel RANCID :

ftp://ftp.shrubbery.net/pub/rancid/rancid-2.3.1.tar.gz

 

#tar xvfz rancid-2.3.1.tar.gz

Maintenant, nous pouvons compiler et installer Rancid :

#cd /usr/local/src/rancid-2.3.1#./configure --prefix=/opt/rancid 

#checkinstall

 

Ceci va installer Rancid dans le dossier /opt/rancid. Si vous n’avez pas la commande checkinstall sur votre système ou si vous désirez des informations sur cet outil, un article ICI.

 

Maintenant, nous pouvons débuter le paramétrage de Rancid. Nous allons configurer le fichier /opt/rancid/etc/rancid.conf pour créer des groupes d’équipements. Au moins un groupe doit être configuré.

L’ajout des lignes ci-dessous crée un groupe appelé « Mes_confs_a_moi » où tous les configurations des équipements sont stockées:

LIST_OF_GROUPS= »Mes_confs_a_moi »

Il peut être utile de créer plusieurs groupes si vous avez une grand nombre d’équipements et vous voulez les séparer par localisation géographique par exemple, pour améliorer la lisibilité.

LIST_OF_GROUPS= »Brest Toulon Trifouilly-les-oies »

Les noms de groupe doivent être séparés par un espace.

Il est nécessaire de configurer un fichier appelé “.cloginrc” contenant les mot de passe nécessaire à accéder aux composants réseaux.

Pour le créer, il faut renommer le fichier “cloginrc.sample” en “.cloginrc”.

#cp /opt/rancid/share/rancid/cloginrc.sample /opt/rancid/.cloginrc

Ensuite, nous éditons le nouveau fichier “.cloginrc” où on peut trouver des exemples de syntaxe basées sur le type d’équipement (Cisco, Juniper, etc…) et de connexion (telnet, ssh, …)

Dans notre exemple, nous allons utiliser ssh pour accéder à un switch Cisco ayant une adresse IP de 10.156.1.1 (et donc la connexion est controlé par notre serveur Tacacs+)

Ouvrez /opt/rancid/.cloginrc :

add user 10.156.1.1 lulu (l’utilisateur lulu, opérateur que j’avais crée dans mon tac_plus.conf)

add password 10.156.1.1 motdepasse_de_lulu motdepasse_mode_enable

 

Ajouter un # au début de chaque ligne à l’exception bien entendu des lignes qui paramètrent vos connexions.

Soyez EXTRÊMEMENT attentif avec les permissions du fichier .cloginrc parce que les mots de passe inclus dans ce fichier ne sont pas encryptés.

Donc le seul moyen de protéger ces mots de passe critiques est de restreindre les droits d’accès au fichier.

Pour le faire, changez les droits d’accès à 600, ce qui veut dire que le propriétaire du fichier a les permissions lecture et écriture tandis que les autres utilisateurs n’ont aucune permission du tout.

Puis, la propriété du dossier /opt/rancid ainsi que tous les fichiers et dossiers qu’il inclus est transféré à l’utilisateur rancid.

   #chmod 600 /opt/rancid/.cloginrc

   #chown -R rancid:rancid /opt/rancid

   #chmod 770 /opt/rancid

 

Création de l’architecture CVS :

Connectez-vous en temps que rancid:

   #su rancid

   rancid@linux#/opt/rancid/bin/rancid-cvs

Ajouter des équipements aux groupes:

   /opt/rancid/var/rancid/"group_name"/router.db
   La syntaxe est la suivante:
   "ip_address or FQDN":"device_type":"status"
   10.156.1.1:cisco:up

   nom_dns:cisco:up

Un script permet de vérifier les paramétrages de connexion qui sont présents dans le fichier .cloginrc:

rancid@linux:~/bin$ /opt/rancid/bin/clogin 10.156.1.1

10.156.1.1 spawn telnet 10.156.1.1 Trying 10.156.1.1… Connected to 10.156.1.1. Escape character is ‘^]’.

User Access Verification

Password: Router>enable Password: Router#

Démarrez rancid:

rancid@linux$/opt/rancid/bin/rancid-run

Vous pouvez vérifier les journaux (logs) dans le répertoire /opt/rancid/var/rancid/logs/ .

Nous devons maintenant installer la plate-forme pour voir les configurations avec un navigateur web.

CVSWEB

Nous devons ajouter une ligne dans le fichier /etc/cvsweb/cvsweb.conf avec l’utilisateur root pour créer le nouveau dépôt (repository) CVS.

Rechercher la ligne commençant par “@CVSrepositories” et ajouter la ligne en gras ci-dessous:

   @CVSrepositories = (

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

      'rancid' => ['rancid', '/opt/rancid/var/CVS/'],

   #'freeebsd' => ['FreeBSD', '/var/ncvs'],

   #'openbsd' => ['OpenBSD', '/var/ncvs'],

   #'netbsd' => ['NetBSD', '/var/ncvs'],

   #'ruby' => ['Ruby', '/var/anoncvs/ruby'],

   );

Si le dossier contenant les icônes csvweb et les fichiers css sont pas dans le dossier /var/www, il est nécessaire d’ajouter un lien symbolique:

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

Nous pouvons tester l’interface cvsweb avec un navigateur internet :

   http://127.0.0.1/cgi-bin/cvsweb

Optionnellement, vous pouvez configurer Rancid pour vous envoyer un mail quand une configuration a été changée après le lancement du script rancid-run.

L’outil Rancid est paramètré pour envoyer des courriels à deux destinataires par groupe.

   rancid-"nom_du_groupe"

   rancid-admin-"nom_du_groupe"

Le premier destinataire ci-dessus va recevoir un rapport après un changement de configuration, le deuxième est envoyé quand il y a des messsages d’erreur.

Pour rappel le ou les groupes sont configurés dans le fichier /opt/rancid/etc/rancid.conf.

Par exemple, si vous avez un groupe appelé Mes_confs_a_moi, les mails seront envoyés aux adresses rancid-Mes_confs_a_moi et rancid-admin-Mes_confs_a_moi.

La dernière chose à faire est de créer des aliases pour vos destinataires. Ouvrez le fichier /etc/aliases:

   rancid-mes_confs_a_moi
   votre_email@chezvous.com

   rancid-admin-mes_confs_a_moi
   votre_email@chezvous.com

Nous avons utilisés ici notre groupe exemple appelé Mes_confs_a_moi.

Pour terminer, initialiser la base de données d’alias:

   #newaliases

Nous avons besoin de créer un cron job pour lancer rancid-run régulièrement.

   crontab -e -u rancid
   # Veuillez, svp, lancer le script rancid-run tous les jours à 00:30

   30 00 * * * /opt/rancid/bin/rancid-run

La commande crontab va mettre à jour le fichier /var/spool/cron/crontabs/rancid.

La très utile commande “find” peut être ajoutée au crontab pour supprimer les anciens logs.

La commande suivante supprime les fichiers de plus de 30 jours dans le dossier /opt/rancid/var/logs/:

   # supprime les anciens logs tous les premiers jours de chaque mois à 00:15

   15 00 1 * * find /opt/rancid/var/logs -type f -mtime +30 -exec rm {} \;

Et voila, désormais vous retrouverez l’intégralité de vos configurations préférées avec un versionning vous permettant de réparer vos erreurs que heureusement, nous faisons tous :-p

SOURCE

Bon courage 🙂

 


 

Ce billet a été posté dans cisco et taggé , , , . Bookmark ce permalink.

Comments are closed.