Vendredi 23 novembre 2018

Rsync à distance sans accès root

Lorsque vous faites une sauvegarde avec rsnapshot, vous avez besoin d’accéder aux fichiers du serveur. Seul l’utilisateur root peut avoir accès à tous les dossiers sans restriction. Toutefois pour des raisons de sécurité il ne faut pas laisser l’accès SSH à l’utilisateur root. Nous allons donc voir une méthode de contournement avec un utilisateur que nous allons appeler backupuser.

Sauvegarde Linux distant sans accès root, en utilisant rsync

L’astuce principale est de mettre backupuser en sudoers sur un hôte distant afin de permettre l’accès root à rsync ,exemple

  • shuttle = “serveur de sauvegarde”
  • yanfi.net = “hôte distant”

On utilise cron pour planifier les sauvegardes

serveur de sauvegarde (shuttle)

Création utilisateur backupuser et jeu de clé ssh
sudo adduser backupuser #mot de passe à saisir
Cette commande va vous demander plusieurs informations et notamment un mot de passe à noter impérativement. N’hésitez pas à définir un mot de passe compliqué, d’environ 16 caractères avec des chiffres, des lettres majuscule/minuscule et quelques caractères spéciaux car vous n’aurez à le taper réellement qu’une fois.

Création dossier .ssh sudo mkdir /home/backupuser/.ssh/ Modifier les droits sudo chown backupuser. -R /home/backupuser/.ssh/ sudo chmod 644 -R /home/backupuser/.ssh/ On se connecte en backupuser sudo su backupuser ssh-keygen -t rsa chmo 400 id_rsa* #lecture seule pour utilisateur backupuser exit # retour sur utilisateur précédent

Copier la clé publique sur l’hôte distant (yanfi.net) $ sudo cat /home/backupuser/.ssh/id_rsa.pub # copier le contenu de la clé

hôte distant

Opérations suivantes à faire sur tous les hôtes

Vérifier ou installer rsync sudo apt install rsync # debian Ajout utilisateur de backupuser qui ne peut exécuter que rsync et de la clé publique du “serveur de sauvegarde” #création utilisateur backup sudo useradd backupuser -c "limited backup user" -m -u 4210 #ajout clé publique ssh dans le fichier authorized_keys du nouvel utilisateur sudo mkdir /home/backupuser/.ssh sudo mv id_rsa.pub /home/backupuser/.ssh/authorized_keys #(debian)

ou

sudo nano /home/backupuser/.ssh/authorized_keys #coller le contenu /home/backupuser/.ssh/id_rsa.pub copié sur terminal du serveur </code> Création script bash rsync-wrapper.sh sudo nano /home/backupuser/rsync-wrapper.sh Contenu du script <file | rsync-wrapper.sh> #!/bin/sh

date > /home/backupuser/backuplog #echo $@ » /home/backupuser/backuplog /usr/bin/sudo /usr/bin/rsync “$@”; </file> Droits sur le fichier sudo chown backupuser:backupuser /home/backupuser/rsync-wrapper.sh sudo chmod 755 /home/backupuser/rsync-wrapper.sh

Edition fichier sudoers pour un accès root à l’exécution de rsync sudo -s Ajouter ligne suivante en fin de fichier,exécution en mode root de rsync echo “backupuser ALL=NOPASSWD: /usr/bin/rsync” » /etc/sudoers

<WRAP center round info 60%> Vous devez copier le fichier rsync-wrapper.sh et modifier le fichier sudoers sur tous les hôtes </WRAP>