Samedi 21 mars 2020

OVH vps803434 (1 vCore/2GoRam/20GoSSD) Debian Buster

Sauvegarde BorgBackup

Préparation de la machine à sauvegarder

On se connecte sur la machine et on passe en mode su

sudo -s
apt update

Installer borgbackup

apt install borgbackup

Créer un jeu de clé sur machine à sauvegarder (wgvpn.ovh)
Créer un utilisateur borg (sans home) dédié aux sauvegardes par BorgBackup :

useradd -M borg

Générer un jeu de clé sur /root/.ssh

mkdir -p /root/.ssh
ssh-keygen -t ed25519 -o -a 100 -f /root/.ssh/wgvpn_ovh_ed25519

Le jeu de clé

ls /root/.ssh
    wgvpn_ovh_ed25519  wgvpn_ovh_ed25519.pub

Autoriser utilisateur borg à exécuter /usr/bin/borg uniquement

echo "borg ALL=NOPASSWD: /usr/bin/borg" >> /etc/sudoers

Ajout clé publique au serveur backup xoyaz.xyz

Pour une connexion via ssh vous devez ajouter la clé publique wgvpn_ovh_ed25519.pub du serveur client wgvpn.ovh au fichier ~/.ssh/authorized_keys du serveur backup xoyaz.xyz

Se connecter au serveur backup xoyaz.xyz depuis un terminal autorisé

ssh usernl@5.2.79.107 -p 55036 -i /home/yannick/.ssh/OVZ-STORAGE-128 # connexion SSH serveur backup depuis PC1
sudo -s # passer en super utilisateur
cat >> /srv/data/borg-backups/.ssh/authorized_keys

Copier/coller le contenu du fichier du fichier de clef publique (fichier /root/.ssh/wgvpn_ovh_ed25519.pub de la machine à sauvegarder wgvpn.ovh ) dans ce terminal, et presser [Ctrl]+[D] pour valider.

Test depuis le serveur client wgvpn.ovh (c’est lui qui possède la clé privée).
Si parefeu avec les sorties bloquées sur wgvpn.ovh , il faut ouvrir en sortie le port TCP 55036.

AU PREMIER passage une question est posée , saisir oui ou yes

sudo -s
ssh -p 55036 -i /root/.ssh/wgvpn_ovh_ed25519 borg@xoyaz.xyz
The authenticity of host '[xoyaz.xyz]:55036 ([2a04:52c0:101:7ae::7a5e]:55036)' can't be established.
ECDSA key fingerprint is SHA256:PDXQBhTh4oj0cSzgnjCun+J60JDUEk7VeLH2YHZbwMc.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '[xoyaz.xyz]:55036,[2a04:52c0:101:7ae::7a5e]:55036' (ECDSA) to the list of known hosts.
Linux backup 2.6.32-042stab140.1 #1 SMP Thu Aug 15 13:32:22 MSK 2019 x86_64
  _               _               
 | |__  __ _  __ | |__ _  _  _ __ 
 | '_ \/ _` |/ _|| / /| || || '_ \
 |_.__/\__,_|\__||_\_\ \_,_|| .__/
                            |_|   
Last login: Sun Sep 15 15:13:35 2019 from 2a01:e34:eef2:570:2c83:bd30:365a:ff54
$ 

saisir exit pour sortir

NOTE : /srv/data/borg-backups est le home de l’utilisateur borg sur le serveur backup xoyaz.xyz

Création dépôt et lancement des sauvegardes depuis la machine à sauvegarder

machine cliente wgvpn.ovh
On se connecte sur la machine et on passe en mode su

sudo -s

Création du dépôt distant sur le serveur backup xoyaz.xyz (A FAIRE UNE SEULE FOIS)

export BORG_RSH='ssh -i /root/.ssh/wgvpn_ovh_ed25519' # ce n'est pas la clé par défaut id_rsa
borg init --encryption=repokey-blake2 ssh://borg@xoyaz.xyz:55036/srv/data/borg-backups/wgvpn.ovh
Enter new passphrase: 
Enter same passphrase again: 
Do you want your passphrase to be displayed for verification? [yN]: 

By default repositories initialized with this version will produce security
errors if written to with an older version (up to and including Borg 1.0.8).

If you want to use these older versions, you can disable the check by running:
borg upgrade --disable-tam ssh://borg@xoyaz.xyz:55036/srv/data/borg-backups/wgvpn.ovh

See https://borgbackup.readthedocs.io/en/stable/changes.html#pre-1-0-9-manifest-spoofing-vulnerability for details about the security implications.

IMPORTANT: you will need both KEY AND PASSPHRASE to access this repo!
Use "borg key export" to export the key, optionally in printable format.
Write down the passphrase. Store both at safe place(s).

Sauvegarder la “passphrase” dans un fichier pour une procédure automatique

mkdir -p /root/.borg
nano /root/.borg/passphrase

Générer une sauvegarde d’un dossier local vers le dépôt distant pour test (facultatif)

borg create ssh://borg@xoyize.xyz:55029/srv/ssd-two/borg-backups/wgvpn.ovh::2019-01-11 /home/yanfi
Enter passphrase for key ssh://borg@xoyize.xyz:55029/srv/ssd-two/borg-backups/wgvpn.ovh: 

Automatiser la procédure de sauvegarde pour le client wgvpn.ovh
script de sauvegarde (notez l’usage de borg prune pour supprimer les archives trop anciennes)

nano /root/.borg/borg-backup 
#!/bin/sh
#
# Script de sauvegarde.
#
# Envoie les sauvegardes sur un serveur distant, via le programme Borg.
# Les sauvegardes sont chiffrées
#
 
set -e
 
BACKUP_DATE=`date +%Y-%m-%d-%Hh%M`
LOG_PATH=/var/log/borg-backup.log
 
export BORG_PASSPHRASE="`cat ~root/.borg/passphrase`"
export BORG_RSH='ssh -i /root/.ssh/wgvpn_ovh_ed25519'
BORG_REPOSITORY=ssh://borg@xoyaz.xyz:55036/srv/data/borg-backups/wgvpn.ovh
BORG_ARCHIVE=${BORG_REPOSITORY}::${BACKUP_DATE}
 
borg create \
-v --stats --compression lzma,9 \
$BORG_ARCHIVE \
/bin /boot /etc /home /lib /lib64 /opt /root /sbin /srv /usr /var \
>> ${LOG_PATH} 2>&1
 
# Nettoyage des anciens backups
# On conserve
# - une archive par jour les 7 derniers jours,
# - une archive par semaine pour les 4 dernières semaines,
# - une archive par mois pour les 6 derniers mois.
 
borg prune \
-v --list --stats --keep-daily=7 --keep-weekly=4 --keep-monthly=6 \
$BORG_REPOSITORY \
>> ${LOG_PATH} 2>&1

Le rendre exécutable

chmod +x /root/.borg/borg-backup

Programmer la tâche à 2h50 du matin

crontab -e
# Sauvegarde sur distant avec BorgBackup
50 02 * * * /root/.borg/borg-backup > /dev/null