(modifié le 16 octobre 2017 à 2:27)

Utiliser des pare-feu pfSense chez soi ou en entreprise c'est bien. Faire des sauvegardes automatiques régulières des fichiers de configuration XML, c'est mieux.

J'ai devéloppé un script shell permettant de sauvegarder la configuration XML très rapidement, ce qui évite d'avoir à souscrire l'option gold de chez netgate qui permet la même chose au travers d'un package.

bm-backup-pfsense

C'est son petit nom, je préfixe tout mes scripts GitHub par "bm-*****", histoire de les retrouver facilement.

Pour télécharger le script : bm-backup-pfsense.

Ce script va simuler une connexion via l'interface web pour récupérer le fichier de configuration XML contenant tous les paramètres du pare-feu. Pour cela j'ai du intégrer plusieurs étapes pour passer à travers les contrôles de connexion (CSRF).

On trouvait des ébauches sur le net compatible uniquement avec certaines versions (1 - 2 - 3). J'ai donc décidé de développer un script compatible avec toutes les versions : v2.2.6 à v2.4.x (màj 16/10/2017). Si vous avez une version inférieure alors vous déconnez complètement et vous êtes blindés de failles de sécu 🙂

Fonctionnement

Je vous recommande de créer un utilisateur dédié pour ce script (System > User Manager) ayant à minima le privilège "WebCfg - Diagnostics: Backup & Restore".

Pour des questions évidentes de sécurité l'utilisation du "admin" est déconseillé (mot de passe en clair dans le script).

Le script existe sous 3 versions :

  • wget
  • cURL
  • cURL multi

La version cURL est beaucoup plus rapide que la version wget, je vous la conseille.

La version cURL multi permet de préciser plusieurs adresses IP/noms d'hôtes et le script se charge de télécharger la configuration sur l'ensemble.

Avant de lancer le script il faut l'éditer pour modifier la variable contenant l'URL de connexion du ou des pare-feu(x) ainsi que l'identifiant/mot de passe associé.

Attention : Si vous utilisez la version cURL multi sachez que le login/mdp doit être identique sur les pare-feux à sauvegarder. Je ferai peut-être une évolution si c'est quelque chose d'important pour vous, vous pouvez aussi le faire avec une pull-request sur GitHub.

Shebang

J'ai volontairement utilisé l'interpreteur "/bin/sh" (et non bash) pour que le script tourne sur un maximum de plateformes, y compris pfSense.

Vous pouvez donc faire tourner ce script sur un pare-feu pfSense qui va sauvegarder tous ses copains. Pratique si vous êtes dans une DMZ et que les flux ne vous permettent pas de faire tourner le script ailleurs.

Vous pouvez par exemple implanter le script sur pfsense-A qui sauvegarde pfsense-B et vice-versa. Libre à vous de programmer l'exécution grâce au package Cron qui le permet via l'interface web.

Pour télécharger le script : bm-backup-pfsense.

Auteur : Mr Xhark

Fondateur du blog et passionné par les nouvelles techno, suivez-moi sur twitter