Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente |
doc:formations:hebergement:serveur:sauvegarder:exemple [2020/12/02 17:55] – [Renforcement: SSH utilisateur bridé sur une commande] jeremie | doc:formations:hebergement:serveur:sauvegarder:exemple [2020/12/02 17:58] (Version actuelle) – [Renforcement: SSH utilisateur bridé sur une commande] jeremie |
---|
Certes, la configuration sudo ci-dessus ne permet à l'utilisateur de n'éxécuter "en root" que la commande prévue. Ceci étant, il n'est pas souhaitable qu'il puisse se logguer pour faire autre chose que ce pour quoi il a été conçu (que ce soit en root ou non). | Certes, la configuration sudo ci-dessus ne permet à l'utilisateur de n'éxécuter "en root" que la commande prévue. Ceci étant, il n'est pas souhaitable qu'il puisse se logguer pour faire autre chose que ce pour quoi il a été conçu (que ce soit en root ou non). |
| |
On va donc [[doc:formations:hebergement:serveur:ssh#restreindre_les_commandes_appelables|brider]] celles qu'il va pouvoir appeler en ajoutant ceci au début des lignes de ''authorized_keys'': | On va donc [[doc:formations:hebergement:serveur:ssh#restreindre_les_commandes_appelables|brider]] celles qu'il va pouvoir appeler en ajoutant ceci au début des lignes de ''/home/backuper/.ssh/authorized_keys'' de ''srvsrc'': |
| |
command="/home/backuper/backup.sh", ssh-rsa AAAAB3NzaC1yc2EAAA...H1tl root@srvbak | command="/home/backuper/backup.sh", ssh-rsa AAAAB3NzaC1yc2EAAA...H1tl root@srvbak |
echo "$SSH_ORIGINAL_COMMAND" | grep -q '[&;]' && fail | echo "$SSH_ORIGINAL_COMMAND" | grep -q '[&;]' && fail |
| |
# On oblige à baser les chemins sont bien indiqués depuis la racine du site | # On oblige à donner des chemins ancrés sur la racine du site |
echo "$SSH_ORIGINAL_COMMAND" | tr "\t" ' ' | grep -q ' /[^ ]*$' || fail | echo "$SSH_ORIGINAL_COMMAND" | tr "\t" ' ' | grep -q ' /[^ ]*$' || fail |
| |
*.zip | *.zip |
| |
Note: on fait un peu de zèle ici dans ce script, mais qui illustre un moyen de brider les commandes et données gérables par l'appelant, ainsi que l'injection d'arguments dans le ''rsync'' (ici, l'exclusion des dossiers non sauvegardables sur le serveur, ''/sys'', ''/proc'', ''/run'' et ''/dev'' ainsi que divers fichiers et dossiers). Même sans les spécifier lors du rsync, ces options seront utilisées! | Note: on fait un peu de zèle ici dans ce script, mais qui illustre un moyen de brider les commandes et données gérables par l'appelant, ainsi que l'injection d'arguments dans le ''rsync'' (ici, l'exclusion des dossiers non sauvegardables sur le serveur, ''/sys'', ''/proc'', ''/run'' et ''/dev'' ainsi que divers fichiers et dossiers). Même sans les spécifier lors du rsync, ces options seront utilisées (car "injectées" de force avec le ''sed'' ci-avant). |
| |
| |