SFTP & RSSH : Créer un serveur de fichiers sécurisé
Le SFTP permet de transfèrer des fichiers par une connexion sécurisée utilisant le protocole SSH. SFTP peut effectuer les mêmes opérations que FTP. Il est important de noter que le SFTP n'est pas une simple connexion FTP passant par un tunnel SSH. 2 commandes sont utilisées : sftp du côté client, et sftp-server du côté du serveur. RSSH est un shell qui va faciliter et sécuriser d'avantage l'utilisation du SFTP.
Installation des logiciels
Installation de OpenSSH
OpenSSH est installé nativement sur les principales distributions Linux. Il doit être installé sur la machine cliente et serveur. Si vous n'avez aucune idée de ce qu'est le SSH, lisez préalablement cet article : Reseau-secu-ssh. Si OpenSSH n'est pas installé sur votre ordinateur, lisez cet article : SSH2 Rapellons que OpenSSH embarque sftp-server (commande serveur) et sftp (commande cliente).
Installation de RSSH
Rssh est un shell restreint qui va sécuriser et faciliter l'utilisation du SFTP. Grâce à RSSH, l'utilisateur distant pourra uniquement échanger, supprimer, modifier des fichiers : il ne pourra executer de commandes à distance, susceptibles d'exploiter des failles de sécurité.
- Sur Mandriva : # urpmi rssh
- Sur Debian : # apt-get install rssh
Pour les autres, téléchargez les sources disponibles ici pour compilez-les :
$ cd rssh-xxx
$ ./configure --orefix=/usr --sysconfdir=/etc
$ make
$ su
# make install
Configuration du serveur
Configuration de rssh
Rssh est un shell (restreint). Il faut donc s'assurer qu'il soit présent dans le fichier /etc/shells :
Si il n'est pas présent, ajouter la ligne suivante au fichier à l'aide de votre éditeur de texte favori :
/usr/bin/rssh
Il faut maintenant éditer le fichier de configuration de rssh :
On déplace le fichier de configuration présent, puis on en créé un vide :
# touch /etc/rssh.conf
On édite le nouveau fichier /etc/rssh.conf en le remplissant comme ceci :
logfacility = LOG_USER
allowsftp
umask = 022
Maintenant, le shell rssh se limitera à l'utilisation du sftp.
Chroot de la connexion SFTP
Cette partie s'adresse à ceux qui veulent chrooté la connexion SFTP. Pour les autres, passez directement à l'étape suivante. Le Chroot permettra ici de restreindre l'accès d'un utilisateur (pour en savoir plus, lisez le préambule de l'article Admin-admin env-chroot). Par exemple, on décide de chrooter un utilisateur dans /home : cet utilisateur verra /home comme son répertoire racine, et ne pourra aller au-delà. L'inconvénient de cette manière, c'est que tout les fichiers nécessaires doivent être inclus dans le dossier chrooté.
Préparation du dossier chrooté
Ici, on chrootera l'utilisateur dans le répertoire /home. Si vous vous êtes déjà familiariser avec le chroot, vous savez qu'il faut non seulement copier les executables nécessaires, mais en plus les librairies qui correspondent, ce qui devient un travail fastidieux ... . Voici les executables à copier : sftp, scp, rssh, rssh_root_helper, sftp-server. Ca fait beaucoup ... et pour vous faire gagner du temps, nous allons utiliser un script qui nous permettra d'automatiser la tâche ! Placez-vous dans le répertoire /home.
On télécharge le fichier mkdep, puis on lui attribue le droit d'exécution :
$ chmod +x mkdep
Ce script provient de cette page. J'ai modifié le script pour le rendre plus accessible en ligne de commande.
mkdep permet de copier automatiquement un fichier donné ainsi que ses librairies dans le dossier chrooté cible :
./mkdep <fichier à copier> <dossier chrooté>