NE316 TP4 le protocole FTP

Transcription

NE316 TP4 le protocole FTP
3°A EIS App
NE316 TP4 le protocole FTP
1. L’outil FTP :
Le serveur FTP est implanté sur le PC à l’adresse 192.168.130.90
Pour s’identifier on utilise le login « guest » et le mot de passe « secret ».
Le protocole FTP fonctionne sur ce principe :
Le protocole FTP s'inscrit dans un modèle
client-serveur, c'est-à-dire qu'une machine
envoie des ordres (le client) et que l'autre
attend des requêtes pour effectuer des actions
(le serveur).
Lors d'une connexion FTP, deux canaux de
transmission sont ouverts :
•
•
Un canal pour les commandes (canal de
contrôle)
Un canal pour les données, uniquement
ouvert lors d’un transfert de données.
Le protocole FTP
2. Le protocole ftp :
1) Option « debug » et « verbose » :
Verbose :
Permet d’Activer/désactiver le mode bavard. Dans le mode bavard (verbeux), toutes les réponses
du serveur FTP sont montrées à l'utilisateur. De plus, quand un transfert de fichier est terminé, des
statistiques concernant l'efficacité du transfert sont affichées. Par défaut, le mode bavard est activé.
Debug [valeur-débogage ]
permet d’Activer/désactiver le mode de débogage. Si la valeur optionnelle valeur-débogage est spécifiée,
elle sera utilisée pour définir le niveau de débogage. Quand le débogage est activé, ftp affichera toutes les
commandes envoyées à la machine distante en les préfixant par la chaîne de caractères « --> ».
Si on active les 2 modes, « debug » permet de voir les messages au serveur FTP, et « verbose » permet de lire
les réponses renvoyées par le serveur FTP.
a)
Ouvrir la session.
ftp> open 192.168.130.90
Connected to 192.168.130.90.
220 ProFTPD 1.3.0 Server (Debian) [::ffff:192.168.130.90]
ftp: setsockopt: Bad file descriptor
Name (192.168.130.90:root): guest
---> USER guest
331 Password required for guest.
Password:
---> PASS XXXX
230 User guest logged in.
---> SYST
215 UNIX Type: L8
Remote system type is UNIX.
Using binary mode to transfer files.
On ouvre la connexion au serveur grâce à la commande open 192.168.130.90 ou directement quand on tape ftp
192.168.130.90.
Le serveur FTP nous répond 220, ensuite le client donne son nom d’utilisateur avec la commande FTP USER. Le
serveur répond 331, puis le client donne son mot de passe PASS. Le serveur répond 230.
SYST est une commande qui permet de connaître le type de système utilisé par le serveur. Il répond avec le code
215.
a)
Changer de répertoire.
ftp> cd TOTO
---> CWD TOTO
250 CWD command successful
On change de répertoire grâce à la commande cd <nom du répertoire>. La commande envoyée au serveur FTP est
CWD <nom du répertoire>. Il nous répond 250 CWD Command successful.
b) Créer un répertoire.
ftp> mkdir jeje
---> MKD jeje
257 "/home/guest/TOTO/ jeje " - Directory successfully created
On crée un répertoire grâce à la commande de l’interface graphique mkdir <nom du répertoire>. La vraie commande
envoyée au serveur FTP est MKD <nom du répertoire>. Il nous répond 257 "/home/guest/ TOTO/ jeje " - Directory
successfully created.
c)
Supprimer un fichier ou répertoire.
ftp> rmdir jeje
---> RMD jeje
250 RMD command successful
On supprime un répertoire grâce à la commande rmdir <nom du répertoire>. La commande envoyée au serveur FTP
est RMD <nom du répertoire>. Il nous répond 250 RMD command successful.
d) Renommer un fichier ou répertoire.
ftp> rename jeje ted
---> RNFR jeje
350 File or directory exists, ready for destination name.
---> RNTO ted
250 Rename successful
On renomme un répertoire grâce à la commande rename <nom du répertoire>. Il y a deux commandes pour
renommer un fichier.
La première commande RNFR <nom du répertoire> indique le répertoire à modifier. Le serveur répond 350
File or directory exists, ready for destination name.
La seconde commande RNTO <nouveau nom de répertoire> indique le nouveau nom à donner au répertoire.
Le serveur répond 250 Rename successful.
e) Fermer la session.
ftp> close
---> QUIT
221 Goodbye.
On ferme la session grâce à la commande close <nom du répertoire>, la commande envoyée au serveur FTP est
QUIT. Il nous répond 251 Goodbye.
f)
Faire un ls.
ftp> ls
---> PORT 192,168,130,30,128,245
200 PORT command successful
---> LIST
150 Opening ASCII mode data connection for file list
drwxr-xr-x 3 guest guest
4096 Jun 19 07:32 TOTO
drwxr-xr-x 2 guest guest
4096 Jun 19 07:19 dte
drwxr-xr-x 2 guest guest
4096 Jun 19 07:15 fabius
-rw-r--r-- 1 guest guest
41 Jun 19 07:31 fichieratransferer
drwxr-xr-x 11 guest guest
4096 Jun 19 07:35 gauthier
drwxr-xr-x 2 root root
4096 Jun 19 07:06 répertoires
226 Transfer complete.
On affiche le contenu du serveur grâce à la commande ls, la commande envoyée au serveur FTP est divisée en deux
commandes.
Première commande : PORT 192,168,130, 30,128,245. Le client donne le port et l’adresse IP au serveur pour qu’il
ouvre le canal DATA.
Il répond 200 PORT command successful.
La seconde commande LIST demande la liste des fichiers et des répertoires au serveur FTP.
Il nous répond 150 avec la liste des fichiers et des informations comme la date, l’heure, le nom du créateur et les
droits sur le fichier.
g) Rapatrier un fichier.
ftp> recv fich1.txt
local: fich1.txt remote: fich1.txt
---> TYPE I
200 Type set to I
---> PORT 192,168,130, 30,129,2
200 PORT command successful
---> RETR fich1.txt
150 Opening BINARY mode data connection for fich1.txt (2222 bytes)
226 Transfer complete.
2222 bytes received in 0.00 secs (1575.8 kB/s)
On rapatrie un fichier grâce à la commande recv, la commande envoyée au serveur FTP est divisée en trois
commandes.
La première commande TYPE I envoyée par le client donne le format dans lequel le serveur doit envoyer les fichiers
Binaires (TYPE A format ASCII).
Le serveur répond 200 Type set to I.
Deuxième commande : PORT 192,168,130, 30, 29,2. Le client donne le port et l’adresse IP au serveur pour qu’il
ouvre le canal de données.
Le serveur répond 200 PORT command successful.
La seconde commande RETR <fichier à retirer> demande au serveur d’envoyer le fichier.
Le serveur répond 150 avec des informations sur le fichier comme le mode de transfert ou la taille.
Le serveur répond quand le transfert est terminé 226 Transfer complete.
h) Déposer (put) un fichier.
ftp> put fich1.txt
local: fich1.txt remote: fich1.txt
---> PORT 192,168,130,30,129,6
200 PORT command successful
---> STOR fich1.txt
150 Opening BINARY mode data connection for fich1.txt
226 Transfer complete.
2222 bytes sent in 0.00 secs (8749.7 kB/s)
On dépose un fichier grâce à la commande put, la commande envoyée au serveur FTP est divisée en deux
commandes.
Première commande : PORT 192,168,130,30, 29,2. Le client donne le port et l’adresse IP au serveur pour qu’il ouvre
le canal DATA.
Le serveur répond 200 PORT command successful.
La seconde commande STOR <fichier à retirer> demande au serveur d’envoyer le fichier.
Le serveur répond 150 avec des informations sur le fichier comme le mode de transfert ou la taille.
Le serveur répond quand le transfert est terminé 226 Transfer complete.
i) Faire un rapatriement multiple (mget).
ftp> mget
(remote-files) fich1.txt fich2.txt
---> TYPE A
---> PORT 192,168,130,30,1,9
---> NLST fich1.txt
---> PORT 192,168,130, 30,129,10
---> NLST fich2.txt
mget fich1.txt? yes
---> TYPE I
200 Type set to I
---> PORT 192,168,130,30,129,12
200 PORT command successful
---> RETR fich1.txt
150 Opening BINARY mode data connection for fich1.txt (2222 bytes)
226 Transfer complete.
2222 bytes received in 0.00 secs (6954.9 kB/s)
mget fich2.txt? yes
---> PORT 192,168,130, 30,129,13
200 PORT command successful
---> RETR fich2.txt
150 Opening BINARY mode data connection for fich2.txt (1530 bytes)
226 Transfer complete.
1530 bytes received in 0.00 secs (2078.1 kB/s)
On fait un rapatriement de fichier multiple grâce à la commande MGET, on donne comme paramètre le nom des
fichiers et le client nous demande de valider chaque fichier. Pour chaque fichier, le client envoi le numéro de port sur
lequel il va récupérer le fichier, puis il demande le téléchargement du fichier
2) Différence entre les types de message A et I :
Ce type de message apparaît lors d’échanges de données sur le canal DATA. Il permet de dire
comment le fichier va être transmis. En ASCII ou en Binaire si il y a plusieurs fichiers. Comme pour le TFTP le
binaire est fait pour les images.
Type A : Passage du fichier en mode ASCII.
Type I: Passage du fichier en mode Binaire.
3) Transfert de fichiers et liste de répertoire :
Les transferts de fichiers et liste de répertoire se font par le second canal de données.
Avant le transfert, le client envoi avec le msg PORT, le port de destination pour les données.
La commande PORT correspond au mode actif.
Exemple :
PORT 192,168,130,30,129,9
Adresse IP de la machine du client : 192.168.130.30
Le numéro du Port est donné : 129,9.
Pour le calculer il faut faire le calcul suivant :
129 x 256 + 9 = 33033 = numéro du port du canal DATA.
Donc le serveur connaît la machine avec l’adresse IP et connaît le port sur lequel il doit se connecter pour
envoyer les données.
4) Mode passif :
Le serveur FTP détermine lui-même le port de connexion à utiliser pour permettre le transfert des données
(data connexion) et le communique au client. L'avantage de ce mode, est que le serveur FTP n'initialise
aucune connexion. Ce mode fonctionne sans problèmes avec une passerelle NAT.
Mode actif: c'est le client FTP qui détermine le port de connexion à utiliser pour permettre le transfert des
données. Ainsi, pour que l'échange des données puisse se faire, le serveur FTP initialisera la connexion de son
port de données (port 20) vers le port spécifié par le client. De plus, il peut s'avérer problématique pour les
utilisateurs essayant d'accéder à des serveurs FTP lorsqu'ils sont derrière une passerelle NAT. Étant donnée
la façon dont fonctionne le NAT, le serveur FTP lance la connexion de données en se connectant à l'adresse
externe de la passerelle NAT sur le port choisi. Certaines passerelles NAT n'ayant pas de correspondance
pour le paquet reçu dans la table d'état, le paquet sera ignoré et ne sera pas délivré au client.
Le principal intérêt du mode passif est que plusieurs client ne peuvent pas avoir le canal DATA sur le même
port car c’est le serveur qui les déterminent pour chacun.
5) Commande newer :
La commande newer est équivalente à la commande get mais elle compare les dates entre le
fichier local et le fichier sur le serveur, et ne télécharge que si le fichier serveur est plus récent.
Le fichier n’existe pas sur le client ou est plus vieux :
ftp> newer fich1.txt
---> MDTM fich1.txt
213 20080619080618
local: fich1.txt remote: fich1.txt
---> TYPE I
200 Type set to I
---> PORT 192,168,130,21,129,170
200 PORT command successful
---> RETR fich1.txt
150 Opening BINARY mode data connection for fich1.txt (2222 bytes)
226 Transfer complete.
2222 bytes received in 0.00 secs (2052.9 kB/s)
ftp>
- Maintenant on modifie en local donc la version sera plus récente, le fichier ne sera pas remplacé
:
ftp> newer fich1.txt
Local file "fich1.txt" is newer than remote file "fich1.txt"
Comme prévu, le fichier local est plus récent, il n’a donc aucune raison d’être téléchargé.
6) Commande QUOTE :
La commande quote sert à l’envoie des commandes de contrôle FTP. Elle sert à fournir
directement les commandes du protocole ftp, sans passer par les commandes interne au service
ftp disponible sur l’ordinateur.
Exemple « chemin courant » et changement de répertoire:
ftp> quote PWD
---> PWD
257 "/Disque dur/"
ftp> quote pwd
---> pwd
257 "/Disque dur/"
ftp> quote cwd /
---> cwd /
250 directory changed to /
Exemple de mauvaise commande :
ftp> quote toto
---> toto
500 Syntax error, command unrecognized.
Comme on peut le constater sur PWD et pwd, les messages ne sont pas sensibles à la casse
7) Les différentes catégories de réponses du serveur :
Premier chiffre
Chiffre Signification
Description
1yz
Réponse préliminaire positive
2yz
Réponse positive de réalisation
L'action demandée est en cours de réalisation, une seconde réponse
doit être obtenue avant d'envoyer une deuxième commande
L'action demandée a été réalisée, une nouvelle commande peut être
envoyée
3yz
Réponse intermédiaire positive
L'action demandée est temporairement suspendue.
Des informations supplémentaires sont attendues de la part du client
4yz
Réponse négative de réalisation
L'action demandée n'a pas eu lieu car la commande n'a temporairement
pas été acceptée. Le client est prié de réessayer ultérieurement
5yz
Réponse négative permanente
L'action demandée n'a pas eu lieu car la commande n'a pas été acceptée.
Le client est prié de formuler une requête différente
Second chiffre
Chiffre Signification
Description
x0z
Syntaxe
L'action possède une erreur de syntaxe, ou bien il s'agit
d'une commande non comprise par le serveur
x1z
x2z
Information
Connexions
Il s'agit d'une réponse renvoyant des informations
(par exemple pour une réponse à une commande STAT)
La réponse concerne le canal de données
x3z
x4z
x5z
Authentification et comptes
Non utilisé par le protocole FTP
Système de fichiers
La réponse concerne le login (USER/PASS)
ou la demande de changement de compte (CPT)
La réponse concerne le système de fichiers distant
Exemple : 226 Transfer complete
Cela indique que c’est une fermeture du canal de données. Service terminé (par exemple, transfert de
fichier ou avortement).
3. Simulation
1) Utilisation de NetCat pour l’identification, changement de répertoire, création de répertoires, et fermeture
de la session :
bt ~ # nc -v hd1.freebox.fr 21 //Commande NetCat en mode verbose vers le serveur FTP sur le port 21
freeboxhd1.freebox.fr [212.27.40.254] 21 (ftp) open
220 Welcome to Freebox FTP Server.
user anonymous
// Envoi de l’identifiant par la commande USER
331 User name okay, need password.
pass anon@
// Envoi du m.d.p par la commande PASS
230Bienvenue sur le serveur FTP Freebox.
230 User logged in, proceed.
CWD Disque dur
// Changement de dossier avec la commande CWD
250 directory changed to /Disque dur/
MKD test
// Création du dossier test avec la commande MKD
257 "/Disque dur/test" created.
QUIT
// Déconnexion de la session avec la commande QUIT
221 Service closing control connection.
Ici net NetCat affiche les messages renvoyés par le serveur.
Avec NetCat, il est obligatoire d’utiliser les commandes de service FTP (comme avec QUOTE dans un client
FTP).
2) Commandes TYPE :
Par défaut le type utilisé est le A (ascii). Cette commande est nécessaire uniquement lorsque l’on change de
type pour lancer un transfert sur le canal DATA. Quand un type est choisit, il reste configuré jusqu’au
moment où on le change.
3) Opération plus complexe avec échanges sur le canal DATA:
NetCat pour émulation du canal commande :
230 User logged in, proceed.
list
425 Can't open data connection.
pasv
227 PASV OK (212,27,40,254,19,78)
list
150 File Status OK.
226 Closing data connection.
Apres être logué, on demande l’affichage de la liste des fichiers, le serveur répond qu’il na pas de canal
DATA, on indique alors que l’on passe en mode passif, le serveur répond sur quel port il faut connecter le
canal data, 19x256+78=4942.
Avec un autre NetCat, on émule le canal DATA et on se connecte sur le port 4942 du serveur FTP.
Ensuite on redemande la liste des fichiers et OH miracle ca marche.
NetCat pour émulation du canal data :
bt ~ # nc -v hd1.freebox.fr 4942
freeboxhd1.freebox.fr [212.27.40.254] 4942 (?) open
drwx--x--x 7 freebox freebox
86 Jun 23 17:34 Disque dur
4) Pour la suite, nous avons utilisé les traces de 2 autres binômes.
Le serveur était émulé par le binôme Michaud 192.168.130.10 et le client était émulé par le binôme Guyon
192.168.130.21.
Affichage Côté client pour le canal de commande:
bonn-1:~# nc 192.168.130.10 2121
220
USER xavier
331
PASS passmoile
530
USER xav
331
PASS ok
230
LISR
530 unkwon command
Type I
220
PORT 192,168,130,21,2,1
220
LIST
150
220
QUIT
221
Affichage Côté client pour le canal DATA:
bonn-1:~# nc -l -p 513
TP4
TP3
TP2
TP1
Ici on est en mode actif car c’est le client qui a fournit le port du canal DATA et de plus sur le canal DATA on est
en attente sur le port définit.
Les réponses que le client reçoit correspondent aux différents codes réponses que l’on a pu voir.
4. Conclusion :
Pour conclure, il a été très intéressant d’étudier le protocole FTP car celui-ci est très utilisé sur internet.
Le FTP permet d’échanger des fichiers avec un serveur de façon sécurisé (login et mot de passe), et surtout il est
très fonctionnel pour la gestion des dossiers (affichage, renommage, liste, comparaison, suppression)