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!

Firewall Fortinet

Gamme Fortinet

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. Fortinet est un des rares acteur de la sécurité à en disposer d’autant. Il 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.
  • FortiProxy : face à des attaques toujours plus sophistiquées, les entreprises ont besoin d’une approche intégrée pour se protéger du trafic et des sites web malveillants, ainsi que des virus. FortiProxy, la passerelle de sécurité web de Fortinet, répond à cette problématique. Ce produit unifié protège contre les attaques web grâce à un filtrage des URL, une défense évoluée contre les menaces et une protection contre les malware. Protégez les utilisateurs finaux contre les menaces issues d’Internet et assurez votre conformité réglementaire.Une passerelle de sécurité web est un produit unique qui répond à différentes problématiques de sécurité. Une seule solution permet de se protéger contre les attaques web, grâce à un filtrage des URL, une défense évoluée contre les menaces et une protection contre les malware. Vous protégez ainsi vos utilisateurs contre les menaces web et assurez le respect de votre politique d’utilisation d’Internet.

Mise en place d’une sauvegarde avec Expect

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

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 :

#!/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

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, initialise 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.

Sauvegarder la configuration d'un firewall Fortigate

Comme vous pouvez le voir dans la copie d’écran 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 connecter à 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é :

résoudre un problème d'authentification SSH sur un firewall Fortigate

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.

résoudre un problème d'authentification SSH sur un firewall Fortigate

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

résoudre l'erreur Error code 2: Access violation lors de la sauvegarde d'un firewall Fortigate avec Expect

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 :

#!/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_passe"}
}
sleep 5
send "execute backup full-config tftp conf_fortigate_r378.cfg 1.10.8.37n"
sleep 10
send "exitn"
interact
")
echo "==============="
echo "$VAR"

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 sleep 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

Sauvegarder la configuration d'un firewall Fortigate avec Expect

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

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.

signature manuelle Guillaume

1 potin

  1. Je vous remercie pour ce tutoriel

Laisser un commentaire

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