.. -*- mode: rst -*- .. -*- coding: utf-8 -*- Mettre en place un environnement sftp chrooté (2) ################################################# :date: 2011-06-07 :tags: Hébergement, sftp, Administration .. default-role:: literal 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) : .. code-block:: console # 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` : .. code-block:: bash 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. .. code-block:: console invite:x:1002:1002:,,,:/home/invite:/bin/bash et le remplacer le dernier champs ainsi : .. code-block:: console 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 ! .. _mysecureshell : http://mysecureshell.sourceforge.net/fr/index.html .. _paquets d'installation : http://mysecureshell.sourceforge.net/fr/installpak.html .. _reconnecter les utilisateurs : http://mysecureshell.sourceforge.net/fr/confman.html#question9 .. vim: filetype=rst