RANCID

Magazine
Marque
GNU/Linux Magazine
Numéro
160
|
Mois de parution
mai 2013
|
Domaines


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


Sur le même sujet

WireGuard, le VPN simple et efficace

Magazine
Marque
Linux Pratique
Numéro
116
|
Mois de parution
novembre 2019
|
Domaines
Résumé

Les logiciels de sécurité peuvent être complexes à comprendre et lourds à mettre en œuvre. Cela peut nous freiner dans l’usage et le déploiement d'architectures sécurisées. Mais le logiciel WireGuard veut nous réconcilier avec les solutions de sécurité. Il a pour but de créer un accès VPN performant entre deux machines et ne propose que peu de choix de configuration. En effet, son développeur, Jason A. Donenfeld a pris le parti de n'implémenter qu'un jeu restreint de protocoles cryptographiques, tous à l'état de l'art, et de ne fournir à l'utilisateur qu'une simple interface réseau. Ces choix permettent de masquer beaucoup de la complexité sous-jacente du VPN derrière cette abstraction. Et en plus de cette simplicité de configuration, WireGuard affirme aussi apporter un haut niveau de performance. Je vous propose de vérifier ensemble si cette promesse est bien tenue !

Sondes de détection : performances, évaluations et biais

Magazine
Marque
MISC
Numéro
106
|
Mois de parution
novembre 2019
|
Domaines
Résumé

En avril 2019, l’ANSSI a qualifié les premières sondes pour assurer la supervision de sécurité de réseaux. Les opérateurs d’importance vitale (OIV), les opérateurs de services essentiels (OSE) et, d’une manière générale, les organismes opérant des fonctions sensibles disposent ainsi de produits français de confiance : Cybels Sensor de Thales et Trackwatch Full Edition de Gatewatcher.La méthodologie d’évaluation des sondes n’est, hélas, pas publique. Les ingénieurs sécurité et réseau devant intégrer ces sondes ne disposent donc pas de guides pour effectuer la recette de leur efficacité en production. Cet article propose un retour d’expérience sur l’évaluation des sondes, notamment sous l’angle de la performance. Cet aspect est, en effet, particulièrement significatif puisque le taux de détection d’une sonde diminue si elle est submergée, quand bien même elle serait équipée des meilleurs signatures et moteurs d’analyse.

Techniques de persistance Active Directory basées sur Kerberos

Magazine
Marque
MISC
HS n°
Numéro
20
|
Mois de parution
octobre 2019
|
Domaines
Résumé

Cet article étudie les techniques de persistance Kerberos permettant un maintien efficace et furtif dans un domaine Active Directory suite à une compromission. Les concepts et outils utilisés à des fins offensives seront présentés dans l’article, ainsi que des moyens de remédiation défensifs en cas de suspicion de compromission.

Introduction au dossier : Windows et Active Directory : attaques et contre-mesures

Magazine
Marque
MISC
HS n°
Numéro
20
|
Mois de parution
octobre 2019
|
Domaines
Résumé

Windows est un sujet vaste et la sécurité d’Active Directory est un domaine à part entière. Ces dernières années auront vu publier de nombreux travaux, naître et s’améliorer de nombreux outils, qu’il s’agisse de frameworks offensifs (pour de la post-exploitation avec le défunt empire ou PowerSploit par exemple) et défensifs : d’un côté en assistant l’audit (comme BloodHound) ou plus orientés sur le forensique (ADTimeline). Bref, le domaine est actif, la communauté grandissante, et l’intérêt toujours aussi fort.

Attaques sur le protocole Kerberos en environnement Active Directory

Magazine
Marque
MISC
HS n°
Numéro
20
|
Mois de parution
octobre 2019
|
Domaines
Résumé

Kerberos représente le service principal d’authentification dans un environnement Microsoft Active Directory. Cette solution étant largement déployée au sein des entreprises aujourd’hui, les attaques sur Kerberos sont devenues courantes et peuvent mener à la compromission totale des ressources d’un Système d’Information. Cet article a pour objectif de vous présenter différentes attaques portant sur ce protocole ainsi que quelques contre-mesures.