Home / Système & Réseaux / Update : Sauvegarder la configuration d’un firewall Fortigate avec Expect.

Update : Sauvegarder la configuration d’un firewall Fortigate avec Expect.

Dans ce tutoriel, nous allons utiliser un script avec expect pour automatiser la sauvegarde de la configuration de notre firewall Fortigate vers un serveur TFTP. En route!

Avant de commencer voici une petite présentation : Fortinet est une entreprise américaine qui construit du matériel de télécommunications. Elle est spécialisée dans les solutions de sécurité pour les réseaux et les ordinateurs.

Fortinet dispose de 8 certifications ICSA (Parefeux, Antivirus, Antispam, IDS/IPS, Filtrage URL,Vpn SSL, Vpn IPSEC), Certification FIPS-2, 100% virus Bulletin. Elle est le seul acteur de la sécurité à en disposer autant. Elle maitrise l’ensemble des technologies proposées matérielles et logicielles.

  • FortiGate : est une gamme de boitiers de sécurité UTM (appliance sécurité tout en un) comprenant les fonctionnalités firewall, Antivirus, système de prévention d’intrusion (IPS), VPN (IPSec et SSL), filtrage Web, Antispam et d’autres fonctionnalités: QoS, virtualisation, compression de données, routage, policy routing …etc. Les récents modèles comportent des ports accélerés par ASIC qui permettent d’optimiser le trafic au niveau des ports. Les boitiers de cette gamme sont isofonctionnels s’adaptant à chaque besoin depuis la TPE avec la famille des FG50 jusqu’à l’opérateur avec le FG5000, en passant par les FG110C, FG310B, FG620B pour les moyennes et grosses entreprises.
  • FortiMail : est une gamme de boitiers de sécurisation de la messagerie électronique. Ce boitier assure la protection de la messagerie avec les techniques Antivirus et Antispam les plus pointues (21 techniques antispam), tagging, gray-listing, mise en quarantaine et suppression de spams et leurs attachements …etc. Le boitier Fortimail peut se mettre en mode serveur pour jouer en même temps le rôle de serveur de messagerie et d’outil de protection (voir aussi une analyse du produit par le cabinet The Tolly Group[6]).
  • FortiAnalyzer : est un boitier qui permet de centraliser les journaux des équipements Fortinet (FortiGate, FortiMail, FortiManager et FortiClient), de procéder à des analyses et de générer des reportings sur l’activité réseaux et sécurité.
  • FortiManager : est une gamme de boitiers qui permettent la supervision et l’administration centralisée des équipements Fortinet (FortiGate, FortiAnalyzer et FortiClient). FortiManager facilite grandement le travail des administrateurs en procédant à des mises à jour en masse : configuration, migration de firmware, mise à jour de signatures, changement de règles de sécurité …etc.
  • FortiClient: est un client VPN IPSec pour PC windows et smartphone et protège ces équipements contre les virus, les intrusions, les spams, les spywares. En outre, il intègre un Firewall et un système de filtrage URL.
  • FortiDB: est une gamme de produits spécialisés dans la supervision et l’audit sécurité des bases de données. Les produits de cette gamme permettent de renforcer la sécurité des bases de données et leur conformité aux différents politiques de sécurité internes ainsi qu’aux standards internationaux : PCI-DSS, SOX, GLBA, HIPAA[7]. FortiDB est dotée de centaines de politiques qui permettent d’automatiser la détection de vulnérabilités et de couvrir la conformité par rapport aux différents standards.
  • FortiWeb: est une nouvelle gamme annoncée en Fevrier 2009. Le premier produit de cette gamme le FortiWeb 1000B se présente comme un boitier de sécurité spécialisé pour les applications Web et XML. Ce boitier offre le partage de charge (load-balancing) entre plusieurs serveurs ainsi que l’accélération du flux vers ces mêmes serveurs grâce à des processeurs spécialisés dans le chiffrement et le déchiffrement des flux XML et SSL. Ce boitier représente le premier firewall applicatif de la société Fortinet.

Maintenant que les présentations sont faites, vous aurez besoin d’un :

  • Serveur TFTP (vous pouvez consulter un tutoriel ici)
  • utiliser Expect (vous pouvez consulter un tutoriel ici)

Ce tutoriel est réalisé sur une machine Linux avec Ubuntu. Ce script fonctionne sous un environnement Linux et utilise expect.

Voici le script de backup :

[perl]#!/usr/bin/expect -f
set timeout 60
spawn ssh admin@adresse_ip_fortigate
sleep 5
expect {
"password:" {send "mot_de_passen"}
}
sleep 5
send "execute backup full-config tftp conf_fortigate_r378.cfg 1.10.8.37n"
sleep 10
send "exitn"
interact[/perl]

La commande nécessaire pour la sauvegarde du fortigate est :

execute backup full-config tftp nom_du_fichier_sauvegarde adresse_ip_serveur_tftp

La commande set timeout 60, initilaise un compteur, si au bout de 60 secondes rien ne se passe, le script est arrêté. Cette commande évite de laisser tourner le script en cas d’erreur.

La commande sleep permet d’attendre entre chaque saisie pour éviter de remplir le buffer de la machine et reproduire la saisie humaine.

Comme vous pouvez le voir dans la copie d’ecran ci-dessus, la configuration est bien copiée sur le serveur TFTP, sans intervention humaine. Attention au niveau sécurité, le mot de passe pour se conencter à l’équipement est affiché en clair dans le script.

Pour que le script se connecte directement à l’équipement, il est nécessaire de se connecter au moins une fois sur celui-ci avec la commande suivante, pour générer les clés :

linux# ssh admin@adresse_ip_fortigate

Sinon vous aurez ce message et le script sera bloqué :

Une fois la connexion réalisé au moins une fois, plus de souci les clés sont enregistrées sur votre machine à condition de répondre yes à la question.

Un autre problème se pose. Lorsque vous relancez le script et si il existe déjà une sauvegarde de la configuration le script génère une erreur Error code 2: Access violation.

Il faut supprimer la dernière configuration avant de procéder à la nouvelle sauvegarde, seulement avec EXPECT s’est impossible.

Tout problème à sa solution, nous allons donc modifier notre script de départ en intégrant une commande BASH, afin de supprimer la dernière sauvegarde.

Voici le script :

[bash] #!/bin/bash
rm /tftpboot/conf_fortigate_r378.cfg

VAR=$(expect -c "
spawn ssh admin@192.168.120.4
sleep 5
expect {
"password:" {send "mot_de_passen"}
}
sleep 5
send "execute backup full-config tftp conf_fortigate_r378.cfg 1.10.8.37n"
sleep 10
send "exitn"
interact
")
echo "==============="
echo "$VAR"
[/bash]

Tout d’abord il est imperatif de modifier le shebang et mettre #!/bin/bash .

Ensuite nous reprenons notre script EXPECT que nous encapsulons dans une variable, ici VAR. Il faut rajouter expect -c pour exécuter le script EXPECT dans un script BASH. Puis très important (sinon votre script ne fonctionnera pas) pour les commandes expect et send il faut rajouter un avant et après  le contenu de la commande.

Avant :

 

send execute backup full-config tftp conf_fortigate_r378.cfg 1.10.8.37n

Après :

send execute backup full-config tftp conf_fortigate_r378.cfg 1.10.8.37n

Avec ce dernier script aucun problème, la dernière sauvegarde sera supprimée avant l’exécution du script.

Vous pouvez télécharger les 2 scripts dans une archive zip ci-en cliquant ici.

Bien entendu vous pouvez modifier ces scripts comme bon vous semble, notamment pour les plus expérimentés d’entre vous, il faudrait implémenter la possibilité de sauvegarder plusieurs fortigate.

Si vous modifier le script merci de me le joindre au format zip à partir du formulaire de contact ici pour que je le publie sur le blog.

That’s All.

  

1 potin

  1. Je vous remercie pour ce tutoriel

Laisser un commentaire

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

adipiscing mi, nec odio in et,