MySecureShell : ou comment chrooter simplement Sftp ?
Ftp n’est pas un protocole sécurisé pour le partage de fichiers, c’est un fait avéré. Pourtant ce protocole est très utilisé dans l’échange de données pour des raisons historiques et par la force de l’habitude.
Une des solutions est d’utiliser une de ses variantes le Sftp qui se repose sur le protocole Ssh. Sous linux il suffit d’installer openssh-server. Par défaut, l’utilisateur à accès aux autres dossiers du système et possède un accès Ssh.
Pour bloquer l’utilisateur dans son dossier personnel et restreindre l’accès Ssh au commande Sftp, il est usuel de mettre en place un environnement Sftp chrooté. La configuration de cette mise en place, sans être très compliquée, n’est pas des plus triviales.
Une alternative simple, mais que je ne vois pas souvent citée, est la mise en place de MySecureShell.
Installation
Ajout des dépôts de MySecureShell
nano /etc/apt/sources.list
... deb http://mysecureshell.free.fr/repository/index.php/debian testing main deb-src http://mysecureshell.free.fr/repository/index.php/debian testing main
Mise à jour de la liste de paquets et installation
apt-get update
apt-get install openssh-server mysecureshell
Configuration de sftp
nano /etc/ssh/sftp_config
Parmi les options, il faut modifier les suivantes :
... StayAtHome true #limit client to his home VirtualChroot true #fake a chroot to the home account
On redémarre le service
/etc/init.d/mysecureshell restart
Ajout d’un utilisateur toto
useradd -m -s /bin/MySecureShell toto
passwd toto
Conclusion
Nous avons créé un utilisateur toto qui peux venir déposer et télécharger des fichiers sur notre serveur de façon sécurisé. L’utilisateur est restreint uniquement à son répertoire personnel, et il lui est impossible de se connecter à une console.