SFTP : Transfert de fichiers sécurisé
07 Jun. 2011
- Auteur : DarkRaziel
- Responsable : paulriluma
- Score ( voter ) :



- Connexes : Même auteur | Même responsable | Historique
1. Installation des logiciels nécessaires
1.1 Installation d'OpenSSH
Sur la machine cliente et sur la machine serveur installez SSH comme indiqué installation de SSH1.2 Installation de rssh
rssh est un shell restreint qui s'utilise avec OpenSSH et permet de faire uniquement du scp ou du sftp.- Les utilisateurs de Mandriva, tapez : # urpmi rssh
- Les utilisateurs de Fedora, tapez : # yum install rssh
- Les utilisateurs de Debian, tapez : # apt-get install rssh
- Pour les autres :
$ tar -xzvf /où_est/rssh-xxx.tar.gz
$ cd rssh-xxx/
$ ./configure --prefix=/usr --sysconfdir=/etc
$ make
$ su
# make
2. Configuration du serveur
2.1 Fichier de configuration
Editez le fichier /etc/shells et assurez-vous d'avoir la ligne suivante :
/usr/bin/rssh
Nettoyez votre fichier /etc/rssh.conf comme suite :
# cd /etc/
# mv rssh.conf rssh.conf.old
# sed /^#/d rssh.conf.old > rssh.conf
Maintenant éditez-le avec votre éditeur favori et assurez-vous qu'il ressemble à ceci :
logfacility = LOG_USER allowsftp umask = 022
2.2 Chroot de l'environnement
Cette partie concerne les personnes qui souhaitent chrooter leurs utilisateurs. Si ce n'est pas votre cas, passez au 2.3. Le chroot est une technique qui permet de déplacer la racine du système pour enfermer l'utilisateur dans un dossier. Dans notre cas ce sera "/home". L'avantage de cette technique est que toutes les actions des utilisateurs du sftp n'auront d'impact que sur cet univers clos. Mais pour que ça fonctionne il faut que tout ce dont auront besoin les utilisateurs soit accessible dans cet univers. Préparons maintenant le chroot en copiant les exécutables dont auront besoin les utilisateurs du sftp dans le dossier "/home".
# cd /home
# mkdir -p usr/bin
# cp /usr/bin/sftp usr/bin
# cp /usr/bin/scp usr/bin
# cp /usr/bin/rssh usr/bin
# mkdir -p usr/libexec
# cp /usr/libexec/rssh_chroot_helper usr/libexec
# cp /usr/libexec/sftp-server usr/libexec
# mkdir lib
# mkdir usr/lib
Les exécutables peuvent ne pas être à ces endroits chez vous, alors adaptez ! Déterminons maintenant les dépendances de sftp :
# ldd /usr/bin/sftp
Vous devrez avoir quelque chose comme ceci (il peut y avoir des variations) :
linux-gate.so.1 => (0xffffe000)
libresolv.so.2 => /lib/libresolv.so.2 (0x4002d000)
libcrypto.so.0 => /usr/lib/libcrypto.so.0 (0x40041000)
libutil.so.1 => /lib/libutil.so.1 (0x40140000)
libz.so.1 => /usr/lib/libz.so.1 (0x40144000)
libnsl.so.1 => /lib/libnsl.so.1 (0x40155000)
libcrypt.so.1 => /lib/libcrypt.so.1 (0x4016b000)
libc.so.6 => /lib/libc.so.6 (0x40199000)
libdl.so.2 => /lib/libdl.so.2 (0x402b7000)
/lib/ld-linux.so.2 (0x40000000)
Vous devez copier les dépendances qui sont dans /lib dans /home/lib et celles de /usr/lib dans /home/usr/lib en respectant l'arborescence. Un exemple :
# cd /home
# cp /lib/libresolv.so.2 lib/
Quand vous aurez, fini vous devrez taper :
# ldd /usr/bin/rssh
# ldd /usr/libexec/rssh_chroot_helper
# ldd /usr/libexec/sftp-servers
# ldd /usr/bin/scp
et copier toutes les dépendances correspondantes dans /home, comme vous l'avez fait pour /usr/bin/sftp. Finissez en ajoutant la ligne :
chrootpath="/home"à la fin du fichier /etc/rssh.conf.
2.3 Gestion des utilisateurs
Créez 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 :
# adduser --home /home/toto --shell /usr/bin/rssh toto
Vérifier que l'utilisateur toto a bien rssh comme shell :
# su - toto
Vous devriez avoir quelque chose comme ça :
This account is restricted to sftp only.
If you believe this is in error, please contact your system administrator
3. Connexion au serveur sftp
Vous pouvez tester en local :
$ sftp toto@localhost
Après avoir entrer le mot de passe, vous devriez obtenir ceci :
sftp>
Et tester en réseau :
$ sftp toto@IP_du_Serveur
Si vous obtenez l'invite sftp> , c'est gagné ! sinon vérifiez que vous avez bien copié toutes les dépendances dans l'environnement de chroot. Si vous ne souhaitez plus utiliser l'environnement chrooté, il suffit d'enlever la ligne :
chrootpath="/home"du fichier /etc/rssh.conf.
4. Utilisation de sftp
Pour vous connecter, à un PC distant, il suffit de taper :
$ sftp toto@IP_du_Serveur
Une fois connecté :
- Pour uploader un fichier : sftp> put le_fichier
- Pour downloader un fichier : sftp> get le_fichier
- help : permet de lister les commandes disponibles
- quit : pour quitter la session en cours
- get : récupère un fichier présent sur le serveur FTP et le place sur votre machine
- put : transfère un fichier de votre disque dur vers le serveur
- ls : permet de lister le contenu du répertoire courant côté FTP
- cd : permet de se déplacer dans l'arborescence du FTP
- pwd : affiche le nom du répertoire courant sur le FTP
- delete et rm : effacent un fichier sur le FTP
- mkdir : créé un répertoire sur le FTP