Grenode effectue des sauvegardes journalières et chiffrées de ses machines avec les outils backupninja et duplicity. Nous utilisons un espace de sauvegarde fourni par la machine gaffe.
Ce qui est sauvegardé
sur toutes les machines
- [fs] /etc
- [fs] /root
- [fs] /var/backups
- [fs] /var/spool/cron/crontabs
- [fs] /home
- [fs] /usr/local/bin
- [fs] /usr/local/sbin
- [fs] /var/lib/dpkg/status
- [fs] /var/lib/dpkg/status-old
palanquee
outils
- [mysql] sympa
- [fs] /var/lib/sympa
soupirail
- [fs] /var/lib/fs2ram
duplicity
Sur chaque machine à sauvegarder est créée une clé GPG (4096 RSA) avec un mot de passe aléatoire (pwgen). C'est la clé principale utilisé pour le chiffrement et la signature des sauvegardes. En plus de cette clé les backups sont chiffrés avec la clé GPG de chacun des administrateurs.
Ceci permet donc de récupérer les backups même si la clé gpg principale est perdue. De plus les clés GPG publiques de chacune des machines permettent de vérifier l'authenticité des backups.
La connexion à la machine de backup se fait par ssh. Chacune des machines dispose d'une clé SSH dans le compte root prévu pour cela
Bug duplicity avec stretch
Avec le passage à stretch, la sauvegarde échoue avec cette erreur :
Error: BackendException: ssh connection to <USER>@backup.grenode.net:22 failed: ('Bad authentication type', [u'publickey']) (allowed_types=[u'publickey'])
Le bug est connu : https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=870004
; la solution adoptée est de patcher le script /usr/share/backupninja/dup
comme des gros sales, en copiant ces quelques lignes dans
/root/patch.backupninja
:
--- backupninja.dup.orig 2018-01-25 10:20:27.753879804 +0100
+++ backupninja.dup.new 2018-01-25 10:21:42.823091892 +0100
@@ -116,7 +116,7 @@
### ssh/scp/sftp options (duplicity < 0.4.3 is unsupported)
## duplicity >= 0.6.17 : paramiko backend
-if [ "$duplicity_major" -ge 0 -a "$duplicity_minor" -ge 6 -a "$duplicity_sub" -ge 17 ]; then
+if [ "$duplicity_major" -gt 0 ] || [ "$duplicity_major" -eq 0 -a "$duplicity_minor" -gt 6 ] || [ "$duplicity_major" -eq 0 -a "$duplicity_minor" -eq 6 -a "$duplicity_su b" -ge 17 ]
if [ -n "$sshoptions" ]; then
echo "$sshoptions" | grep -Eqs '^-o<span class="createlink"><a href="/ikiwiki.cgi?do=create&from=Documentation_technique%2FDivers%2FSauvegardes&page=%3Aspace%3A" rel="nofollow">?</a>:space:</span>*IdentityFile=[^ ]+$' \
|| warning 'duplicity >= 0.6.17 only supports the IdentityFile SSH option'
puis de lancer :
patch /usr/share/backupninja/dup /root/patch.backupninja
S'il y a des mises à jour de backupninja ou duplicity, il faudra vérifier que le bug est corrigé, et repasser le patch si ce n'est pas le cas…
Clés GPG des machines
Procédures
Comment rajouter une machine
TODO
Comment déchiffrer les backups
TODO