Sauvegarde des configurations de routeurs et firewalls CISCO ou Linux via TFTP

PREPARATION DES EQUIPEMENTS

1- Préparation du serveur de backup LINUX :

-Installer tftp-server :

yum -y install tftp-server
ou
apt-get -y install tftp-server

– Créer le dossier tftp :

mkdir /tftpboot
chmod 777 /tftpboot

– Configurer le serveur tftp pour accepter la création de fichiers dans sa racine tftpboot:

Pour cela, il faut ajouter l’option -c à la configuration de base.

Modifier le fichier /etc/xinetd.d/tftp comme ceci :


service tftp

disable = no
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -c -s /tftpboot
per_source = 11
cps = 100 2
flags = IPv4

– Démarrer le service tftpd

chkconfig tftp on

Ce service étant démarré par le démon xinetd, il faut l’activer lui-aussi.

chkconfig xinetd on
service xinetd restart

– Vérifier que le service est bien lancé.

lsof -i -n |grep tftp
xinetd 6756 root 5u IPv4 28022 UDP *:tftp

On voit bien que le service écoute sur le port 69 en UDP, nommé tftp dans le fichier /etc/services.

-Installation des outils snmp :

La sauvegarde des routeurs nécessitte des outils snmp, qu’il faut bien sûr installer. Pour cela, tapez la commande suivante :

yum -y install net-snmp-utils net-snmp

-Installation d’expect :

La commande expect sera utilisée afin de sauvegarder la configuration du PIX car je n’ai pas trouvé d’autre moyen d’effectuer la procédure de sauvegarde via tftp que je vais mentionner ci-dessous. Il faut en effet taper des commandes et des mots de passe que je n’ai pas pu automatiser sans expect.

On installe expect de la même manière que les autres outils :

yum -y install expect

– Echange des clefs SSH avec les serveurs Linux :

Vous pouvez faire ceci pour faciliter les connexions du serveur de backup avec les autres machines linux qu’il devra éventuellement sauvegarder.

Création de la clef sur la machine backup

Utilisez la commande ssh-keygen pour cela, mais n’entrez aucune « passphrase » pour ne pas être bloqué par ce mot de passe lors de la connexion avec l’hote distant.


[root@backup root]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
c5:af:b9:3f:06:12:0c:d9:fb:38:cc:e7:ab:32:61:0f root@backup
[root@backup root]#

Copie de la clef sur l’hote distant


scp /root/.ssh/id_rsa.pub root@xxx.xxx.xxx.xxx:/root/.ssh/authorized_keys

Exécuter cette commande vers chaque machine linux que devra sauver le serveur de backup.

2 – Préparation des routeurs ou des switches CISCO

La procédure que l’on va utiliser est la suivante.

On va exploiter la possibilité de copier la configuration de l’équipement vers un serveur tftp, comme si on éxécutait la commande « copy running-config tftp » à la console de l’équipement.

Cependant, pour demander à cet équipement d’éxécuter la commande tout seul comme un grand, on va utiliser snmp. Il nous faut donc créer un communauté snmp en lecture écriture sécurisée par acces-list.

– On se connecte à l’équipement via telnet ( en effet, il faut que vous ayez déja paramétré le switch ou le routeur un minimum pour pouvoir y accéder à distance ).

Passer en mode configuration par la commande « conf t ».

– configurer une access-list sur le routeur :

On crée une acces-list standard nommée 20 où on indique toutes les ips de nos machines d’admin et de notre serveur de backup.


access-list 20 permit xxx.xxx.xxx.xxx
access-list 20 permit xxx.xxx.xxx.xxx
access-list 20 permit xxx.xxx.xxx.xxx
access-list 20 deny any log

– on active la communauté nommée power :

snmp-server community power RW 20

Voila, l’équipement CISCO est prêt, on mémorise sa configuration pour ne pas la perdre au redémarrage.

Taper « exit » pour revenir en mode enable et mémoriser avec la commande « write mem ».

3 – Préparation du Firewall CISCO PIX

Avant de pouvoir passer à cette configuration, il faut que vous puissiez prendre la main dessus via ssh.

– Connectez vous via ssh sur le PIX en passez en mode enable.

Attention, utilisez la commande linux ssh -c des mon_login@adresse_ip_pix pour vous connecter, sinon le PIX va vous virer car il n’utilise pas le même protocole de cryptage que Linux par défaut.

– Passez en mode configuration avec la commande « conf t »

– Indiquez au PIX l’adresse ip de votre serveur de backup et le nom du fichier qu’il va créer sur ce dernier.

tftp-server xxx.xxx.xxx.xxx /pixfw_config

– Revenez en mode enable avec la commande « exit »

– Testez la connexion au serveur tftp en lançant la commande « write net »

Pour plus d’informations, voir l’article du site d’oracle sur le sujet

4 – Préparation du routeur firewall Linux

– Installer le client tftp sur la machine avec la commande « yum -y install tftp »

CREER LES SCRIPTS DE BACKUP

Vous pouvez, à votre convenance, créer plusieurs scripts ou un script unique.

La création de plusieurs scripts permet de pouvoir backuper une partie de votre installation ponctuellement assez aisément.

1- Script de sauvegarde d’un switch ou d’un routeur CISCO :

Créez un script avec les lignes suivantes :


#!/bin/bash

# Ici xxx.xxx.xxx.xxx represente l adresse ip de l equipement
# et yyy.yyy.yyy.yyy adresse ip du serveur tftp

# Cisco 7200
/bin/echo -n "Sauvegarde "
/usr/bin/snmpset -v 2c -c power xxx.xxx.xxx.xxx .1.3.6.1.4.1.9.2.1.55.yyy.yyy.yyy.yyy s C7200-$ma_date

# Catalyst 2924
#/bin/echo -n "Sauvegarde "
#/usr/bin/snmpset -v 2c -c power xxx.xxx.xxx.xxx .1.3.6.1.4.1.9.2.1.55.yyy.yyy.yyy.yyy s C2924-$ma_date

2- script de sauvegarde du firewall CISCO PIX

Pour éviter de rester bloquer avec autoexpect, vous devez vous connecter manuellement une première fois sur le PIX afin que ssh ajoute la clef du PIX dans son fichier known_host.

Utilisez donc la commande suivante :

ssh -c des mon_user@ip_de_mon_pix

Pour créer le script de sauvegarde, utilisez l’utilitaire autoexpect fourni avec le paquet expect installé plus haut comme suit :

autoexpect ssh -c des mon_user@ip_de_mon_pix

Les commandes que vous allez taper correspondent à ce que vous feriez intéractivement, c’est à dire, quelque chose comme ceci :

mon_mot_de_passe
en
mon_mot_de_passe_enable
write net
logout

autoexpect se ferme en vous créant un fichier script.exp dans le dossier où vous vous trouvez.

Renommez ce fichier à votre convenance :

mv script.exp backup_pix

Rendez-le exécutable :

chmod +x backup_pix

Sécurisez le un minimum car il contient vos mots de passe du PIX !! :

chmod o-rwx backup_pix

Vérifiez son fonctionnement en éxécutant le script directement :

rm -f /tftpboot/pix*
./backup_pix
ls /tftpboot

Vous devriez avoir un fichier pixfw_config dans ce dossier si tout s’est bien passé 🙂

Dans le script de sauvegarde complet, ajouter les lignes suivantes qui font appel au script expect qu’on vient de créer.


# -------------------------- PIX ----------------------
/chemin_du_script_expect/backup_pix
sleep 2
mv /tftpboot/pixfw-config /tftpboot/pixfw-config-`date +%d%m%Y`

3- Scripts de sauvegarde des règles du firewall Linux IPTABLES

Ce script est à créer sur le firewall lui-même afin d’éviter la connexion systématique à cet équipement.

#!/bin/bash
echo "put /etc/sysconfig/iptables iptables_fw-netfilter_`date +%x`" > /tmp/tempo.txt
echo "quit" >> /tmp/tempo.txt
/usr/bin/tftp xxx.xxx.xxx.xxx < /tmp/tempo.txt 1>/dev/null
/bin/rm -f /tmp/tempo.txt

xxx.xxx.xxx.xxx est bien entendu l’ip du serveur tftp.

On édite ensuite la crontab avec la commande « crontab -e » et on ajoute la ligne suivante :

0 2 * * * le_nom_du_script

Cette plannification va sauvegarder tous les jours à 2h00 la conf de netfilter sur le serveur tftp de backup.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.