Serveur SFTP : MySecureShell

À propos de MSS

MySecureShell (MSS) est un logiciel s'appuyant sur le chiffrement de SSH et sur son FTP sécurisé "sftp-server". MySecureShell est un shell qui permet d'ajouter plusieurs fonctionnalités à sftp-server et qui se rapproche des grands serveurs FTP tel que ProFtpd. Les avantages de MySecureShell sont qu'il s'appuie sur le protocole sécurisé SSH et qu'il permet un chiffrement complet des données et des requêtes émises. Il est très simple à installer, à utiliser et hautement configurable.

Site officiel : http://mysecureshell.sourceforge.net/
Pour plus d'aide un forum est disponible.

Le forum n'est plus utilisé. Rendez-vous sur github directement.

Pourquoi installer MySecureShell (sftp - Secure File Transfert Protocol) au lieu d'un serveur FTPS (File Transfert Protocol over SSL) ?

Voici les différentes motivations d'un tel choix :

  • Simplicité d'installation.
  • Puissance de chiffrement d'OpenSSH qui est développé pour la protection des données (shell distant).
  • Pas de problèmes de certificat non-certifié (car payant pour qu'il soit certifié authentique) ou de génération de certificat.
  • Support des clefs privées et publiques pour une authentification sans mot de passe.
  • Un unique port à ouvrir pour le SSH et SFTP (port 22 par défaut).
  • Clients disponibles également sous Windows (Filezilla par exemple)
  • C'est une question de choix qui ne coûte rien si l'on veut essayer.

Mais alors pourquoi ne pas utiliser un client SCP ?

Le problème vient du compte créé pour l'utilisateur qui doit utiliser un shell valide pour se connecter au serveur à l'aide d'un logiciel SCP. Ce choix implique l'existence d'une grande confiance en l'utilisateur. Avec MySecureShell, le client n'est pas obligé de posséder un shell valide qui pourrait nuire a la sécurité du serveur.

Installation de MSS

Prérequis : Le paquet openssh-server doit être installé.

Pour en savoir plus sur SSH vous pouvez lire cette documentation.

J'ai choisi de vous montrer deux méthodes d'installation, le paquet deb et le script.

Avec le paquet deb

Rajoutez ceci dans votre fichier /etc/apt/sources.list :

deb http://mysecureshell.free.fr/repository/index.php/ubuntu/12.04 testing main
deb-src http://mysecureshell.free.fr/repository/index.php/ubuntu/12.04 testing main

Pour importer la signature GPG du repository, il faut exécuter les commandes suivantes:

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

Il est possible d'avoir des problèmes de permissions pour créer des fichiers temporaires dans .gnupg. Dans ce cas, essayer avec un sudo en plus (après le ";"):

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

Mettez ensuite à jour votre liste de packages :

sudo apt-get update

Et installer :

sudo apt-get install mysecureshell

Installation

Pour l'installer, c'est maintenant très simple :

dpkg -i mysecureshell_xxx.deb

Gestion des utilisateurs

Créer maintenant les utilisateurs autorisés à faire du sftp et autorisés à ne faire que du sftp. Pour fixer les idées, je vais créer l'utilisateur toto et lui attribuer comme dossier personnel /home/toto :

sudo adduser --home /home/toto --shell /usr/bin/mysecureshell toto

Mais il y a plus simple, l'outil graphique vous permet désormais de gérer les clients ! :-)

FIXME La boîte de dialogue de gestion des utilisateurs est vide dans MSS 1.6…Il faut se résigner à éditer à la main /etc/ssh/sftp_config.

ou :

Créer les groupes et utilisateurs que vous souhaitez pour une utilisation du serveur sftp. Une fois créé vous allez devoir éditer le fichier "/etc/passwd" en tant que root. Ensuite placez vous sur les "shells" des utilisateurs que vous voulez intégrer au serveur sftp et remplacez le "shell" existant (ex: /bin/sh) par "/bin/MySecureShell". Ceci:

msstest:x:1006:500:MMS Testing:/home/sftpusers/msstest:/bin/sh

est à remplacer par:

msstest:x:1006:500:MMS Testing:/home/sftpusers/msstest:/bin/MySecureShell

Enregistrez et quittez.

Connexion au serveur sftp

Les tests qui suivent sont fait avec le programme lftp. Il est normalement présent par défaut dans les distributions Ubuntu. Dans le cas contraire, il suffit d'installer le paquet lftp.

D'autres clients comme FileZilla, sftp et Gftp gèrent aussi le sftp.

Tester en local

$ lftp sftp://toto@localhost

Après avoir entré le mot de passe, vous devriez obtenir ceci :

$ lftp toto@localhost:~>

En cas de problème vérifier que le fichier sftp-server_MSS se trouve bien dans le répertoire /usr/lib/openssh/ . Si ce n'est pas le cas vous pouvez le copier à partir de /usr/lib/

Tester en réseau

Le port 22/TCP doit être ouvert.
$ lftp sftp://toto@IP_du_Serveur

Si vous obtenez l'invite ci-dessous c'est que ça marche.

Code:

$ lftp toto@IP_du_Serveur:~>

Pour plus de renseignements sur lftp

$ man lftp

Paramétrage avec l'outil graphique java

L'environnement Java doit être installé dans votre système.

Télécharger l'outil graphique sur le site officiel et taper dans un terminal ce qui suit:

Vous devez d'abord éditer le fichier /etc/ssh/sftp_config et y ajouter

<User toto>
    IsAdmin    true
</User>

en remplacant toto par votre nom d'utilisateur

unzip -d MSS_Frontend MSS_Frontend_v*.zip
cd MSS_Frontend
sudo java -jar sftp-mss.jar

et vous obtiendrez,

  • Sftp-Who : permet de savoir qui est connecté et de pouvoir déconnecter n'importe quel utilisateur.
  • Sftp-State : permet d'activer ou de désactiver le serveur SFTP et de vérifier son état.
  • Config : permet de faire la configuration du serveur.
  • Log : vous pouvez voir tout ce qui se passe et s'est passé sur votre serveur.
  • Connexion distante : c'est avec cet onglet que vous allez pouvoir administrer à distance votre serveur MySecureShell.
  • Paramètres : Cet onglet permet la localisation de certains fichiers et le choix du langage de l'interface graphique.

Lanceur

FIXME

smeg est introuvable dans les dépôts depuis Feisty; indiquer la source

Pour plus de convivialité vous pouvez créer un lanceur grâce à Smeg.

smeg

Et créer une entrée comme suit,

Paramétrage manuel

Vous souhaitez configurer et administrer votre serveur manuellement, c'est bien sûr possible.

sftp_config

MSS possède son propre fichier de paramétrage, sftp_config.

$ sudo nano /etc/ssh/sftp_config  

Les modifications sont immédiates. Voici toutes les directives que vous pourrez utiliser :-).

Cette documentation devrait grandement vous aider.

(en particulier, modifiez l'encodage ISO-8859-15 par UTF8)

sshd_config

La configuration d'Openssh-server se trouve dans le fichier sshd_config.

$ sudo nano /etc/ssh/sshd_config

Toute modification ne sera prise en compte qu'après un redémarrage du serveur.

$ sudo /etc/init.d/ssh restart

Sécurité

Utilisation des clefs SSH

Dans le cas ou vous devez administrer de multiples serveurs, retaper à chaque fois son mot de passe est pénible surtout quand on est déjà logué sur une machine sûre.

Le sujet a déjà été développé sur les pages suivantes que je vous invite à lire:

Se protéger contre le SSH Brute Force

Généralement les mots de passe de la plupart des logiciels sont stockés chiffrés dans un fichier. Pour obtenir un mot de passe, il suffit de récupérer ce fichier et de lancer un logiciel de brute force cracking. Ce procédé consiste à tester de façon exhaustive toutes les combinaisons possibles de caractères (alphanumériques + symboles), de manière à trouver au moins un mot de passe valide. Cette attaque se base sur le fait que n'importe quel mot de passe est crackable. Ce n'est qu'une histoire de temps. Mais la puissance des machines double tous les deux ans. De plus, les crackers n'hésitent pas à fabriquer des cartes électroniques de cracking, ce qui améliore en conséquence la rapidité de la machine, et donc les chances de trouver un mot de passe valide. En général, cette méthode est empruntée lorsque la méthode du dictionary cracking a échoué.

Pour se faire lire :

mysecureshell_sftp-server 2006/03/04 16:55

P.S.: Ne gère pas les utilisateurs virtuels, ce qui est logique en SSH. Un utilisateur virtuel, c'est un utilisateur qui ne possède pas de dossier personnel dans le répertoire "/home". Un utilisateur virtuel peut être lié à un autre compte déjà existant et télécharger vers lui des données, mais ne pourra pas en envoyer sur le serveur sftp, peu importe les droits qu'on lui attribuera au moyen de la configuration de MySecureShell. Pour des droits d'accès complet, il faut absolument que l'utilisateur possède son répertoire dans "/home".

fail2ban permet de se protéger contre le brute-force du serveur SSH en bloquant les demandes en provenance d'une adresse IP qui a déjà émis trop de demandes. Les seuils (durée, nombre de requêtes) sont personnalisables.


Contributeurs : arvin

  • mysecureshell_sftp-server.txt
  • Dernière modification: Le 28/04/2018, 11:15
  • (modification externe)