[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: rdiff-backup - conseils



Jean-Marc a écrit :
> Un peu de détail avec ma compréhension de ce passage.
> . connexion SSH restreinte à une connexion par clés uniquement;

Oui.

> . pas de connexion interactive = shell du user = /usr/sbin/nologin,
> voire /bin/false;

Non. Dans le fichier /root/.ssh/authorized_keys, il faut indiquer sur la
ligne de la clé « no-pty » (pas de terminal donc pas de session
interactive).

Dans les faits, j'indique les restrictions suivantes :

------------------------------------------------------------------------
no-pty,no-port-forwarding,no-X11-forwarding,no-agent-forwarding
------------------------------------------------------------------------

cf. « man authorized_keys » pour les détails.

> . pour restreindre les commandes, il y a l'option 'command="..."'
>   à insérer dans .ssh/authorized_keys;

Oui. Chez moi command="/root/.ssh/check-command.sh", script dont voici
le contenu :

------------------------------------------------------------------------
#!/bin/sh

PATH=/bin:/sbin:/usr/bin:/usr/sbin
LOGFILE=/var/log/remote-backup-commands.log

echo "[$(date '+%F %T')] '${SSH_ORIGINAL_COMMAND}'" >> $LOGFILE

if [ -z "${SSH_ORIGINAL_COMMAND}" ] ; then
    echo "=> ERROR: Interactive session not allowed" | tee -a $LOGFILE
    exit 1
fi
        
case "$SSH_ORIGINAL_COMMAND" in
    /usr/bin/rdiff-backup\ *)
        $SSH_ORIGINAL_COMMAND
        echo "=> Done" >> $LOGFILE
        ;;
    /root/bin/dump_databases.sh)
        $SSH_ORIGINAL_COMMAND
        echo "=> Done" >> $LOGFILE
        ;;
    *)
        echo "=> ERROR: Forbidden command" | tee -a $LOGFILE
        ;;
esac
------------------------------------------------------------------------

Le script /root/bin/dump_databases.sh, que mon script de sauvegarde
lance avant rdiff-backup effectue les opérations suivantes :

1. Génère une archive apt-clone contenant la liste des paquets installés
   et les paquets non disponibles dans les dépôts Debian courants :

   apt-clone clone --with-dpkg-repack /path/to/prefix

2. Dump des bases de données PostgreSQL, MySQL et LDAP


> . pour l'IP ou le nom du host, l'option from="..." de ce même fichier;

Oui.

> . et on peut utiliser les options no-agent-forwarding et
>   no-port-forwarding;

Oui.

Au final, la ligne correspondante dans le fichier /root/.ssh/authorized_keys ressemble à :

------------------------------------------------------------------------
from="1.2.3.4",no-pty,no-port-forwarding,no-X11-forwarding,no-agent-forwarding,command="/root/.ssh/check-command.sh" ssh-rsa AAAAB3NzaC1yc....
------------------------------------------------------------------------

> Dernier point, le paquet base-passwd [1] fournit un user backup (UID 34).
> Est-ce un bon candidat ou dois-je créer mon propre user ?

J'utilise le compte root. Je sais, c'est mal mais cela me simplifie la
tâche sachant que je n'autorise que les connexions par clés SSH et que
je blinde particulièrement cet accès octroyé au serveur de sauvegarde
qui est lui-même aussi durci que je le peux.

Sébastien


-- 
Sébastien Dinot, sebastien.dinot@free.fr
http://sebastien.dinot.free.fr/
Ne goûtez pas au logiciel libre, vous ne pourriez plus vous en passer !


Reply to: