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/