Nous avons parlé à plusieurs reprises de pfSense ici. C’est un produit que j’aime beaucoup, et j’en ai maintenant quelques-uns à gérer. Il devenait donc important de trouver une solution pour effectuer des sauvegardes de leur configuration, automatiquement si possible.
L’éditeur de pfSense, Netgate, propose son abonnement Gold, qui donne accès, entre autre, à son module Autobackup. Ca permet de sauvegarder automatiquement, sur leurs serveurs, la configuration de pfSense (jusqu’à 10 unités par compte).
Mais je suis tombé sur un projet de l’ami Xhark (Blogmotion) nommé bm-backup-pfsense. Il a développé un script en trois versions (wget, cURL, cURL multi) qui permet de récupérer la configuration d’un pfSense en web. Ca permet donc d’automatiser les backups, assez simplement.
Fonctionnement du backup
Je décide d’héberger son script sur un de mes NAS. Le but est donc de lancer régulièrement le backup des pfSense de mes clients, en récupérant le fichier xml de configuration, qui sera stocké sur mon NAS.
Sécurité
Tout d’abord, il faut accéder à l’interface web des pfSense des clients depuis le réseau ou est hébergé le NAS. Pour ca, j’ai un mix de deux solutions. Pour certains clients, j’ai un VPN monté en permanence en direction de leur réseau. Je peux donc accéder à l’interface web de leurs pfSense par l’adresse LAN. Pour les autres, je créer une règle de firewall permettant l’accès sur l’interface WAN, mais limité à mon adresse IP en source.
Nous allons ensuite, sur chaque pfSense, créer un utilisateur. Il faudra créer un utilisateur dédié à cette seule tâche de backup. Pour tous les pfSense à sauvegarder par ce script, l’utilisateur devra être le même (login/password).
Ensuite, nous allons attribuer à ce compte un seul droit : WebCfg – Diagnostics : Sauvegarde & Restoration
Ça permet de limiter l’accès, en cas de compromission du compte.
Pour assurer la sécurité, nous avons donc l’accès web qui est limité par l’utilisation d’un tunnel (VPN) ou par restriction de l’adresse IP source, puis on utilise un compte à l’accès limité à la seule gestion du backup (et auquel on aura attribué un mot de passe suffisamment complexe).
Hébergement du script sur le NAS
Je place sur mon NAS le script que je exécuter périodiquement. Le créateur, Xhark, recommande l’utilisation de la version cURL, plus rapide d’execution. La version multi permet de lancer dans le même script le backup de plusieurs pfSense, c’est donc cette version que je vais utiliser.
J’édite donc le script pour modifier les variables.
LISTE_SRV : On va ici saisir les adresses ip ou URL permettant l’accès à nos interfaces web pfSense à sauvegarder.
PFSENSE_USER & PFSENSE_PASS : Le user/password créé sur chaque pfSense (utilisateur unique dans le script, commun à chaque pfSense).
BACKUP_DIR : Localisation du stockage des backups.
On va ensuite placer le script dans un répertoire dédié, sur un partage du NAS.
Une fois ce fichier sur le NAS, je vais simplement lancer automatiquement l’exécution de ce script via le planificateur inclus dans DSM.
Il faut donc simplement lancer l’interpréteur « /bin/sh« , utilisé par le script, puis appeler le script par son chemin complet.
A partir de maintenant, il me suffira de penser à créer mon user sur chaque pfSense mis en service, permettre l’accès à l’interface web par l’ip publique (avec restriction sur l’ip source) ou utiliser une connexion VPN, puis ajouter son IP dans le script.
Pratique, non??
Notes
Problème de login
Je vous conseille, pour chaque pfSense, de vous connecter avec l’utilisateur en question via l’interface web. Sur l’ip publique, vous pouvez avoir une erreur.
Si c’est le cas, vous devez activer l’option de « Désactivation de contrôle applicatif HTTP-Referer » (dans Système/Avancé/Accès Administrateur)
pfSense-backup-pfSense
Xhark a utilisé l’interpréteur /bin/sh pour assurer une plus grande compatibilité. Par exemple, il explique qu’on peut utiliser un pfSense « maitre » qui va backuper tous les autres. Pratique si vous n’avez pas de NAS à disposition. Vous pourrez aussi utiliser n’importe quelle machine sous Linux qui sera disponible 24/24H.