Cours/atelier FTP.
Mise en oeuvre avec Filezilla Server.
Réponse AJAX

Présentation générale de FTP

Définition

FTP signifie File Transfer Protocol.

C'est un cousin des protocoles HTTP, SMTP, POP, IMAP, NNTP : comme eux, c'est un protocole Internet en sur-couche des protocoles TCP et IP.

En résumé, il permet de manipuler le contenu d'un disque dur distant : transférer des fichiers dans les deux sens, en supprimer, créer/supprimer des répertoires, etc.

Utilisation

Le protocole FTP et les logiciels associés sont utilisés notamment pour :

Alerte sur... la sécurité de votre mot de passe FTP

Si vous hébergez des sites Web, stockez très soigneusement le mot de passe FTP de votre hébergement.

En effet, une personne malveillante en possession de ce mot de passe pourra :

Dans ce cours/TP nous allons travailler avec le client FTP et le serveur FTP Filezilla (logiciels libres).

Citez un logiciel FTP client autre que Filezilla.

Votre réponse n°1

Citez un logiciel FTP serveur autre que Filezilla.

Votre réponse n°2

Installation d'un serveur FTP : Filezilla FTP Serveur

Filezilla FTP Serveur est l'un des serveurs FTP les plus répandus, il est open-source.

Il existe une version client et une version serveur. Nous allons installer ces deux versions et baser nos tests dessus.

Téléchargez et installez Filezilla FTP Server sur votre ordinateur (de préférence sur le votre serveur Windows Server virtualisé, pour une meilleure pérénité et une configuration personnalisée).

Vous remarquez que l'installation de Filezilla FTP Server est relativement simple, sauf les fenêtres suivantes :



Après avoir installé Filezilla Server, allez consulter la liste des processus dans le gestionnaire des tâches. Notez le nom du processus qui correspond à l'interface d'administration de Filezilla :

Votre réponse n°3

Allez consulter les services. Notez le nom du service qui correspond au serveur Filezilla :

Votre réponse n°4

En MS-DOS, quelle est l'option de la commande netstat qui permet d'afficher les ports d'écoute ?

Votre réponse n°5

Quelle est l'option de la commande netstat qui permet d'afficher les ports au format numérique, et non textuelle ?

Votre réponse n°6

Exécutez la commande netstat avec les deux options ci-dessus, filtrez les résultats en rajoutant | findstr LISTENING après la commande :
netstat options | findstr LISTENING
Collez ici le résultat obtenu :

Votre réponse n°7

Sur tous les ports ci-dessus, sur lequel votre ordinateur est à l'écoute, notez les deux ports écoutés par Filezilla Server.

Votre réponse n°8

Installez le client FTP Filezilla, ceci ne pose aucune difficulté.

Les ports utilisés par FTP

Le FTP a une particularité que n'ont pas la plupart des autres protocoles : il utilise deux connexions simultanément (et ce quel que soit le mode actif ou passif) :

De plus, le FTP utilise deux modes différents : le mode actif (le premier historiquement) et le mode passif (mis au point car le mode actif ne pouvait pas passer certains firewalls, ou routeurs NAT).

Le mode actif

Historiquement, c'est le premier mode de fonctionnement qui existait en FTP.

Dans ce schéma, on voit :

Le problème est que si le client est derrière un routeur NAT, le serveur n'arrivera pas à se connecter au client. Explications détaillées

Dans ce mode, et si le serveur FTP se trouve derrière un routeur NAT (comme chez vous derrière votre box), quel est le port (ou quels sont les ports) qui doivent faire l'objet d'une redirection (port forwarding) depuis la box vers le serveur ?

Votre réponse n°9

Le mode passif

Ce mode a été inventé car les serveurs FTP avaient du mal à initier une connexion vers les clients dont les pare-feux ne le permettaient pas, ou les clients derrière un routeur NAT (une box par exemple).

Dans ce schéma, on voit :

Dans ce mode, et si le serveur FTP se trouve derrière un routeur NAT (comme chez vous derrière votre box), quel est le port (ou quels sont les ports) qui doivent faire l'objet d'une redirection (port forwarding) depuis la box vers le serveur ?

Votre réponse n°10

Les options disponibles dans FileZilla FTP Server

Les options de Filezilla FTP Server se modifient à partir de l'interface d'administration du serveur :

La création d'utilisateurs

Pour créer les comptes d'utilisateurs dans Filezilla, on va dans Edit --> Users. C'est indispensable : par défaut aucun utilisateur n'est créé, et la connexion anonyme est désactivée. Le serveur est donc totalement inutilisable.

On peut alors :

Les autres options

Montrer les options disponibles, notamment : le mode passif, les fichiers log, les black-list, la connexion anonyme.

Pour les futurs réseaux, je recommande de maîtriser les options des serveurs FTP, par exemple en lisant un tutoriel Filezilla FTP Server, disponible à cette adresse : http://www.framasoft.net/article3738.html.

A vous de jouer

On va créer un compte d'utilisateur FTP avec son propre répertoire, sur lequel il aura les droits de lecture et d'écriture.

Il aura de plus accès en lecture seule à un répertoire commun, qui contient des outils partagés. On va devoir créer un alias pour partager ce répertoire.

Sur votre ordinateur, créez les répertoires C:\FTP\v_anonyme et C:\outils.

Sur votre serveur FTP, créez un utilisateur v_anonyme avec un mot de passe (bidon, car on va l'afficher en clair ensuite).

Faites de C:\FTP\v_anonyme son home dir et faites un alias depuis C:\FTP\v_anonyme\outils vers D:\outils.

Vérifiez que tout marche (vous arrivez à vous connecter depuis Filezilla vers Filezilla serveur, avec cet utilisateur, vous arrivez dans un répertoire où vous voyez le sous-répertoire outils.

Lorsque ça marche, collez ici une capture d'écran de la rubrique Shared folders de la fenêtre Edit -> Users.

Votre réponse n°11

Problèmes de sécurité

Lorsque vous vous authentifiez auprès d'un serveur FTP, votre login et votre mot de passe sont envoyés en clair sur Internet. Ce problème de sécurité potentiel sera réglé avec le FTPS (FTP sécurisé) qu'on verra plus bas.

Grâce à Wireshark, interceptez les paquets échangés entre le client et le serveur FTP. Collez ici le résumé de la ligne qui contient votre mot de passe en clair :

Votre réponse n°12

TFTP

TFTP signifie Trivial File Transfer Protocol.

Il est simplifié (pas de listage de fichiers, pas d'authentification, etc.), donc plus léger que FTP et du coup très utilisé pour la mise à jour des firmwares de box, de routeurs, etc.

Wikipedia

FTPS

C'est le FTP sécurisé par le protocole SSL/TLS.

Au lieu d'utiliser le port 21, le FTP sécurisé (dit implicite) utilise le port 990. A l'inverse, le FTP Sécurisé explicite utilise toujours le port 21.

Démonstration :

Sur Internet, trouvez la différence de fonctionnement entre le FTPS implicite et le FTPS explicite, et expliquez-là ici :

Votre réponse n°13

Sur Internet, trouvez le rapport entre SSL et TLS, et expliquez-le ici :

Votre réponse n°14

Allez dans la rubrique SSL/TLS Settings des options de votre serveur. Générez un certificat en remplissant toutes les options demandées. Remarquez que la dernière option est importante : vous choisissez où est enregistré le certificat.

Quelle est l'extension du fichier ainsi généré ? (s'il n'a pas d'extension, cherchez quelle est l'extension pour les certificats de sécurité et ajoutez-là) :

Votre réponse n°15

Activez le "FTP over SSL/TLS", renseignez le fichier du certificat de sécurité dans les deux cases suivantes (Private key file et Certificate file). Validez.

Grâce à la commande MS-DOS netstat -an | findstr LISTENING, repérez le nouveau port sur lequel votre ordinateur est à l'écoute et notez-le ici :

Votre réponse n°16

La commande FTP du MS-DOS

MS-DOS possède une commande FTP qui permet de rentrer dans un mode où on va taper à la main les commandes.

Par exemple, voici une connexion à mon serveur FTP, listage du répertoire d'accueil et récupération d'un fichier :

C:\>ftp
ftp> open cours.sebastien-pastore.com
Connecté à spas.homedns.org.
220-FileZilla Server version 0.9.31 beta
220-written by Tim Kosse (Tim.Kosse@gmx.de)
220 Please visit http://sourceforge.net/projects/filezilla/
Utilisateur (spas.homedns.org:(none)) : spastore
331 Password required for spastore
Mot de passe : ...
230 Logged on
ftp> dir
200 Port command successful
150 Opening data channel for directory list.
drwxr-xr-x 1 ftp ftp              0 Jan 25 16:01 cours.sebastien-pastore.com 
drwxr-xr-x 1 ftp ftp              0 Dec 21 19:01 films.sebastien-pastore.com
drwxr-xr-x 1 ftp ftp              0 Oct 06  2011 www.le-club-de-audrey.fr
drwxr-xr-x 1 ftp ftp              0 Sep 22  2010 www.my-dogs.fr
-rw-r--r-- 1 ftp ftp         108256 Apr 20  2010 watermark.png
226 Transfer OK
ftp : 1565 octets reçus en 0,08 secondes à 20,06 Ko/sec.
ftp> GET watermark.png
200 Port command successful
150 Opening data channel for file transfer.
226 Transfer OK
ftp : 108256 octets reçus en 1,28 secondes à 84,51 Ko/sec.
ftp> quit
221 Goodbye
C:\>_

Quand on est en mode FTP, la commande HELP permet de voir toutes les commandes FTP accessibles.

C:\>ftp
ftp> help
Les commandes peuvent être abrégées. Ces commandes sont :

!               delete          literal         prompt          send
?               debug           ls              put             status
append          dir             mdelete         pwd             trace
ascii           disconnect      mdir            quit            type
bell            get             mget            quote           user
binary          glob            mkdir           recv            verbose 
bye             hash            mls             remotehelp
cd              help            mput            rename
close           lcd             open            rmdir
ftp>
C:\>_