Ceci est une ancienne révision du document !
Sauvegarde d'un serveur pfsense avec BackupPC
Un des gros points forts de pfsense est de pouvoir être entièrement re-configuré via le fichier de configuration xml que l'on peut télécharger depuis l'interface web. Ce how-to a pour but d'expliquer comment automatiser cette sauvegarde à l'aide de BackupPC (déjà pour que ça soit automatique bien sûre, mais grâce au mode historique de BackupPC, on peut suivre facilement les modification de configurations).
Sur Pfsense
Il faut d'abord créer un groupe d'utilisateurs nommé par exemple backups, qui n'a accès qu'à la page de sauvegardes:
Puis il faut créer un utilisateur (par exemple backuppc) membre de ce groupe, avec un mot de passe solide. Dans cet exemple, on lui mettra comme mot de passe secret
Sur BackupPC
Sur le serveur BackupPC, on va créer un répertoire pour y mettre des scripts, et un répertoire pour y téléchargr la configuration de pfsense:
mkdir -p /var/lib/BackupPC/{bin,pfsense}
Puis on écrit le script qui sera utilisé en pre/post dump:
cat <<'EOF' > /var/lib/BackupPC/bin/pfsense.sh #!/bin/bash DIR='/var/lib/BackupPC/pfsense' ACTION=$1 pre (){ /usr/bin/wget -qO/dev/null --keep-session-cookies --save-cookies $DIR/cookies.txt --post-data 'login=Login&usernamefld=backuppc&passwordfld=secret' --no-check-certificate https://pfsense.domain.tld/diag_backup.php # Config seule. Pour pouvoir tracer les modification de config /usr/bin/wget --keep-session-cookies --load-cookies $DIR/cookies.txt --post-data 'Submit=download&donotbackuprrd=on' https://pfsense.domain.tld/diag_backup.php --no-check-certificate -O $DIR/config-pfsense.xml 2>/dev/null # La meme chose, avec les données RRD en + /usr/bin/wget --keep-session-cookies --load-cookies $DIR/cookies.txt --post-data 'Submit=download' https://pfsense.domain.tld/diag_backup.php --no-check-certificate -O $DIR/config-pfsense+rrd.xml 2>/dev/null exit $? } post (){ /bin/rm -f $DIR/* } case $ACTION in post) post ;; *) pre ;; esac EOF
Et voilà, il ne reste plus qu'à ajouter un hôte à sauvegarder dans BackupPC, qui ressemblera à ça:
$Conf{ClientNameAlias} = 'localhost'; $Conf{DumpPreUserCmd} = 'sh /var/lib/BackupPC/bin/pfsense.sh pre'; $Conf{PingCmd} = '$pingPath -c 1 -w 3 pfsense.domain.tld'; $Conf{UserCmdCheckStatus} = 1; $Conf{RsyncClientCmd} = '$rsyncPath $argList+'; $Conf{RsyncClientRestoreCmd} = '$rsyncPath $argList+'; $Conf{RsyncShareName} = [ '/var/lib/BackupPC/pfsense' ]; $Conf{XferMethod} = 'rsync'; $Conf{XferLogLevel} = 6; $Conf{DumpPostUserCmd} = 'sh /var/lib/BackupPC/bin/pfsense.sh post';