Enoncé TP 3 - DEPARTEMENT INFORMATIQUE IUT Aix

UE31 - M3102 : Services Réseaux
Enoncé du TP 3
Services FTP et DHCP
IUT Aix-Marseille - INFO Aix
C. Pain-Barre
Table des matières
1
2
3
FTP
1.1 Authentification FTP . . . . . . . . . . . . . . . . . . . . . . . .
1.2 Connexion de données : mode actif ou passif . . . . . . . . . . .
1.3 Commandes du client FTP . . . . . . . . . . . . . . . . . . . . .
1.3.1 Commandes relatives au transfert de fichiers . . . . . . .
1.3.2 Commandes de déplacement et de manipulation de fichiers
1.3.3 Commandes de gestion de la session . . . . . . . . . . . .
1.4 Limitations de FTP . . . . . . . . . . . . . . . . . . . . . . . . .
1.5 Clients FTP graphiques . . . . . . . . . . . . . . . . . . . . . . .
1.6 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Exercice 1 (Session FTP graphique à allegro) . . . . . . . . . . .
Exercice 2 (Session FTP en mode texte à allegro) . . . . . . . . .
Exercice 3 (Session FTP avec ftp.rfc-editor.org depuis Linux) . . .
1.7 Messages du protocole FTP . . . . . . . . . . . . . . . . . . . . .
1.8 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Exercice 4 (Transfert manuel en mode passif) . . . . . . . . . . .
1.9 Installation du serveur ProFTP . . . . . . . . . . . . . . . . . . .
Exercice 5 (Installation de proftpd) . . . . . . . . . . . . . . . . .
Exercice 6 (Autoriser l’accès à root) . . . . . . . . . . . . . . . .
Exercice 7 (Autoriser l’accès aux utilisateurs) . . . . . . . . . . .
Exercice 8 (Autoriser le login anonyme) . . . . . . . . . . . . . .
Exercice 9 (Transfert manuel en mode actif) . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
3
3
4
5
6
7
8
9
9
10
10
10
10
11
13
13
14
14
14
15
16
16
DHCP
2.1 Configuration d’un serveur DHCP . . . . . . . . . . . . . . . .
Exercice 10 (Lancement d’une VM Windows XP) . . . . . . . .
Exercice 11 (configuration du serveur DHCP de m2) . . . . . .
2.2 Configuration des clients DHCP . . . . . . . . . . . . . . . . .
Exercice 12 (configuration temporaire du client DHCP de m1) .
Exercice 13 (configuration du client DHCP de la VM Windows)
Exercice 14 (configuration permanente du client DHCP de m1) .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
17
17
17
18
19
19
19
19
.
.
.
.
.
.
20
20
20
20
22
22
24
Le courrier électronique
3.1 Clients de messagerie . . . . . . . . . .
Exercice 15 (Utilisation de Thunderbird)
3.2 Format d’un message électronique . . .
3.3 SMTP . . . . . . . . . . . . . . . . . .
3.3.1 Messages du protocole SMTP .
3.3.2 Exercice . . . . . . . . . . . . .
IUT Aix-Marseille - INFO Aix
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
29/12/2014
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- C. Pain-Barre
UE31 - M3102 : Services R´eseaux
3.4
Enonc´e du TP 3
2/25
Exercice 16 (Envoi du message anonyme) . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Étude de la RFC de POP3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
Exercice 17 (récupération de messages avec POP3) . . . . . . . . . . . . . . . . . . . . . . . . . 25
C. Pain-Barre -
29/12/2014
IUT Aix-Marseille - INFO Aix
3/25
1
Enonc´e du TP 3
UE31 - M3102 : Services R´eseaux
FTP
File Transfer Protocol (RFC 959) est un (vieux) protocole de la couche application de TCP/IP, permettant de
transférer des fichiers entre deux stations ; l’une exécutant un client FTP et l’autre un serveur FTP. Le transfert
peut se faire dans les deux sens.
De très nombreux clients et serveurs FTP ont été développés, dont certains sont libres. Linux et Windows sont
livrés avec le client de base ftp. Parmi les serveurs disponibles sous Linux, on peut citer in.ftpd (serveur BSD)
et proftpd, un serveur FTP de type professionnel et hautement configurable sur lequel nous travaillerons.
-
Le port 21 de TCP est réservé au service FTP. Dit autrement, un serveur FTP est par défaut en écoute
sur le port 21 de TCP.
En tapant :
$ ftp hˆote
où hˆote est l’adresse IP ou le nom d’une station, le client tente d’ouvrir une connexion TCP sur le port 21 de
l’hˆote indiqué, comme illustré par la figure 1.
client
FTP
serveur
FTP
connexion de contrôle
12345
Hôte local
21
Hôte distant
F IGURE 1 – Établissement d’une connexion de contrôle FTP
Si le serveur FTP est actif et répond favorablement, une connexion de contrôle est établie. Une "session"
FTP vient alors de démarrer et le serveur attend généralement que l’utilisateur s’authentifie en fournissant un
nom d’utilisateur et un mot de passe.
1.1
Authentification FTP
Comme nous le verrons avec proftpd, les serveurs FTP peuvent avoir des configurations très différentes, autorisant des méthodes d’authentification variées. En toute généralité, un serveur peut-être configuré pour accepter
le login anonyme et/ou le login d’utilisateurs reconnus :
• les serveurs autorisant le login anonyme mettent généralement à disposition certains fichiers que l’on peut
télécharger, voire un/des répertoires dans le(s)quel(s) on peut déposer (upload) des fichiers.
Pour ce type d’authentification, il est inutile de disposer d’un compte utilisateur sur le serveur. C’est le
mode d’authentification à utiliser sur les serveurs FTP publics qui hébergent les images et les paquets des
distributions Linux, par exemple.
Pour le login anonyme, on utilise par défaut le nom d’utilisateur "anonymous" (parfois "guest") et
n’importe quoi est souvent accepté comme mot de passe (parfois, il n’est même pas demandé).
i
La règle de bonne conduite sur Internet (la netiquette) veut cependant qu’on indique son
adresse e-mail comme mot de passe, en particulier si un message du serveur le précise lors
de l’authentification. Il n’y a a priori aucune raison de ne pas le faire !. . .
IUT Aix-Marseille - INFO Aix
29/12/2014
- C. Pain-Barre
UE31 - M3102 : Services R´eseaux
Enonc´e du TP 3
4/25
• les serveurs autorisant le login d’utilisateurs reconnus permettent généralement aux utilisateurs disposant
d’un compte sur le système (du serveur) de télécharger des fichiers/répertoires ou d’en déposer. Dans ce
cas, il faut s’authentifier auprès du serveur avec son nom d’utilisateur et son mot de passe.
i
1.2
Certains serveurs comme proftpd gèrent aussi des utilisateurs virtuels, qui viennent s’ajouter
aux utilisateurs du système.
Connexion de données : mode actif ou passif
Avant d’aller plus loin, précisons que la connexion de contrôle ne sert qu’à échanger des requêtes, des réponses et des notifications diverses avec le serveur, mais ne sert pas au transfert de données !
Chaque fois qu’il y a besoin de transférer des données, comme le contenu (détaillé) d’un répertoire ou le
contenu d’un fichier, le client et le serveur doivent établir une (nouvelle) connexion de données. Pour cela, il y a
deux modes possibles, à préciser pour chaque connexion à établir :
• en mode actif, c’est le serveur qui doit réaliser une ouverture active de cette connexion, comme l’illustre
la figure 2. Pour cela, le client choisit un port (ou se le fait attribuer par TCP) sur lequel il se place
en écoute puis, par l’intermédiaire de la connexion de contrôle, indique au serveur sur quel port il est
joignable. Le serveur se connecte alors au client pour établir la connexion de données. Côté serveur, le
port utilisé pour cette connexion est le port 20.
-
Pour établir la connexion de données en mode actif, le serveur agit donc comme un client
(ouverture active) alors que le client agit comme un serveur (ouverture passive).
connexion de données
34567
client
FTP
serveur
FTP
connexion de contrôle
12345
Hôte local
20
21
Hôte distant
F IGURE 2 – Établissement d’une connexion de données en mode actif.
-
Le mode actif est problématique lorsque le client se trouve derrière un NAT/PAT. En effet, il
faudrait établir une règle de redirection pour le port écouté par le client. Bien souvent, cette
solution n’est pas envisageable.
Derrière un firewall configuré pour filtrer les connexions entrantes, le problème est similaire.
i
Certaines Natbox évoluées règlent toutefois le problème du transfert actif en établissant d’elles
mêmes la règle de redirection nécessaire, lorsqu’elles détectent une initiation de ce type de
transfert. De même, les firewall évolués sont capables d’inspecter les messages échangés sur
la connexion de contrôle FTP pour autoriser l’établissement des connexions de données.
C. Pain-Barre -
29/12/2014
IUT Aix-Marseille - INFO Aix
5/25
Enonc´e du TP 3
UE31 - M3102 : Services R´eseaux
• en mode passif, le serveur doit se placer en ouverture passive de la connexion de données. C’est alors au
client de réaliser l’ouverture active en se connectant au serveur sur un port qui lui est communiqué par le
serveur à travers la connexion de contrôle, comme le schématise la figure 3.
connexion de données
23456
client
FTP
45678
serveur
FTP
connexion de contrôle
12345
21
Hôte local
Hôte distant
F IGURE 3 – Établissement d’une connexion de données en mode passif
-
1.3
-
Le mode passif est aussi problématique lorsque le serveur se trouve derrière un NAT/PAT ou un
firewall. En effet, il faudrait établir une règle de redirection pour le port écouté par le serveur.
Pour faciliter ces redirections, la configuration d’un serveur peut permettre de spécifier un
intervalle de ports à utiliser pour les ouvertures passives.
i
Là encore, certaines Natbox évoluées règlent toutefois le problème du transfert passif (côté
serveur) en établissant d’elles mêmes la règle de redirection nécessaire, lorsqu’elles détectent
une initiation de ce type de transfert. De même, les firewall évolués suivent le dialogue sur la
connexion de contrôle pour autoriser l’établissement de cette connexion.
On ne manquera pas de retenir que tout transfert de fichier/données doit se faire sur une connexion de
données différente en choisissant le mode d’établissement actif ou passif.
Commandes du client FTP
Une fois le login accepté, de nombreuses commandes sont disponibles pour transférer des fichiers (mais pas
des arborescences de répertoires).
i
Pour obtenir la liste des commandes disponibles proposées par le client ftp, if faut taper :
ftp> help
ou simplement :
ftp> ?
Pour obtenir une description sur une commande en particulier, taper :
ftp> ? commande
La suite de cette section passe en revue quelques unes des commandes disponibles à partir du client FTP.
IUT Aix-Marseille - INFO Aix
29/12/2014
- C. Pain-Barre
UE31 - M3102 : Services R´eseaux
1.3.1
Enonc´e du TP 3
6/25
Commandes relatives au transfert de fichiers
• binary et ascii : permettent de choisir une méthode de transfert selon la nature du fichier à transférer.
ftp> binary
ftp> ascii
Avant de transférer un fichier, il faut en connaître le type : fichier texte ou fichier binaire. FTP ne fournit
pas de commande permettant de connaître le type d’un fichier avant de le transférer. Soit on sait quel est
son type, soit on se base sur son extension ou sur son nom. Par exemple, les fichiers .h, .cxx, .txt,
.uu, .ps, .java, readme devraient être des fichiers textes, alors que les fichiers .tar, .tgz, .Z, .gz,
.exe, .avi, .rar, .zip, .gif, .mp3, .deb, .rpm, devraient être des fichiers binaires.
-
Pourquoi les distinguer ? Parce que les fichiers textes doivent subir une modification pour adapter leur codage à celui du système qui les télécharge, alors que les fichiers binaires ne doivent
pas être modifiés par le transfert.
Ainsi, binary demande que le prochain transfert soit fait en mode binaire alors que ascii demande à ce
qu’il soit en mode texte.
• passive : permet de basculer du mode actif au mode passif, et inversement, qui sera utilisé pour le prochain
établissement d’une connexion de données, provoqué notamment par les commandes get, put et dir.
ftp> passive
Le mode par défaut de FTP étant le mode actif, c’est celui qui est pris par défaut par les clients FTP, à
moins d’utiliser cette commande.
M
Le client FTP livré par défaut avec Windows ne reconnaît pas cette commande. Ce client
est donc généralement inutilisable sur un ordinateur qui se trouve derrière un firewall ou
une Natbox.
• get : permet de demander le transfert d’un fichier du serveur vers l’hôte local.
ftp> get fic-source [fic-destination]
où fic-source est la référence du fichier à transférer et fic-destination est le nom qu’il portera localement.
Le transfert du fichier est opéré sur une connexion de données établie pour l’occasion selon le mode courant (actif ou passif).
• hash : activer/désactiver la visualisation de l’activité de transfert
ftp> hash
a pour effet de faire afficher par le client un dièse (ou autre caractère selon le client) pour chaque bloc de
fichier transféré. La taille du bloc est indiquée en réponse à hash.
i
C. Pain-Barre -
les dièses ne sont pas transmis par le serveur ; c’est le client qui les écrit en fonction de la
quantité d’information transférée.
29/12/2014
IUT Aix-Marseille - INFO Aix
7/25
Enonc´e du TP 3
UE31 - M3102 : Services R´eseaux
• mget : permet de demander le transfert de plusieurs fichiers du serveur vers l’hôte local.
ftp> mget motif {motif}
où motif est un motif de nom de fichier. Pour chaque fichier qui correspond au(x) motif(s), l’utilisateur
est invité à confirmer le transfert, à moins qu’il ait demandé un mode sans invite (voir prompt ci-après).
-
Encore une fois, chaque transfert de fichier doit se faire sur une connexion de données différente.
• prompt : permet de basculer du mode avec invite au mode sans invite.
ftp> prompt
• put : permet de demander le transfert d’un fichier de l’hôte local vers le serveur.
ftp> put fic-source [fic-destination]
où fic-source est la référence du fichier à transférer et fic-destination est le nom qu’il portera sur le serveur.
Il faut bien évidemment avoir les autorisations nécessaires pour déposer un fichier sur le répertoire cible.
Le transfert du fichier est opéré sur une connexion de données établie pour l’occasion.
• mput : permet de demander le transfert de plusieurs fichiers de l’hôte local vers le serveur.
ftp> mput motif {motif}
où motif est un motif de nom de fichier. Pour chaque fichier qui correspond au(x) motif(s), l’utilisateur
est invité à confirmer le transfert, à moins qu’il ait demandé un mode sans invite.
1.3.2
Commandes de déplacement et de manipulation de fichiers
• cd : permet de se placer dans un répertoire sur le serveur. Cette commande s’utilise comme sur Unix.
ftp> cd r´epertoire
• lcd : permet de se placer dans un répertoire sur l’hôte local. Cette commande s’utilise comme sur Unix.
ftp> lcd r´epertoire
• ls ou dir : permettent d’obtenir des informations sur un fichier ou le contenu d’un répertoire.
ftp> ls [-l] [r´ef´erence] [fichier-sortie]
ftp> dir [r´ef´erence] [fichier-sortie]
dir est équivalent à ls -l. r´ef´erence est le fichier ou le répertoire sur lequel appliquer la commande et
fichier-sortie est une référence d’un fichier dans lequel on veut placer le résultat de la commande.
Certains sites (comme ftp.inria.fr) conseillent fortement d’utiliser ls -l ou dir plutôt qu’un
simple ls (j’avoue ne pas savoir pourquoi, alors si vous le savez, dites-le moi en m’envoyant un mail).
-
Les informations fournies par ls (dir) le sont sur une connexion de données.
IUT Aix-Marseille - INFO Aix
29/12/2014
- C. Pain-Barre
UE31 - M3102 : Services R´eseaux
Enonc´e du TP 3
8/25
• chmod : permet de changer les permissions d’un fichier (ou répertoire) sur le serveur
ftp> chmod permissions r´ef´erence
• rename : permet de renommer un fichier sur le serveur
ftp> rename ancien nouveau
demande de renommer le fichier (ou répertoire) ancien en nouveau.
M
On ne déplace pas un fichier avec cette commande. De plus, si le fichier nouveau existe
déjà, il est écrasé. Si ancien et nouveau sont des répertoires (existants), alors nouveau sera
écrasé s’il est vide, sinon cela produit une erreur.
• delete : permet de supprimer un fichier sur le serveur
ftp> delete r´ef´erence
Cette commande ne s’applique pas aux répertoires.
• mdelete : permet de supprimer plusieurs fichiers sur le serveur
ftp> mdelete motif {motif}
À nouveau, cette commande ne s’applique pas aux répertoires.
• mkdir : permet de créer un répertoire sur le serveur
ftp> mkdir r´ef´erence
• rmdir : permet de supprimer un répertoire sur le serveur
ftp> rmdir r´ef´erence
où r´ef´erence est un répertoire vide.
• ! : permet d’exécuter une commande localement.
ftp> ! [commande]
La commande est exécutée dans un shell et son résultat est affiché sur la sortie standard. Cela permet par
exemple de pouvoir visualiser un fichier sans quitter la session FTP, de créer localement un répertoire,
renommer un fichier, etc. La syntaxe de commande est propre au shell du système du client. Si aucune
commande n’est fournie, le client FTP exécute un shell et lui cède la place. Lorsque le shell est terminé
(par exemple, en tapant une commande shell de type exit), le client FTP reprend la main.
1.3.3
Commandes de gestion de la session
• bye ou exit ou quit : terminer la session FTP et se déconnecter du serveur.
ftp> bye
ftp> exit
ftp> quit
C. Pain-Barre -
29/12/2014
IUT Aix-Marseille - INFO Aix
9/25
Enonc´e du TP 3
UE31 - M3102 : Services R´eseaux
• close : permet de terminer la session FTP en cours.
ftp> close
Cette commande ne fait pas quitter du client FTP !
• open : permet d’ouvrir une session FTP
ftp> open serveur
• user : permet de commencer la phase d’authentification
ftp> user nom
Peut s’utiliser si l’utilisateur ne s’est pas encore logé (par exemple après un échec d’authentification).
Suite à cette commande, il faudra généralement fournir un mot de passe pour s’authentifier en tant qu’utilisateur nom.
1.4
Limitations de FTP
FTP n’est pas conçu pour télécharger ou déposer une hiérarchie de répertoires (arborescence). Plus simplement, il n’est pas possible de demander le transfert d’un fichier répertoire (avec son contenu). Cela est très
gênant. Pour contourner le problème, les arborescences sont souvent archivées dans un fichier unique (et binaire)
qui pourra être transféré.
Sous Unix (et Linux), les archives sont créées avec l’utilitaire tar (tape archiver) et portent généralement
l’extension .tar, .tgz (si compressée en même temps par gzip) ou .tgZ, .taz (si compression par compress).
Parfois, l’archive est compressée après avoir été créée, et porte une extension de type .tar.gz ou .tar.Z. Sous
Windows, les archives sont le plus souvent créés (avec compression automatique) en utilisant les logiciels WinZip
ou Winrar, et portent l’extension .zip ou .rar.
i
1.5
Certains clients FTP (comme la plupart des clients graphiques) permettent de transférer des arborescences. Pour cela, ils parcourent eux-même récursivement l’arborescence à télécharger, en faisant une
requête LIST pour chaque répertoire rencontré.
Clients FTP graphiques
Il existe pléthore de clients FTP graphiques plus ou moins ergonomiques, notamment en offrant une visualisation côte-à-côte du répertoire distant et du répertoire local et en permettant le drag and drop (glisser-déposer).
De plus, ils permettent généralement de transférer des arborescences (ils se chargent de se déplacer dans l’arborescence et d’en transférer le contenu). Parmi ce genre d’outils, on peut citer :
• Filezilla sous Windows et Linux
• gftp sous Linux/Unix
• WS-FTP sous Windows édité par ipswitch
IUT Aix-Marseille - INFO Aix
29/12/2014
- C. Pain-Barre
UE31 - M3102 : Services R´eseaux
1.6
Enonc´e du TP 3
10/25
Exercices
Exercice 1 (Session FTP graphique à allegro)
Sur le PC, dans le menu Applications −→ Internet, lancer gftp (une alternative est FileZilla) pour se connecter
à allegro avec votre nom d’utilisateur et votre mot de passe, puis :
1. Naviguer dans l’arborescence et récupérer le fichier ~cpb/public/firefox_ie.jpg
2. Utiliser un visionneur d’images (comme eog) afin de vérifier que le fichier a été correctement téléchargé
3. Déposer dans votre répertoire personnel sur allegro un fichier texte de votre choix.
i
On aura peut être remarqué que, par défaut, gftp utilise systématiquement le mode passif.
[Corrigé]
Exercice 2 (Session FTP en mode texte à allegro)
Sur un terminal du PC, utiliser la commande ftp pour ouvrir une session FTP à allegro avec votre nom
d’utilisateur et votre mot de passe, puis :
1.
2.
3.
4.
5.
Basculer en mode passif
Naviguer dans l’arborescence et récupérer le fichier binaire /home/cpb/public/unix/bart.gif
Utiliser un visionneur d’images (comme eog) afin de vérifier que le fichier a été correctement téléchargé
Déposer dans votre répertoire personnel sur allegro un fichier texte de votre choix.
Terminer cette session FTP avec quit (ou bye).
[Corrigé]
Exercice 3 (Session FTP avec ftp.rfc-editor.org depuis Linux)
Depuis un terminal du PC, utiliser ftp pour se connecter en tant qu’utilisateur anonyme au serveur FTP du
site officiel des dépôts des RFC, d’adresse ftp.rfc-editor.org (ou l’un de ses miroirs qu’on peut connaître
en faisant une recherche sur internet) puis :
1. Basculer en mode passif
2. Aller dans le répertoire in-notes
3. Récupérer le fichier texte rfc1939.txt en demandant une visualisation de l’activité de transfert.
i
Ce fichier contient la RFC du protocole POP3
4. Un fois le fichier téléchargé, terminer la session FTP.
[Corrigé]
i
Pour les transferts dans les entreprises, les administrateurs réseaux ferment de plus en plus les services non sécurisés (cryptés) comme FTP. Dans ce cas, le transfert de fichiers est généralement laissé
possible en utilisant SSH et ses sous-modules, qui offrent des services de type FTP-crypté.
C. Pain-Barre -
29/12/2014
IUT Aix-Marseille - INFO Aix
11/25
1.7
Enonc´e du TP 3
UE31 - M3102 : Services R´eseaux
Messages du protocole FTP
Le protocole FTP fonctionnant en mode client/serveur, le client envoie un message (requête) au serveur via la
connexion de contrôle et le serveur lui retourne une réponse sur cette même connexion. Selon la requête, cela produit l’établissement d’une connexion de données et un transfert d’information (fichier, contenu d’un répertoire).
Voici ci-dessous quelques messages que le client peut envoyer ainsi que quelques réponses possibles du serveur, le tout étant précisé dans la RFC 959 que vous avez téléchargée :
M
Tous les messages (requête ou réponse) se terminent par les deux caractères ’\r’ (Carriage
Return ou CR) et ’\n’ (Line Feed ou LF). Cependant, les serveurs acceptent généralement
les requêtes qui ne se terminent que par LF.
USER nom
pour indiquer un nom d’utilisateur. Si le serveur a besoin d’un mot de passe pour cet utilisateur, il enverra
une réponse commençant par 331 comme :
331 User name okay, need password.
sinon, il acceptera le login par un message commençant par 230 comme :
230 nom user logged in
-
Les réponses des serveurs commencent toutes par un code à trois chiffres suivi d’une explication. L’explication est libre et est destinée aux humains. En revanche le code n’est pas libre
car est destiné à être traité par le processus client. Les réponses commencent toujours par un
chiffre compris entre 1 et 5. S’il vaut 4 ou 5, c’est que le serveur indique une erreur, sinon il
s’agit d’une réponse favorable.
-
Parfois, la réponse du serveur tient en plusieurs lignes. Dans ce cas, toutes les lignes ont le
même code suivi d’un tiret -, sauf la dernière pour laquelle le code est suivi d’un espace.
PASS mot-de-passe
pour indiquer le mot de passe pour cet utilisateur. En réponse, le serveur indique que l’authentification est
acceptée par un message commençant par 230 comme :
230 User nom logged in.
Il indique une erreur d’authentification par un message commençant par 530 comme :
530 Login incorrect.
CWD r´
epertoire
pour changer de répertoire. En réponse, le serveur indique un succès par un message commençant par 250
comme :
250 CWD command successful
et une erreur par un message commençant par 550 comme :
550 r´epertoire: No such file or directory
IUT Aix-Marseille - INFO Aix
29/12/2014
- C. Pain-Barre
UE31 - M3102 : Services R´eseaux
Enonc´e du TP 3
12/25
PORT h1 ,h2 ,h3 ,h4 ,p1 ,p2
dans le mode actif, le client indique par cette commande sur quel couple adresse/port le serveur doit se
connecter pour établir la connexion de données. Les valeurs h1 ,h2 ,h3 ,h4 indiquent l’adresse IP
h1 .h2 .h3 .h4 . Le port P en question est indiqué par p1 et p2 , où P = (p1 × 256) + p2 (p1 est la valeur
de l’octet de poids fort de P et p2 celle de l’octet de poids faible).
Une réponse favorable du serveur commencera par 200 comme :
200 PORT command successful
i
L’adresse ne correspond pas forcément à celle du client. Ce dernier peut demander au serveur
de se connecter à une autre machine, pour peu qu’il y ait un processus sur la machine ciblée,
en écoute sur le port indiqué. Cependant, la plupart des serveurs refusent cette opération.
PASV
dans le mode passif, le client indique par cette commande qu’il va demander un transfert, et qu’il a besoin
que le serveur lui indique un couple adresse/port pour se connecter.
Une réponse positive commencera par 227 et contiendra le couple adresse/port comme :
227 Entering Passive Mode (82,3,4,5,151,37).
Ici, le serveur indique qu’il s’est mis en attente sur le port 38693 (= 151 × 256 + 37) sur la machine
d’adresse 82.3.4.5.
TYPE type
pour spécifier un mode de transfert des données. Parmi les types reconnus, il y a A (ascii) et I (image
binaire).
Une réponse positive du serveur commencera par 200 comme :
200 Type set to type
LIST
demande au serveur de transférer le contenu (avec détails) du répertoire de travail (sur le serveur). Ce
transfert se fait en établissant une connexion de données. Pour cela, cette requête doit être précédée d’un
message PORT ou PASV.
Si le serveur accepte, il enverra un message commençant par 150 comme :
150 Opening ASCII mode data connection for file list
Lorsque le transfert est terminé, le serveur envoie un message commençant par 226 comme :
226 Transfer complete.
C. Pain-Barre -
29/12/2014
IUT Aix-Marseille - INFO Aix
13/25
Enonc´e du TP 3
UE31 - M3102 : Services R´eseaux
RETR r´
ef´erence
demande le transfert du fichier indiqué depuis le serveur vers le client. Ce transfert se fait dans les même
conditions que pour LIST.
Si le serveur accepte, il enverra un message commençant par 150 comme :
150 Opening ASCII mode data connection for r´ef´erence (x bytes)
Lorsque le transfert est terminé, le serveur envoie un message commençant par 226 comme :
226 Transfer complete.
STOR r´
ef´erence
pour indiquer au serveur que l’on veut transférer des données, qu’il faut sauver dans le fichier r´ef´erence.
Ce transfert se fait dans les même conditions que pour LIST.
Si le serveur accepte, il enverra un message commençant par 150 comme :
150 Opening ASCII mode data connection for r´ef´erence
Lorsque le transfert est terminé, le serveur envoie un message commençant par 226 comme :
226 Transfer complete.
QUIT
pour terminer la session.
La réponse du serveur commence par 221 comme :
221 Goodbye.
1.8
Exercices
Exercice 4 (Transfert manuel en mode passif)
Depuis le PC, utiliser telnet (voir TP4 de 1re année pour un rappel sur la commande telnet) pour ouvrir
une connexion de contrôle avec le serveur FTP de ftp.rfc-editor.org (ou l’un de ses miroirs). On veut
récupérer la RFC 821 (fichier rfc821.txt du répertoire in-notes) manuellement, sans passer par un véritable
client FTP. Pour cela, on va demander un transfert en mode passif, et utiliser nc (se reporter à nouveau au TP4
de 1re année) pour établir la connexion de données dans laquelle le fichier sera transmis. Une fois le fichier de la
RFC récupéré, le mettre de côté.
i
Si vous parvenez à établir la connexion de données, le contenu du fichier sera transmis sur cette
connexion et écrit sur la sortie standard de nc. Pour créer effectivement le fichier, il faut rediriger
la sortie standard de nc. . .
[Corrigé]
IUT Aix-Marseille - INFO Aix
29/12/2014
- C. Pain-Barre
UE31 - M3102 : Services R´eseaux
1.9
Enonc´e du TP 3
14/25
Installation du serveur ProFTP
Dans cette section, nous allons installer et configurer un serveur FTP sous Linux.
i
Le serveur que nous avons choisi est ProFTPD (http://www.proftpd.org/), un serveur
FTP libre de qualité professionnelle.
Pour cela, nous allons travailler sur des machines virtuelles mises en réseau dans le simulateur Marionnet.
Exercice 5 (Installation de proftpd)
1. Sur le PC, télécharger le fichier m3102_tp3_lab1.mar, l’ouvrir dans Marionnet et cliquer sur Tout
Démarrer.
2. Sur m2, se loger en tant que root (mot de passe root)
3. Le serveur que nous voulons utiliser n’est pas installé sur m2, sur laquelle tourne une ancienne distribution
Debian. Pour installer proftpd, il est nécessaire de modifier les dépôts où se trouvent les paquets. Éditer
avec vi le fichier /etc/apt/sources.list et ajouter les lignes suivantes :
deb http://archive.debian.org/debian-archive/debian/ lenny main contrib non-free
deb http://archive.debian.org/debian-security/ lenny/updates main contrib non-free
4. Mettre à jour la base de données des paquets en tapant :
# apt-get update
et ignorer les messages d’erreur
5. Faire afficher les différents serveurs FTP disponibles en tapant :
# apt-cache search ftp-server
6. Installer le serveur proftpd en tapant :
# apt-get install proftpd-basic
Et en confirmant. Lorsque le type d’installation vous est demandé, choisir standalone.
7. En principe, le serveur est automatiquement démarré mais dans le doute, le démarrer en tapant :
# /etc/init.d/proftpd start
8. Puis vérifier avec netstat que le serveur est bien en écoute sur le port 21
9. Consulter le fichier texte /etc/services qui recense la liste des ports réservés par protocole de transport
et les services associés, afin de déterminer les ports utilisés par les serveurs FTP et leurs variantes sécurisées
(FTP au dessus de SSL).
[Corrigé]
Exercice 6 (Autoriser l’accès à root)
Pour le moment, le serveur proftpd n’est pas utilisable car aucun utilisateur n’a encore été créé sur m2 et le
serveur n’autorise pas l’accès à root, ni le login anonyme :
1. Depuis m1, utiliser ftp pour se connecter au serveur de m2 et tenter de se loger en root. Cela devrait être
interdit.
2. Sur m2 :
(a) éditer le fichier /etc/ftpusers qui liste les utilisateurs qui ne sont pas autorisés à se loger par FTP.
Ajouter un # en début de la ligne contenant root pour la commenter. Sauver le fichier modifié.
C. Pain-Barre -
29/12/2014
IUT Aix-Marseille - INFO Aix
15/25
Enonc´e du TP 3
UE31 - M3102 : Services R´eseaux
(b) éditer le fichier le fichier /etc/proftpd/proftpd.conf, contenant la configuration de proftpd et,
en dessous de la directive commentée DefaultRoot, ajouter les lignes :
# Autoriser le login root
RootLogin
on
pour explicitement autoriser le login root
(c) Il faut maintenant recharger la configuration du serveur. La procédure classique (signal SIGHUP ou
reload) ne semblant pas fonctionner correctement, arrêter puis redémarrer le serveur en tapant :
# /etc/init.d/proftpd stop
# /etc/init.d/proftpd start
3. Depuis m1, utiliser à nouveau ftp pour se connecter au serveur de m2 et tenter de se loger en root. Cette
fois cela devrait réussir. Faire alors afficher le contenu du répertoire de travail par FTP puis quitter.
4. Il est bien évidemment très risqué d’autoriser un tel accès même si cela peut s’avérer utile dans certaines
circonstances. Éditer à nouveau les fichiers /etc/ftpusers et /etc/proftpd/proftpd.conf pour
interdire cet accès dangereux, puis relancer le serveur.
[Corrigé]
Exercice 7 (Autoriser l’accès aux utilisateurs)
L’accès aux utilisateurs normaux est déjà autorisé par le serveur. Nous allons le configurer un peu plus finement.
1. Sur m2, créer deux utilisateurs toto et titi en tapant :
# adduser toto
# adduser titi
2. Depuis m1, s’assurer que l’on peut bien s’authentifier par FTP sur m2 en tant que toto et que les transferts
de fichiers sont bien opérationnels dans les deux sens
3. Vérifier que sur la session FTP, toto peut naviguer dans toute l’arborescence à laquelle il a accès, notamment au répertoire /home.
4. Une configuration classique d’un serveur FTP dans le cas du login utilisateur, est de restreindre l’accès
des utilisateurs à leurs seuls répertoires personnels, sans possibilité de se placer en dessous, comme s’il
s’agissait de la racine du système du fichier.
Pour cela, éditer le fichier /etc/proftpd/proftpd.conf et décommenter la ligne :
# DefaultRoot
~
puis sauver le fichier et relancer le serveur (ce qui déconnecte silencieusement toto. . .)
5. Depuis m1, ouvrir une session FTP en tant que toto et vérifier que celui-ci ne peut plus descendre dans
l’arborescence.
-
On dit dans ce cas que les utilisateurs sont chrootés, c’est à dire que pour eux la racine commence
à leur répertoire personnel, ce qui change du coup les chemins absolus des fichiers. . .
[Corrigé]
IUT Aix-Marseille - INFO Aix
29/12/2014
- C. Pain-Barre
UE31 - M3102 : Services R´eseaux
Enonc´e du TP 3
16/25
Exercice 8 (Autoriser le login anonyme)
Le fichier de configuration de proftpd contient à la fin une section <Anonymous ~ftp> qui est commentée
et que nous allons exploiter pour nos besoins :
1. Sur m2, observer le contenu de ces lignes puis les décommenter, y compris la partie
<Directory incoming>, puis sauver le fichier et relancer le serveur
2. Sur m1, copier le fichier /etc/passwd dans le répertoire de travail (/root)
3. Sur m1, ouvrir une session FTP anonyme sur m2
4. Lister le contenu du répertoire dans lequel les utilisateurs anonymes se trouvent en se logeant. Il ne devrait
contenir que le fichier welcome.msg. Le récupérer et taper :
ftp> ! cat welcome.msg
pour le faire afficher.
5. Tenter de déposer le fichier passwd sur le serveur. Cela ne devrait pas être possible.
6. Sur m2, le répertoire où atterrissent les utilisateurs anonymes est en réalité /home/ftp. Y copier le fichier
/etc/services
7. Sur la session FTP depuis m1, lister le contenu du répertoire afin d’observer que ce fichier est maintenant
présent. Au passage, on pourra remarquer que le serveur FTP masque son réel propriétaire (qui est root). . .
8. La configuration du login anonyme sur m2 est censée permettre le dépôt des fichiers dans le répertoire
incoming qui n’existe pas encore.
Le créer (dans /home/ftp) et tenter depuis m1 d’y déposer un fichier (par exemple /etc/protocols).
Cela ne devrait pas fonctionner.
9. Sur m2, changer le propriétaire et le groupe de incoming en tapant :
m2:~# chown ftp.nogroup /home/ftp/incoming
10. Depuis m1, tenter à nouveau de déposer le même fichier dans incoming, ce qui devrait maintenant être
possible
11. Toujours depuis m1, tenter de télécharger ce fichier en lui donnant comme nom zefile. Cela ne devrait
pas fonctionner car la configuration du serveur interdit la lecture et la modification de fichiers dans ce
répertoire.
12. Modifier la configuration du serveur pour que la lecture des fichiers présents dans incoming soit rendue
possible, mais pas leur modification.
13. Tester la modification en recommençant le téléchargement précédent qui doit réussir, puis en tentant d’écraser le fichier, par exemple par le contenu de /etc/passwd, ce qui doit échouer.
[Corrigé]
Exercice 9 (Transfert manuel en mode actif)
Depuis m1 :
1. Quitter FTP et utiliser telnet pour ouvrir une connexion de contrôle avec le serveur FTP de m2
2. Utiliser les messages FTP adéquats pour vous authentifier en tant que toto. Attention, le mot de passe est
écrit en clair ;-) ! !
C. Pain-Barre -
29/12/2014
IUT Aix-Marseille - INFO Aix
17/25
Enonc´e du TP 3
UE31 - M3102 : Services R´eseaux
3. Sur le PC, ouvrir un terminal et taper :
pc$ ssh [email protected]
qui devrait vous connecter par SSH sur m1 à partir du PC local !
i
Dans Marionnet, les machines virtuelles et la machine hôte partagent un réseau privé (et un
peu caché) qui permet ce type de connexions. Pour se connecter à m2, on aurait utilisé l’adresse
172.23.0.2. . .
4. Sur ce nouveau terminal m1, utiliser nc pour se mettre en écoute sur un port que vous choisirez
5. sur la connexion de contrôle, utiliser le message FTP adéquat pour indiquer au serveur sur quel port votre
nc est en écoute
6. sur la connexion de contrôle, demander le contenu du répertoire de travail. Celui-ci doit être récupéré par
votre "serveur" nc
7. quitter la session FTP.
[Corrigé]
2
DHCP
2.1
Configuration d’un serveur DHCP
Un serveur DHCP doit avoir une interface configurée de manière statique. C’est le cas de la machine virtuelle
m2 dont l’interface eth0 est configurée statiquement avec l’adresse 10.0.2.10/24.
i
La configuration de m1 n’est que temporaire et disparaît si on la redémarre.
Nous allons configurer m2 pour servir de serveur DHCP dans le réseau 10.0.2.0/24. Un serveur DHCP
(dhcp3-server) est déjà installé sur m2. Il reste à le configurer, ce qui nécessite les étapes suivantes (ne rien
changer pour le moment) :
• modification du fichier /etc/default/dhcp3-server pour indiquer sur quelle interface le serveur
répondra aux requêtes ;
• modification du fichier /etc/dhcp3/dhcpd.conf pour indiquer les paramètres DHCP du serveur ;
• démarrage du serveur.
Exercice 10 (Lancement d’une VM Windows XP)
Avant de configurer le serveur DHCP de m2, nous allons démarrer une VM Windows XP qui est représentée dans Marionnet par B1. Télécharger le script m3102_tp3_mkxp4mario.bash et l’exécuter pour créer et
démarrer la VM Windows XP.
Pas besoin de corrigé. . .
IUT Aix-Marseille - INFO Aix
29/12/2014
- C. Pain-Barre
UE31 - M3102 : Services R´eseaux
Enonc´e du TP 3
18/25
Exercice 11 (configuration du serveur DHCP de m2)
Sur m2 :
1. Utiliser vi pour éditer le fichier /etc/default/dhcp3-server et indiquer l’interface qui le relie à son
réseau puis quitter en sauvant ;
2. Utiliser vi pour éditer le fichier /etc/dhcp3/dhcpd.conf. Celui-ci contient déjà de nombreuses informations dont la plupart sont commentées :
(a) modifier l’option domain-name pour contenir le domaine iut.univ-aix.fr ;
(b) modifier l’option domain-name-servers pour utiliser le serveur de noms 139.124.1.2 ;
(c) Décommenter la ligne :
#authoritative;
en supprimant le # du début ;
(d) Mettre en commentaires la ligne :
log-facility local7;
en insérant un # du début ;
(e) La configuration effective du serveur est assez simple. Par exemple, les lignes :
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.10 192.168.1.20;
option routers 192.168.1.250;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.1.255;
host pctoto {
hardware ethernet 00:c0:c3:11:90:23;
fixed-address 192.168.1.80;
}
}
l’autorisent à allouer dynamiquement les adresses 192.168.1.10 à 192.168.1.20 du réseau
192.168.1.0/24, tout en communiquant 192.168.1.250 comme routeur par défaut. L’hôte
possédant l’interface d’adresse Ethernet 00:c0:c3:11:90:23 obtiendra lui toujours l’adresse
192.168.1.80.
S’inspirer de cet exemple pour configurer le serveur DHCP de manière à ce qu’il alloue dynamiquement les adresses 10.0.2.120 à 10.0.2.150 et toujours l’adresse 10.0.2.20 à la machine
virtuelle Windows XP (dont il faut au préalable obtenir l’adresse MAC). Adapter les autres paramètres
au contexte du réseau de Marionnet.
(f) Quitter l’édition du fichier en le sauvant ;
3. Démarrer le serveur en tapant :
# /etc/init.d/dhcp3-server start
[Corrigé]
C. Pain-Barre -
29/12/2014
IUT Aix-Marseille - INFO Aix
19/25
2.2
Enonc´e du TP 3
UE31 - M3102 : Services R´eseaux
Configuration des clients DHCP
Exercice 12 (configuration temporaire du client DHCP de m1)
Nous allons maintenant configurer m1 comme un client DHCP (de façon temporaire). Sur la machine virtuelle
m1 :
1. Taper simplement :
# dhclient eth0
et patienter. Elle devrait obtenir l’adresse 10.0.2.120 qui est la première adresse allouable par le serveur.
2. Afficher la configuration IP de l’interface eth0, la table de routage, et le fichier /etc/resolv.conf,
puis vérifier que tout fonctionne normalement pour m1.
[Corrigé]
Exercice 13 (configuration du client DHCP de la VM Windows)
Nous allons maintenant configurer la machine virtuelle sous Windows XP comme un client DHCP. Sur la machine
virtuelle Windows :
1. taper la commande netsh adéquate (voir TP4 1re année) sur l’invite de commandes ou passer par la configuration de la carte réseau en mode graphique pour qu’elle obtienne sa configuration par DHCP
2. vérifier sa configuration avec ipconfig (elle devrait avoir l’adresse 10.0.2.20) et route.
[Corrigé]
Exercice 14 (configuration permanente du client DHCP de m1)
1. Modifier la configuration du serveur, de manière à ce que m1 obtienne toujours l’adresse 10.0.2.15
2. Redémarrer m1 (commande reboot) et s’y loger à nouveau. Faire afficher sa configuration réseau. On
observe alors que cette dernière a perdu sa configuration et ne l’a pas récupérée par DHCP. Ceci parce que
son interface eth0 n’est pas configurée pour cela.
3. Sur m1, éditer le fichier /etc/network/interfaces et ajouter les lignes suivantes :
auto eth0
iface eth0 inet dhcp
puis sauver le fichier
i
En principe, cela doit suffire à rendre permanente la configuration de eth0 par DHCP. Cependant, notre VM est une VM (!) intégrée dans Marionnet avec quelques artifices qui modifient le
déroulement normal du démarrage, ce qui empêche la configuration automatique de l’interface.
La dernière étape ci-dessous est alors nécessaire dans le cadre de Marionnet.
4. Sur m1, éditer le fichier /etc/init.d/marionnet_prepare_startup et, juste avant la dernière instruction echo du fichier, insérer la ligne :
ifup eth0
puis sauver le fichier.
5. Redémarrer m1 puis se loger pour vérifier que la configuration a cette fois bien été obtenue.
[Corrigé]
IUT Aix-Marseille - INFO Aix
29/12/2014
- C. Pain-Barre
UE31 - M3102 : Services R´eseaux
3
3.1
Enonc´e du TP 3
20/25
Le courrier électronique
Clients de messagerie
Un client de messagerie classique est un logiciel permettant de télécharger du courrier électronique, d’en
composer et d’en envoyer. Il n’est pas à confondre avec webmail de type hotmail ou autre Gmail qui utilisent
les facilités d’un browser (navigateur Web). Les clients graphiques de messagerie les plus connus sont Outlook
(Express), Eudora, Thunderbird sous Windows, et Netscape Messenger, Evolution ou Thunderbird sous
Linux. Pour fonctionner, ces clients ont besoin d’être paramétrés pour l’envoi et la réception de courriers.
• envoi de courrier : il faut pour fournir les paramètres du protocole SMTP. En effet, le client a besoin de
connaître le nom de la machine hébergeant le serveur SMTP ainsi que le port (normalement 25), à qui
le client confiera les courriers qu’il veut transmettre. Le plus souvent, ce serveur doit être celui mis à
disposition par le FAI. Les autres serveurs devraient refuser de relayer les messages à cause des spams
(ces courriers publicitaires qui pourrissent la vie et appelés aussi "pourriels" au lieu de "courriels"). Il
faut aussi indiquer son adresse e-mail afin qu’elle soit indiquée dans les messages envoyés pour que le
destinataire puisse répondre.
• réception de courrier : il faut fournir les paramètres du protocole POP3 ou du protocole IMAP (plus
récent). Nous nous limiterons à POP3 qui est le plus simple. Le client a donc besoin de connaître le nom
de la machine hébergeant le serveur POP3, et éventuellement le numéro du port qu’il utilise (normalement
110). Il a aussi besoin de connaître le nom d’utilisateur de la boîte aux lettres ainsi que son mot de passe.
Avec ces informations, il est ensuite possible de télécharger tout le courrier disponible dans la boîte puis
de le consulter hors-ligne.
Exercice 15 (Utilisation de Thunderbird)
Lancer Thunderbird (nommé icedove sous Debian) sous Linux. Le configurer en utilisant allegro comme
serveurs POP3 et SMTP (avec vos identifiant/mot de passe sur allegro), puis s’envoyer un ou deux messages.
Ensuite les récupérer à nouveau avec Thunderbird.
Pas besoin de corrigé. . .
3.2
Format d’un message électronique
Le format d’un message électronique (transmis via SMTP) a d’abord été défini dans la RFC 822 qui a été
remplacée récemment par la RFC 2822. Un message électronique est composé de deux parties : un en-tête et un
corps, séparés par une ligne vide. Le corps est libre, puisqu’il contient le message de l’utilisateur. Il doit cependant
respecter la règle d’au plus 1000 caractères par ligne, et ne doit contenir que des caractères ASCII. Pour envoyer
des données binaires par email, il faut les encoder en ASCII.
En revanche, l’en-tête contient une succession de champs, dont certains sont obligatoires, d’autres sont optionnels, et d’autres encore sont ignorés. Un grand nombre de champs sont prévus par la RFC, parmi lesquels :
• Return-Path: <adresse-origine >
identifie (l’utilisateur à) l’origine du message
• Received: informations de transfert
est un champ ajouté par chaque serveur SMTP ou client de relève de courrier par lequel le message est
passé
• From: adresse-exp´editeur identifie l’expéditeur du message. Ce champ peut éventuellement être différent
de celui indiqué dans Return-Path:
• To: adresses-destinataires identifie les destinataires du message
C. Pain-Barre -
29/12/2014
IUT Aix-Marseille - INFO Aix
21/25
Enonc´e du TP 3
UE31 - M3102 : Services R´eseaux
• Cc: adresses-destinataires-cc indique des destinataires en copie carbone
• Reply-To: adresse-r´eponse indique une adresse électronique à laquelle une réponse à ce message doit
être envoyée. Si ce champ est n’est pas présent, c’est le champ To: qui servira pour la réponse.
• Subject: sujet indique le sujet du message
• Message-Id: identificateur indique un numéro de message qui doit être unique pour celui qui le génère
(normalement le client de messagerie électronique qui est à l’origine du message)
• Date: date indique la date à laquelle la transmission du message a commencé
Exemple 1
Voici un exemple d’un message (très court) envoyé depuis la station d’IP 139.124.208.98, passant par le
serveur SMTP de l’ancienne Université de la Méditerranée et à destination de ma boîte aux lettres sur allegro :
Return-Path: <[email protected]>
X-Original-To: [email protected]
Delivered-To: [email protected]
Received: from univmed.fr (smtp.univmed.fr [139.124.132.120])
by allegro.iut.univ-aix.fr (Postfix) with ESMTP id 05C00FC0
for <[email protected]>; Wed, 28 Mar 2007 15:18:25 +0200 (CEST)
Received: from localhost (localhost.localdomain [127.0.0.1])
by univmed.fr (Postfix) with ESMTP id 87D0A46A399
for <[email protected]>; Wed, 28 Mar 2007 15:18:23 +0200 (CEST)
X-Virus-Scanned: by amavisd-new at univmed.fr
Received: from univmed.fr ([127.0.0.1])
by localhost (smtp.univmed.fr [127.0.0.1]) (amavisd-new, port 10024)
with ESMTP id 3EYMcu2EpxsQ for <[email protected]>;
Wed, 28 Mar 2007 15:18:23 +0200 (CEST)
Received: from [139.124.208.98] (unknown [139.124.208.98])
by univmed.fr (Postfix) with ESMTP id 1E90D46A423
for <[email protected]>; Wed, 28 Mar 2007 15:18:23 +0200 (CEST)
Message-ID: <[email protected]>
Date: Wed, 28 Mar 2007 15:18:22 +0200
From: Cyril Pain-Barre <[email protected]>
User-Agent: Thunderbird 1.5.0.7 (X11/20060927)
MIME-Version: 1.0
To: CPB <[email protected]>
Subject: exemple de message
X-Enigmail-Version: 0.94.2.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
Le corps du message commence ici...
...et se termine là.
IUT Aix-Marseille - INFO Aix
29/12/2014
- C. Pain-Barre
UE31 - M3102 : Services R´eseaux
3.3
Enonc´e du TP 3
22/25
SMTP
Simple Message Transfer Protocol (RFC 821) est un (vieux) protocole d’application de TCP/IP dont la spécification remonte à 1982. Il a pour but de transférer des messages tels que le précédent depuis l’expéditeur jusqu’à
la boîte aux lettres du (ou des) destinataire(s) du message.
Étant donné un destinataire pour un mél comme [email protected], il faut transmettre
le mél au serveur qui est en charge de cette boîte aux lettres. Ce serveur est celui spécifié par le champ MX de
l’enregistrement DNS pour le domaine de l’adresse (ici allegro.iut.univ-aix.fr qui n’a pas d’entrée
MX associée donc le message est directement envoyé à allegro). Bien qu’un client de messagerie puisse en théorie
contacter directement le serveur SMTP qui est en charge de la boîte aux lettres destination, il se contente généralement de délivrer le mél au serveur SMTP qui lui a été indiqué dans sa configuration. Ce serveur va alors servir
de relais et va contacter un (ou plusieurs) autre(s) serveur(s) SMTP pour lui(leur) remettre le mél. Dans ce cas, le
serveur SMTP relais joue le rôle client SMTP :
Transfert de courrier électronique par (relais) SMTP
client
serveur
serveur
serveur
de
SMTP
SMTP
SMTP
messagerie
(relais)
(relais)
(final)
Ce protocole est relativement complexe (la RFC fait 68 pages) mais la remise d’un message électronique à un
serveur SMTP peut être réalisée très simplement.
Pour cela, le client SMTP doit se connecter au serveur SMTP de l’hˆote cible, qui est normalement en écoute
sur le port TCP 25. Si un serveur SMTP est effectivement actif sur l’hôte cible, il réagit à l’établissement de la
connexion par l’envoi d’un message commençant par 220 comme :
220 hˆote READY FOR MAIL
Si le serveur refuse le client (par exemple un serveur SMTP d’un FAI qui n’accepte que la connexion d’une
machine ayant une IP attribuée par le FAI), il peut envoyer un message commençant par 554 comme :
554 <adresse client>: Client host rejected: Access denied
À l’instar de nombreux protocoles d’application de TCP/IP (et notamment de FTP vu précédemment), le
dialogue entre le client et le serveur se fait en mode requête/réponse :
• la requête du client commence par un mot clé suivi d’un espace et d’éventuels paramètres ;
• la réponse du serveur commence toujours par un code à 3 chiffres, suivi d’un espace et d’un texte destiné
à être traité par les humains. Le premier chiffre du code est toujours compris entre 1 et 5 : s’il vaut 4 ou
5, le serveur indique une erreur, sinon il s’agit d’une réponse positive.
i
3.3.1
À nouveau, les requêtes et les réponses doivent être terminées par la séquence ’\r\n’, bien que de
nombreux serveurs s’accommodent d’un simple ’\n’.
Messages du protocole SMTP
Voici ci-dessous quelques messages que le client SMTP doit envoyer dans l’ordre pour transmettre un message ainsi que quelques réponses possibles du serveur :
C. Pain-Barre -
29/12/2014
IUT Aix-Marseille - INFO Aix
23/25
Enonc´e du TP 3
UE31 - M3102 : Services R´eseaux
HELO hˆ
ote-client
le client se présente au serveur en indiquant par hˆote-client son nom d’hôte officiel (enregistré au DNS),
ou à défaut son adresse IP.
Une réponse positive du serveur commence par 250 comme :
250 hˆote serveur
-
Certains serveurs refusent le dialogue avec un client qui ne possède par d’enregistrement officiel au DNS ou dont le nom indiqué ne correspond pas à l’adresse IP du client.
MAIL FROM:<email-exp´
editeur >
indique au serveur quel est l’expéditeur du message (son adresse email). Si l’en-tête du message (voir
message DATA) ne contient pas de champ From:, cette adresse sera prise comme celle de l’expéditeur.
Une réponse favorable commencera par 250 comme :
250 OK
Une erreur possible est la suivante, où l’adresse de l’expéditeur n’est pas acceptée par le serveur (il n’y a
pas la suite comme @parici.fr) :
501 <toto>: sender address must contain a domain
RCPT TO:<email-destinataire >
indique un destinataire pour ce message. Il peut y avoir plusieurs destinataires pour un message et donc
plusieurs messages RCPT.
Une réponse favorable du serveur commencera par 250 comme :
250 OK
Si l’adresse du destinataire correspond à un domaine géré par le serveur (comme allegro.iut.
univ-aix.fr), mais que le destinataire est inconnu, alors la réponse du serveur commencera par 550
comme :
550 No such user
-
À cause des spams, de nombreux serveurs sont configurés pour ne pas accepter de servir de
relais, c’est à dire prendre en charge un message destiné à un utilisateur non local (il faudrait
alors que le serveur SMTP devienne un client SMTP en contactant le serveur SMTP en charge
du domaine 1 de cet utilisateur), si le client SMTP qui lui confie ce message n’appartient pas
au même réseau.
Dans ce cas, la réponse du serveur commence par 554 comme :
554 <[email protected]>: Relay access denied
IUT Aix-Marseille - INFO Aix
29/12/2014
- C. Pain-Barre
UE31 - M3102 : Services R´eseaux
Enonc´e du TP 3
24/25
DATA
le client indique au serveur qu’il souhaite lui communiquer le message.
Une réponse favorable du serveur commencera par 354 comme :
354 Enter message, ending with <CR><LF>.<CR><LF>
Le client est alors invité à transmettre son message, conformément au format décrit précédemment.
-
Ainsi qu’il est précisé dans la réponse du serveur ci-dessus, la fin d’un message doit être indiquée par la séquence "\r\n.\r\n", c’est à dire un point seul sur une ligne. Pour éviter les
ambiguïtés, le protocole veut que si une ligne du message commence par un point, alors il faut
le doubler (caractère de transparence).
Lorsque l’indicateur de fin du message est reçu par le serveur, celui-ci envoie une réponse commençant
par 250 comme :
250 OK
QUIT
indique au serveur que la transmission des messages est terminée, et que la connexion peut être rompue.
Le serveur répond toujours favorablement par une réponse commençant par 221 comme :
221 hˆote serveur Service closing connection
3.3.2
Exercice
Exercice 16 (Envoi du message anonyme)
En s’appuyant sur les messages possibles SMTP et la RFC 821 si besoin, envoyer un mail anonyme (en
déclarant une fausse identité) à destination de votre nom d’utilisateur sur allegro en discutant avec le serveur
SMTP d’allegro par telnet. Vous pouvez envoyer un message à d’autres utilisateurs mais n’utilisez comme
destinataire(s) que les utilisateurs d’allegro.
M
L’envoi de messages anonymes contredit totalement la charte du Département Informatique et
de l’Université et est répréhensible pénalement.
N E VOUS AMUSEZ SURTOUT PAS À USURPER L’ IDENTITÉ DE QUELQU ’ UN POUR ENVOYER UN
MESSAGE , SINON VOUS VOUS EXPOSEREZ À DE GRAVES SANCTIONS VOIRE DES POURSUITES
JUDICIAIRES ! M AIL ANONYME NE VEUT PAS FORCÉMENT DIRE NON TRAÇABLE !
Nous faisons cet exercice dans un but purement pédagogique qui a aussi pour objectif de vous
faire prendre conscience qu’on ne peut se baser simplement sur l’émetteur annoncé d’un message pour être sûr de son origine réelle. Pour cela, il faudra utiliser la signature numérique.
1. Rappellons que le serveur SMTP en charge d’un domaine correspond au champ MX (Mail eXchanger) de l’enregistrement DNS
de ce domaine.
C. Pain-Barre -
29/12/2014
IUT Aix-Marseille - INFO Aix
25/25
Enonc´e du TP 3
UE31 - M3102 : Services R´eseaux
Pour vérifier que le message a correctement été transmis, se loger sur allegro et exécuter mail qui affiche la
liste des messages disponibles. Votre message devrait y figurer. Taper son numéro pour le consulter, puis x pour
quitter mail.
[Corrigé]
3.4
Étude de la RFC de POP3
Exercice 17 (récupération de messages avec POP3)
En se basant sur la RFC de POP3 contenue dans le fichier rfc1939.txt téléchargé précédemment, contacter le serveur POP3 d’allegro, récupérer (uniquement) le message que vous vous êtes envoyé, puis le supprimer
du serveur.
[Corrigé]
IUT Aix-Marseille - INFO Aix
29/12/2014
- C. Pain-Barre