Un serveur sftp avec MySecureShell

Un article que je refais suite à mon crash serveur, car c’est un service qui est particulièrement utile.

SSH possède une fonctionnalité nommée SFTP qui est comme on peut le pense un service FTP via le protocole SSH.
C’est utile, car cela limite le nombre de ports à ouvrir sur le parefeu, et surtout cela permet de fournir aux clients un moyen de faire des transferts de fichiers sécurisés à ceux qui demandent de la confidentialité dans leurs transactions.

Debian propose un paquet scponly, mais je l’ai testé et je n’aime pas du tout les contraintes de ce paquet quand on veut faire du chroot permettant de bloquer l’utilisateur dans son dossier personnel et lui empêcher le parcours de l’arborescence.
J’ai été longtemps frustré avant de découvrir MySecureShell qui répond à mon besoin.
Voir le détail de ce soft sur son site web : http://mysecureshell.sourceforge.net/fr/desc_basic.html

Pour Debian, les paquets existent, donc c’est relativement simple à installer.

On modifie le fichier /etc/apt/sources.list en lui ajoutant ceci :

# MySecureShell
deb http://mysecureshell.free.fr/repository/index.php/debian testing main
deb-src http://mysecureshell.free.fr/repository/index.php/debian testing main

Ce texte est sur 3 lignes, ne tenez pas compte de la mise en page provoquée par WordPress.
En cas de PB, consultez ce lien : http://mysecureshell.sourceforge.net/fr/installpak.html#question2

Une fois le fichier sources.list modifié, il faut installer la clef PGP servant à vérifier les paquets. Pour ce faire :

gpg –keyserver hkp://pool.sks-keyservers.net –recv-keys E328F22B; gpg –export E328F22B | apt-key add –

J’exécute cette commande depuis le compte root, donc je n’ai pas de soucis de droits. Si ce n’est pas votre cas, utiliser sudo par exemple. Vous devez obtenir ceci :

root@arcadia:~# gpg –keyserver hkp://pool.sks-keyservers.net –recv-keys E328F22B; gpg –export E328F22B | apt-key add –
gpg: répertoire `/root/.gnupg’ créé
gpg: nouveau fichier de configuration `/root/.gnupg/gpg.conf’ créé
gpg: AVERTISSEMENT: les options de `/root/.gnupg/gpg.conf’ ne sont pas encore actives cette fois
gpg: le porte-clés `/root/.gnupg/secring.gpg` a été créé
gpg: le porte-clés `/root/.gnupg/pubring.gpg` a été créé
gpg: requête de la clé E328F22B du serveur hkp pool.sks-keyservers.net
gpg: /root/.gnupg/trustdb.gpg: base de confiance créée
gpg: clé E328F22B: clé publique « MySecureShell repository <teka2nerdman@users.sourceforge.net> » importée
gpg: Quantité totale traitée: 1
gpg: importée: 1 (RSA: 1)
OK
root@arcadia:~#

Un petit coup de « aptitude update » pour mettre à jour la base des paquets, et vous devriez trouver Mysecureshell :

root@arcadia:~# aptitude search mysecureshell
p mysecureshell – This is a SFTP Server with ACLs
root@arcadia:~#

Il ne reste qu’à l’installer avec la commande  » aptitude -y install mysecureshell « .
Vous devriez obtenir ceci à la console :

Server is now online.
Starting SFTP Server: MySecureShell is now online

Bien maintenant, comment l’exploiter ? C’est assez simple.
MySecureShell installe un shell nommé /bin/MySecureShell.
Un compte « classique » Linux a un shell de type /bin/bash ou /bin/sh.
Modifiez le compte qui doit faire seulement du SFTP en lui attribuant  /bin/MySecureShell.

Voici un test de connexion SSH avec un compte bidon « classique » :
Je me connecte avec PuTTY à mon serveur avec le compte bidon que je viens de créer avec les commandes :

root@arcadia:~# useradd -m bidon
root@arcadia:~# passwd bidon
Entrez le nouveau mot de passe UNIX :
Retapez le nouveau mot de passe UNIX :
passwd : le mot de passe a été mis à  jour avec succès
root@arcadia:~#

Cela donne ceci :

Using username « bidon ».
bidon@192.168.1.100’s password:
Linux arcadia 2.6.32-5-686 #1 SMP Mon Mar 26 05:20:33
UTC 2012 i686
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law.
$ pwd
/home/bidon
$

Je me déconnecte de ce compte et je modifie depuis la console du root le shell par défaut de de l’utilisateur bidon.

root@arcadia:~# usermod -s /bin/MySecureShell bidon
root@arcadia:~#

Maintenant je me reconnecte avec PuTTY, ce qui donne ceci :
…..
Oui cela ne donne rien, car PuTTy ferme tout de suite sans établir de connexion.
Voyons si ssh dans la console Linux est plus bavard :

laurent@arcadia:~$ ssh bidon@localhost
bidon@localhost’s password:
Linux arcadia 2.6.32-5-686 #1 SMP Mon Mar 26 05:20:33
UTC 2012 i686
Debian GNU/Linux comes with ABSOLUTELY NO
WARRANTY, to the extent
permitted by applicable law.
Last login: Mon May 28 19:18:26 2012 from localhost
Shell access is disabled !Connection to localhost closed.
laurent@arcadia:~$

On voit bien l’alerte « Shell access is disabled !Connection to localhost closed » qu’on n’avait pas le temps de voir avec PuTTY. Avec MySecureShell, seule la connexion SFTP est autorisée, pas l’accès à la console SSH..

Tentons de nous connecter avec le shel Mysecureshell actif en utilisant Winscp depuis mon poste Windows.
En cas de besoin, vous avez d’autres exemples ici : http://mysecureshell.sourceforge.net/fr/examples.html

Ce qui nous donne :

Vous voyez que dans la fenêtre de droite, le serveur vous dit que vous êtes à la racine, or les fichiers .profile et consorts vous indiquent que vous êtes dans votre dossier personnel.
Vous ne pouvez pas remonter dans l’arborescence, ce qui est exactement ce que je souhaite.
Je remet le shell par défaut et je retente l’expérience afin de valider que mon compte est redevenu un compte « classique ».

root@arcadia:~# usermod -s /bin/bash bidon
root@arcadia:~#

Et cela donne ceci avec Winscp :

Le dossier qui vous accueille dans la fenêtre de droite est toujours votre dossier par défaut, mais cette fois, le serveur vous indique bien que vous êtes dans ce dernier et pas à la racine du serveur. Les « .. » peuvent vous permettre de remonter dans l’arborescence.

Au final, MySecureShell est un moyen simple de cloisonner vos utilisateurs sftp et c’est facilement « débrayable » en cas de besoin.

Le transfert de fichiers est crypté et votre arborescence du serveur protégée. Pas mal pour un soft installé en moins d’1 minute…

Pour info « userdel -r bidon » vous nettoiera le compte bidon qui a servi aux tests.

Amusez-vous bien avec MySecureShell, il y a plein d’options à découvrir que vous trouverez sur le site http://mysecureshell.sourceforge.net/fr/tags.html.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *