Table of Contents
Self-hosting for teams - 6 - Sauvegarde chiffrée distante
Le but des backups est de conserver une copie des bases de données de chaque services qui pourra servir en cas de corruption de données ou de pertes de données sur le serveur.
Configuration du backup automatique régulier avec duplicity et cron
Nous allons donc générer des clés SSH pour transmettre les fichiers de manière chiffrée, puis des clés GPG pour que les fichiers soient chiffrés au repos. Duplicity est un logiciel basé sur rsync
qui gère précisément ce type de copie.
Duplicity
Ouvrez un terminal vers votre home server et un autre vers votre serveur de backup. Le tutoriel de DigitalOcean explique comment installer duplicity
, préparer les clés SSH et GPG.
Commencez par installer duplicity sur votre home server. Si la commande python setup.py install
produit une erreur, essayez d'installer gcc
via sudo apt-get install build-essential
.
Créez ensuite une paire de clés SSH sur votre home server.
sudo su cd ssh-keygen -t rsa
duplicity
semble ne pas fonctionner quand la clé SSH elle-même est chiffrée. Attention donc à ne pas donner de passphrase après ssh-keygen -t rsa
.
ssh-copy-id root@URL_DU_SERVEUR_DU_BACKUP
Il vous sera demandé le mot de passe root
de votre serveur backup.
Testez maintenant la connexion SSH :
ssh root@URL_DU_SERVEUR_DU_BACKUP
Vous devriez être directement connecté dans votre session root
de votre serveur backup. Lancez exit
pour revenir à votre session home serveur.
Vous pouvez ensuite créer vos clés GPG en suivant le tutoriel Digital Ocean, jusqu'à How To Use Duplicity. Nous supposerons l'identifiant clé GPG que vous avez créée est ID_CLE
.
Pour tester duplicity
, sur votre serveur de backup, créez un répertoire temporaire :
mkdir /tmp/bkp
Sur votre home serveur, créez des fichiers test :
cd /tmp/ mkdir /tmp/test touch /tmp/test/file{1..1000}
Puis, sur le home serveur, copiez votre clé GPG sur le serveur backup.
gpg --export-secret-keys ID_CLE > key.cer scp key.cer BACKUP_HOST:.
Et copiez les fichiers via duplicity
.
duplicity --encrypt-key ID_CLE /tmp/test sftp://root@IP_SERVEUR_TEST//tmp/bkp
Sur le serveur backup, importez la clé copiée et déchiffrez le backup.
gpg --import key.cer duplicity file:///tmp/bkp/ /tmp/restore/ ll /tmp/restore/
Si le test s'est bien déroulé, vous devriez voir une liste de fichiers file1 file2 ...
.
Backup automatique avec Cron
Le backup utilise deux scripts, l'un exécutant le second, pour faire la sauvegarde des données des containers.
Le tutoriel de DigitalOcean explique comment installer duplicity
, préparer les clés SSH et GPG.
Créez un dossier backup_script
pour y placer les scripts :
cd mkdir backup_script mkdir /tmp/bkp cd backup_script nano backup.sh nano duplicity.sh
Pour les fichiers, voici les contenus à ajouter :
# backup.sh script ~/backup_script/backup_`date -I`.log -c "sh ~/backup_script/duplicity.sh $1 $2" cat ~/backup_script/backup_`date -I`.log | mail -s "Log de backup `date -I`" -t adressedu@destinataire.com
# duplicity.sh echo "----------------------------------" echo "Début de backup data serveur" echo "----------------------------------" echo echo Source: $1 echo Destination: $2 echo PASSPHRASE="clédechiffrement" duplicity --encrypt-key ID_CLE $1 $2 echo "----------------------------------" echo "Fin de backup data serveur" echo "----------------------------------"
Changer la clé par celle utilisée pour la génération (GPG), ainsi que son id.
Enfin, c'est le service cron
qui s'occupe d'exécuter les backups à des moments choisis, il faut éditer le fichier /etc/crontab
. Pour tester, on paramètre l'execution toutes les 5 minutes:
# ajouter au fichier */5 * * * * root sh ~/backup_script/backup.sh ~/ file:///tmp/bkp/