[pfSense] Sauvegarder automatiquement son firewall avec un script
29/06/2021 - 5 commentaires
Dans cet article, nous présentons une solution pour sauvegarder automatiquement son pfSense avec un script shell.
Nous nous appuyons sur le script shell bm-backup-pfsense proposé par le site Blogmotion.
Principe de fonctionnement
Le script va se connecter sur l'interface web du pfSense à sauvegarder et va "naviguer" dans les menus afin de déclencher le téléchargement du fichier de configuration (config.xml).
L'intérêt de ce script est qu'il passe par l'interface web de pfSense pour effectuer la sauvegarde. Ainsi, il n'y a pas besoin d'activer un accès SSH sur le serveur pfSense que l'on souhaite sauvegarder et l'on peut créer un compte utilisateur avec les droits strictement nécessaires pour effectuer la sauvegarde.
D'une façon générale, nous recommandons de se méfier des scripts ou applications qui nécessitent un accès SSH "root" sur les firewall pfSense ; cela représente un risque trop important en terme de sécurité.
Le script bm-backup-pfsense fonctionne très bien sous pfSense 2.4.x, 2.5.x et 2.6.x.
Création d'un compte utilisateur
Pour commencer, nous allons créer un compte utilisateur dédié à la sauvegarde.
Se rendre dans le menu System > User Manager :
Depuis l'onglet "Users" (onglet par défaut), cliquer sur le bouton "+ Add".
Nous créons un nouvel utilisateur en précisant simplement un nom d'utilisateur (username) et un mot de passe (password). Les autres champs peuvent être laissés vides.
Exemple de résultat obtenu :
Création d'un utilisateur dédié pour la sauvegarde
Pour en savoir plus sur la gestion des utilisateurs sous pfSense, consultez notre article dédié : [pfSense] La gestion des utilisateurs.
Nous pouvons maintenant modifier cet utilisateur afin de lui assigner les bons droits d'accès.
Pour cela, cliquer sur l'icône en forme de crayon se situant sur la ligne de l'utilisateur que nous venons de créer :
Descendre au niveau de la rubrique "Effective Privileges" et cliquer sur le bouton "+ Add" :
Nous ajoutons le droit d'accès à la page de Sauvegarde / Restauration en sélectionnant la ligne "WebCfg - Diagnostics: Backup & Restore" :
Nous validons notre choix en cliquant sur le bouton "Save", puis nous sauvegardons la modification de l'utilisateur en cliquant de nouveau sur le bouton "Save".
Ainsi, notre utilisateur "sauvegarde-auto" peut se connecter sur l'interface web de pfSense mais n'aura accès qu'à la page Backup & Restore :
L'utilisateur sauvegarde-auto n'a accès qu'à une seule page de notre pfSense
Configuration du script
Le script bm-backup-pfsense doit pouvoir s'exécuter sur n'importe quelle distribution GNU/Linux ou serveur FreeBSD/pfSense.
Dans notre cas, nous exécuterons ce script depuis un serveur de sauvegarde Linux hébergé sur notre réseau local (LAN).
Nous téléchargerons le script pfmotion_curl.sh.
Il existe deux autres versions de bm-backup-pfsense : une version utilisant le programme wget et une version permettant de sauvegarder plusieurs pfSense (à condition que le nom d'utilisateur et le mot de passe soient identiques sur tous les pfSense à sauvegarder).
Le fichier pfmotion_curl.sh est très simple à paramétrer ; il suffit de compléter les variables suivantes :
- PFSENSE_HOST (ligne 14) : l'adresse IP du serveur pfSense à sauvegarder
- PFSENSE_USER (ligne 17) : le compte utilisateur pour se connecter à pfSense. Dans notre cas : sauvegarde-auto
- PFSENSE_PASS (ligne 18) : le mot de passe associé au compte utilisateur
- BACKUP_DIR (ligne 21) : le dossier de sauvegarde (par défaut, les sauvegardes seront enregistrées dans le dossier conf_backup du répertoire où est exécuté le script)
Exemple de résultat obtenu :
Il ne nous reste plus qu'à lancer le script :
Le script s'est déroulé avec succès. Sauvegarde effectuée
Nous pouvons automatiser le lancement de ce script, toutes les nuits par exemple, via une tâche cron.
Enfin, et pour être complet, nous proposons d'ajouter deux fonctionnalités complémentaires au script :
- Une alerte par e-mail si la sauvegarde ne s'effectue pas correctement
- La suppression des sauvegardes de plus de 30 jours
Alerte par e-mail si la sauvegarde ne s'effectue pas correctement
Il suffit d'ajouter le code suivant aux lignes 71 et 78 :
echo "Erreur lors de la sauvegarde de pfSense" | mail -s "Sauvegarde auto pfSense - ERREUR" mon@adresse.tld
Ce qui donnera quelque chose comme ceci :
Il faut, bien-sûr, remplacer mon@adresse.tld par l'adresse e-mail destinée à recevoir les notifications.
Il faut également avoir préalablement configuré sur son serveur un programme d'envoi d'email tel que Postfix ou Sendmail.
Nous proposons un article succinct sur l'installation et la configuration de Postfix sur un serveur Ubuntu ou Debian : [Postfix] Installer et configurer Postfix pour envoyer ses e-mails depuis un serveur dédié
Suppression des sauvegardes de plus de 30 jours
Nous proposons d'ajouter le code suivant qui va s'occuper de rechercher et supprimer les fichier de plus de 30 jours se trouvant dans le dossier de sauvegarde.
# Suppression au dela de 30 jours find "$BACKUP_DIR/" -type f -mtime +30 -exec rm {} \;
Ce code est à placer en fin de script, juste avant les deux dernières lignes :
echo exit 0
Voilà, nous disposons d'une solution simple, pratique et efficace pour sauvegarder automatiquement notre serveur pfSense.
Merci à Mr Xhark du site Blogmotion pour sa réalisation et son partage.
Pour aller plus loin
[pfSense] Sauvegarder automatiquement sa configuration avec AutoConfigBackup
[Postfix] Installer et configurer Postfix pour envoyer ses e-mails depuis un serveur dédié
Tous nos articles classés par thème
Voir un article au hasard
Vous avez aimé cet article ? Vous cherchez du matériel de qualité ? Alors visitez notre boutique en ligne.