Il y a quelque temps, j’avais publié un billet indiquant comment mettre en place un environnement sftp chrooté, dans lequel l’utilisateur ne peut pas sortir du répertoire qui lui est assigné.
La solution que j’avais proposée (modifier la configuration de sshd) était compliquée et lourde à mettre en place. Parmi les commentaires, le logiciel mysecureshell avait été évoqué.
Présentation
Mysecureshell est une commande qui se lance au login de l’utilisateur sur la machine. Il dispose de nombreuses possibilité de paramétrage (débit, droits), tout en restant très simple à administrer. De plus, il empêche l’utilisateur d’ouvrir une connexion sur la machine, il ne peut que se connecter en sftp.
Nous allons voir ici comment le mettre en place sur une machine Debian destinée à accueillir des connexions sftp.
La documentation en ligne est complète et accessible voici néanmoins une description qui reprend les principes de l’installation.
Installation
Mysecureshell n’est malheureusement pas disponible dans les dépôts debian. Il est donc nécessaire d’ajouter un dépôt externe pour l’installer. Le site web fournit des paquets d’installation pour la plupart des distributions (debian, fedora…)
Une fois que le dépôt est ajouté, il suffit de l’installer en lançant la commande suivante (toujours sous debian) :
# aptitude install mysecureshell
Configuration
Configuration de mysecureshell
La configuration se fait dans le fichier /etc/ssh/sftp-config
Voici les champs importants à noter :
Champs | Signification |
---|---|
GlobalDownload | Il s’agit du débit maximal qui sera utilisé quand le serveur uploadera des fichiers vers les clients |
GlobalUpload | La même chose pour l’upload |
StayAtHome | Empêcher l’utilisateur de naviguer hors de son répertoire personnel |
VirtualChroot | Met en place un faux home pour l’utilisateur |
Home | Défini le home que verra l’utilisateur lorsqu’il se connectera |
Je conseille de séparer le home « unix » de l’utilisateur de son home « chrooté ». Cela permet de mettre en place des fichiers dans le fichier home de l’utilisateur, sans que celui-ci ne puisse les consulter :
Cela se fait tout simplement en mettant l’option VirtualChroot à True, et en définissant le Home mysecureshell vers un sous-répertoire du home unix :
StayAtHome true
VirtualChroot true
Home /home/$USER/sftp
Cela oblige à créer pour chaque utilisateur un répertoire sftp dans son home. Lorsque l’utilisateur se connectera, il accedera uniquement à répertoire sftp, mais ne pourra pas naviguer plus haut, ni consulter les autres répertoires des autres utilisateurs.
Gestion des comptes
La configuration est assez simple : pour chaque utilisateur nous allons indiquer que mysecureshell est la commande à exécuter lors du login de l’utilisateur. Cela se fait en modifiant le fichier /etc/passwd.
invite:x:1002:1002:,,,:/home/invite:/bin/bash
et le remplacer le dernier champs ainsi :
invite:x:1002:1002:,,,:/home/invite:/bin/Mysecureshell
Sauvegarder, et voilà, la configuration va s’appliquer lors de la prochaine connexion de l’utilisateur.
Mise à jour de la configuration
Lorsque les fichiers de configuration sont mis à jour, les connexions existantes ne sont affectées. Elles ne le deviennent qu’à partir de la prochaine reconnexion de l’utilisateur.
Il est tout à fait possibile de forcer mysecureshell à appliquer les modifications, mais cela oblige à reconnecter les utilisateurs
Au final
Il n’y a pas grand chose à faire finalement, et c’est agréable de voir la configuration se faire aussi rapidement ! Il est vrai que le site web de l’application peut sembler amateur, mais cela ne reflète en rien la qualité de l’application.
J’abandonne donc avec plaisir la méthode que j’avais mis en place dans mon précédent billet pour passer sur mysecureshell !