Pages personnelles de Franck GILLET > Projet PERCEVALE > Sauvegarde
Pour assurer une continuité de service du réseau et une gestion dynamique des éléments réseau, il semble indispensable de conserver les configurations courantes des différents éléments. Une sauvegarde périodique des configurations permet de garder une trace des mises à jour. Cette page présente la mise en place d’un système automatique d’archivage pour mes configurations Cisco.
Le système est composé d’un serveur FTP qui récupère périodiquement en upload les configurations Cisco. Un script présent sur le serveur FTP est chargé de récupérer ces configurations et de les protéger. Cette tâche est planifiée par le biais de "crontab".
Tout d’abord, il faut configurer les équipements Cisco pour qu’ils puissent envoyer périodiquement sa configuration courante (« running-config ») sur le serveur FTP. Pour cela on utilise la commande "kron" pour planifier des commandes. Pour en savoir plus, une documentation complète est accessible, sur le site de Cisco, le guide "Command Scheduler".
Il faut préparer l’accès au serveur FTP.
Pour afficher les sorties debug sur le terminal courant, on utilise la commande "terminal monitor" et on spécifie le débogage sur le service FTP.
Ensuite, on met en place une tâche planifiée qui enverra la configuration au serveur FTP, tous les premiers du mois à 00:30.
Pour le service FTP, j’utilise "proftpd". Le fichier de configuration se trouve dans le répertoire /etc/proftpd.conf. Le répertoire "uploads" est accessible en écriture uniquement (sans possibilité d’écraser un fichier existant) depuis le réseau dédié à l’administration des éléments réseau.
On configure le lancement de proFTPd au démarrage de la machine et on lance proFTPd depuis la commande "service".
Pour des raisons obscures, le service FTP fonctionne mal lors de l’authentification alors que si on lance le démon directement par la commande "proftpd -n -d5", cela ne pose pas de problème. Pourtant le script lancé par "service" (/etc/init.d/proftpd) semble correct, ainsi que les droits d’accès à ce script… La solution que j’ai trouvée est de recréer un nouveau fichier proftpd et de copier le contenu du script.
Enfin, il faut configurer le firewall. La commande "system-config-firewall" permet de le désactiver rapidement pour les tests.
La configuration du firewall est conservée dans le fichier /etc/sysconfig/iptables. L’écriture de la nouvelle règle peut –être effectuée par la commande "system-config-firewall".
Enfin, tous les jours à 05:00 du matin (CEST), je lance mon script pour vérifier les configurations déposées en upload et tous les premiers du mois à 03:00 du matin, je fais une sauvegarde complète des configurations (envoyées automatiquement par tous les routeurs).
Pour être sûr d’avoir une bonne synchronisation entre les équipements Cisco et le serveur, on met à jour la date et l’heure du serveur via NTP. La commande "hwclock" permet régler l’horloge physique de la machine.
Le script "backup.sh" propose plusieurs paramètres. Le paramètre "install" permet d’installer rapidement les éléments nécessaires au fonctionnement du script. Le paramètre "start-new" permet de récupérer les configurations du dossier "uploads" et de les crypter. Le paramètre "start-all" effectue les mêmes actions que celles lancées par "start-new" après avoir vérifié que toutes les configurations sont présentes. Dans le cas contraire, un fichier de log donne les éléments manquants ou supplémentaires.
La fonction "read" permet de lire les dossiers de sauvegarde chiffrés. Elle crée un dossier temporaire pour permettre à l’administrateur de vérifier les configurations. Enfin la fonction "clean" permet de nettoyer les configurations non chiffrées ; elle efface le dossier temporaire.
Il est possible d’ajouter, dans le répertoire courant, un fichier de configuration "liste.conf" utilisé par la commande paramétrée par "start-all" pour lister les fichiers de configuration requis pour une sauvegarde complète.
Le fichier backup.sh est accessible ici. J’explique ici la protection utilisée par le script pour rendre confidentiel les configurations Cisco sauvegardées. L’outil de cryptographie utilisé est openSSL.
On génère une clé et un vecteur d’initialisation forts, à partir du fichier /dev/random. Les fichiers de configuration sont cryptés suivant un encodage AES-256-CBC. AES-256 est un algorithme de chiffrement par bloc symétrique dont la taille du bloc est de 128 bits et la longueur de clé est de 256 bits. Les blocs issus du message à coder sont traités suivant le mode CBC ("Cipher Block Chaining"). Dans ce mode, on applique sur chaque bloc un OU exclusif avec le chiffrement du bloc précédent avant qu’il soit lui-même chiffré.
La clé et le vecteur d’initialisation sont stockés dans un fichier chiffré par une clé publique RSA (stockée dans le fichier public.pem). Ainsi le seul moyen de lire les fichiers de configuration est de déchiffrer le fichier qui stocke la clé et le vecteur d’initialisation, associés à la sauvegarde. Pour cela, la clé privée est contenue dans le fichier private.pem et protégée par un mot de passe et l’algorithme AES-256 (la clé et le vecteur d’initialisation sont dérivés depuis le mot de passe que seul l’administrateur possède).
mis à jour le 20/07/2009