Serveur FTP sécurisé avec openssh accessible en SFTP

Vous aimeriez partager des fichiers avec vos amis , mais ne vous faîtes pas à l’idée que toute personne entre votre machine et celles de vos amis peut intercepter vos données.

C’est effectivement le cas lorsque l’on utilise des protocoles comme FTP ou HTTP : les informations comme le mot de passe, les entêtes de vos fichiers, etc, transitent en clair .
Heureusement, OpenSSH, le logiciel serveur libre SSH (qui permet de se logguer dans un terminal à distance en sécurisé) sous Linux implémente des fonctions de copie de fichiers.
Pré requis :

Je suppose que vous utilisez Debian ou Ubuntu (si ce n’est pas le cas, remplacez les « apt-get install » par « urpmi » ou autres).
Vous devez aussi avoir installé le serveur SSH (sshd).

On commence par Installer scponly :

# apt-get install scponly
Il vous demande si vous voulez créer le fichier dans /usr/sbin/scponlyc, répondez oui, çà vous permettra de créer des cages (chroot) dans la home de nouveaux utilisateurs.
On crée un nouvel utilisateur avec uniquement les droits de copie de fichiers dans sa home

Maintenant, nous allons créer un nouvel utilisateur sur le système , qui n’aura le droit de se connecter sur la machine que pour transférez des fichiers, et ce uniquement dans son arborescence (en utilisant chroot pour créer une cage dans son répertoire).
Heureusement, les maintainers du paquet scponly nous facilite la vie avec un script déjà tout fait.
Allez dans /usr/share/doc/scponly/setup_chroot (si vous n’avez pas Debian faîtes un find pour retrouver ce script shell), décompactez l’archive (qui a pour extension .gz) en faisant un gunzip. # gunzip setup_chroot.sh.gz Rendez le fichier décompacté exécutable :
# chmod +x setup_chroot.sh
exécutez le :
./setup_chroot.sh
Il vous demande de donner le login du nouvel utilisateur, son home directory, (et son sous répertoire d’écriture si vous désirez en créer un) et son mot de passe.

S’y connecter

Une fois ces détails renseignés, votre nouvel utilisateur pourra se connecter à votre système (sur le port 22 par défaut, celui de ssh) pour transférer des fichiers de ou vers son répertoire sur votre machine en utilisant le protocole sécurisé SSH (et le serveur sftp server, couche de transferts de fichiers de SSH).
Par exemple, votre ami pourra utiliser l’excellent filezilla sous windows ou sftp sous Linux.

Conclusion

L’intérêt d’utiliser scponly en plus de sshd, est que votre utilisateur nouvellement créé ne pourra pas se promener sur votre système de fichiers (à part dans sa home) et ne pourra non plus exécuter du code, car son shell est scponly, qui ne permet que les commandes à bases de scp (cp entre 2 machines connectées en ssh).
Il existe d’autres moyens de donner accès à un serveur de fichiers en mode sécurisé (je pense notamment à l’utilisation de FTP-SSL) mais ils sont beaucoup moins faciles à mettre en ouevre (il faut créer un certificat de sécurité et bien connaître les configs ProFTPD et consorts).
J’ai rédigé cet article après avoir pris connaissance de scponly dans le numéro de Juillet/Aout 2005 de Linux Magazine (dans le Debian corner).