Vous disposez de deux systèmes et vous voulez mettre en place une sauvegarde sécurisée par rsync + SSH d’un système sur l’autre.
De manière très simple, vous pouvez utiliser la commande :
backup.example.com# rsync -avz --numeric-ids --delete root@myserver.example.com:/path/ /backup/myserver/
Pour faire la sauvegarde, vous devez être root sur le serveur, car certains fichiers ne sont lisibles que par root.
Problème : vous allez autoriser backup.example.com à faire n’importe quoi sur myserver.example.com, alors qu’un simple accès en lecture seule sur un dossier suffit.
Pour résoudre ce problème, il suffit d’utiliser la directive command=""
dans le fichier authorized_keys
pour filtrer la commande lancée.
Pour trouver cette commande, on lance rsync en ajoutant l’option -e'ssh -v'
:
rsync -avz -e'ssh -v' --numeric-ids --delete root@myserver.example.com:/path/ /backup/myserver/ 2>&1 | grep "Sending command"
On obtient un résultat du genre :
debug1: Sending command: rsync --server --sender -vlogDtprze.iLsf --numeric-ids . /path/
Maintenant, il suffit d’ajouter la commande avant la clé dans le fichier /root/.ssh/authorized_keys
:
command="rsync --server --sender -vlogDtprze.iLsf --numeric-ids . /path/" ssh-rsa AAAAB3NzaC1in2EAAAABIwAAABio......
Et pour encore plus de sécurité, on pourra ajouter un filtre par IP, et autres options :
from="backup.example.com",command="rsync --server --sender -vlogDtprze.iLsf --numeric-ids . /path/",no-agent-forwarding,no-port-forwarding,no-pty,no-user-rc,no-X11-forwarding ssh-rsa AAAAB3NzaC1in2EAAAABIwAAABio......
Maintenant, vous pouvez essayer d’ouvrir un shell ssh, ou de lancer d’autres commandes rsync non autorisées…
Notes :
- Attention, si vous changez les options de la commande rsync, à ne pas oublier de modifier aussi le fichier
authorized_keys
. - Plus besoin de chroot compliqué, vous pouvez oublier mon précédent article : SFTP-chroot-rsync
Voir aussi :
man ssh #/AUTHORIZED_KEYS FILE FORMAT
man rsync
view /usr/share/doc/rsync/scripts/rrsync.gz
(restricted rsync, vous permet de gérer précisément les options autorisées)