• Aucun résultat trouvé

Enoncé du TP 7 Réseaux

N/A
N/A
Protected

Academic year: 2022

Partager "Enoncé du TP 7 Réseaux"

Copied!
66
0
0

Texte intégral

(1)

Utilisation de services réseaux, NAT/PAT, Filtrage

C. Pain-Barre

INFO - IUT Aix-en-Provence

version du 23/4/2012

1 Préparation du TP

Au cours de ce TP, nous aurons besoin d’un certain environnement que nous allons mettre en place : 1. Sur une fenêtre terminal du PC, taper :

$ ssh -X allegro

afin de vous loger surallegro. Nous utiliserons ce terminal plus tard dans la séance ; 2. Sur une autre fenêtre terminal du PC, taper :

$ wget http://infodoc/~cpb/enseignement/reseaux/tp/tp7/vm/startxp.sh

$ bash startxp.sh

puis laisser la machine virtuelle XP démarrer (il faudra cliquer Ok lorsqu’elle démarrera effectivement) ; 3. Sur une dernière fenêtre terminal du PC, taper :

$ wget http://infodoc/~cpb/enseignement/reseaux/tp/tp7/enonce/adm2_linux.mar En attendant que tout ce qu’on a entrepris se termine, commencez à lire le texte de la section suivante.

4. Lorsque la machine virtuelle XP aura démarré, exécuterfirefox(icône sur le Bureau) et aller sur mon site http://infodoc/~cpb, rubriqueRéseauxpuis :

(a) cliquer sur le liendotnetfx.exeet enregistrer le fichier ;

(b) exécuter le fichier téléchargé pour installer leframework .NET 1.1. Cela peut prendre du temps, pendant lequel vous pouvez continuer la lecture de la section suivante (revenir de temps en temps sur XP pour voir s’il n’y a pas à répondre Ok à certains messages) ;

(c) cliquer sur le lien Simulateur.exeet enregistrer le fichier sur le Bureau. On se servira du simulateur dans la section6

2 TELNET

TELNET (pourTErminaL NETwork) a été défini par laRFC 854, à laquelle s’ajoutent de nombreuses autres RFC définissant des options ou extensions, à commencer par laRFC 855.

Ce protocole a été élaboré dans le but de fournir un service determinal virtuel, qui permet à un utilisateur de travailler à distance sur une station (comme avec SSH). Conçu à l’origine sous Unix, TELNET gomme les différences entre les systèmes d’exploitation : un utilisateur d’un système quelconque peut se loger sur un serveur d’un système quelconque.

(2)

TELNET fonctionne en mode client/serveur et utilise une connexion TCP que le client établit avec le serveur.

Dans cette section, sous allons principalement nous intéresser aux clients TELNET qui servent à :

• se loger à distance sur une station hébergeant un serveur TELNET ;

• dialoguer à distance avec un serveur quelconque, dont les messages sont formés de caractères ASCII.

i

Sous Unix et Windows, la commande telnet exécute un client TELNET. Ce n’est pas la seule. Par exemple sous Windows,Puttyet HyperTerminalen sont d’autres, plus élaborés que la commande telnetpar défaut du système.

2.I Client telnet pour le terminal virtuel

Pour une utilisation de terminal virtuel, permettant de se loger sur un hôte distant hébergeant un serveur TELNET, on exécute la commande :

$ telnet h ˆote

oùhˆoteest l’adresse IP ou le nom du serveur.

Cette commande exécute un client TELNET qui établit une connexion TCP avec le serveur TELNET qui doit être en écoute sur leport TCP23de l’hôtehˆote.

Le terminal d’où est exécuté le clienttelnet sert alors aux entrées-sorties avec un programme deloginexé- cuté sur le serveur. L’utilisateur est invité à entrer son nom et un mot de passe pour pourvoir exécuter un shell. Le serveur redirige les entrées-sorties du programme de login (et du shell) sur la connexion.

TELNET fonctionne en transmettant du texte. La connexion TCP est utilisée pour transmettre les commandes à exécuter sur le shell, ainsi que leur résultat. Tout se passe comme si l’utilisateur était installé devant une console de cethˆote. Outre ces données, la connexion sert aussi à transmettre des informations de contrôle. Notamment, le contrôle normalise les échanges de texte qui sont effectués car le client et le serveur peuvent avoir des codages de caractères différents.

Le rôle du terminal virtuel (client et serveur) est de servir d’interface entre un utilisateur et (un shell sur) un hôte distant, où ce que l’utilisateur tape est envoyé au serveur et où ce que le serveur répond est affiché sur le terminal de l’utilisateur, jusqu’à ce que la connexion soit rompue.

i

Il est possible d’exécuter des applications graphiques à distance lorsqu’on est logé avec TELNET sur un hôte. Il faut pour cela exécuter en local un serveur X (afficheur de fenêtres) et paramétrer quelques variables et autorisations d’accès. Nous verrons cela avec SSH.

Un certain nombre d’options peuvent être négociées entre le client et le serveur. Le clienttelnetoffre un mode commande pour son paramétrage et son contrôle, ce qui peut donner lieu à une négociation avec le serveur. Pour entrer dans ce mode, il faut taper la séquence de caractères d’échappement.Cette séquence est indiquée en début de session TELNET et consiste souvent à maintenir appuyée la touche Ctrl, suivie du caractère ] (crochet fermant que l’on saisit à l’aide de la touche AltGr), ou parfois du $(cas du client telnet de Windows). On entre alors dans le mode de commande du client telnet. On peut ensuite taper help pour avoir une liste de commandes disponibles, et il suffit de taper deux fois sur la touche Entrée pour revenir au terminal virtuel.

(3)

Exercice 1 (Utilisation de telnet depuis Linux) Depuis un terminal sur votre PC :

1. utilisertelnetpour vous connecter àallegro; 2. s’identifier

3. taper une commande quelconque (telle quels -l) ;

4. rentrer dans le mode de commande du client (en tapant les 3 touches AltGr+Ctrl+ ]) ; 5. taperhelp

6. taper deux fois sur Entrée (pour revenir à la session) 7. taper à nouveau une commande ;

8. terminer la connexion soit en tapant Ctrl+D, soitexit, soit en entrant dans le mode de commande et en tapantcloseouquit.

[Corrigé]

-

TELNET est un service non sécurisé ni crypté. En particulier le nom de l’utilisateur et son mot de passe circulent "en clair" dans le réseau. Par conséquent, le service TELNET est de moins en moins autorisé par les administrateurs réseaux qui le remplacent par SSH (secureshell). Notamment, il n’est plus possible de se connecter sur une machine du Département Informatique par TELNET, à partir de l’extérieur de l’IUT.

Cependant, TELNET est encore beaucoup utilisé pour administrer à distance certains (vieux) équipe- ments réseaux, ou des équipements légers.

Exercice 2 (Utilisation de telnet depuis Windows)

Agrandir la fenêtre de la machine virtuelle Windows XP, puis ouvrir un invite de commandes MS-DOS (l’in- terpréteur de commandes Windows) par leMenu Démarrer−→Exécuterpuis tapercmdet Entrée.

Sur ce terminal MS-DOS Windows :

1. pour élargir cette fenêtre terminal, effectuer un clic droit sur la barre du haut de la fenêtre et choisirPro- priétéspuis l’ongletConfigurationet mettre 150 comme largeur dans la zoneTaille Fenêtre;

2. exécutertelnet sans se connecter à un serveur. On peut remarquer que le caractère d’échappement est CTRL-$ (indiqué au début).

i

Parfois, le clienttelnet sous Windows est graphique. Il ne dispose pas du mode commandes, mis à part les menus de la fenêtre qu’il ouvre. Si c’est le cas pour la version installée sur votre poste, explorer ces menus.

3. taperhelp

4. se connecter àallegro 5. s’identifier

6. taper quelques commandes (pwd,cd,ls, . . .) sur la session TELNET surallegro 7. entrer dans le mode commandes detelnet

(4)

8. taperset ?

9. utilisersetpour demander unecho local.

10. taper Entrée pour sortir du mode commandes detelnet

11. taper à nouveau quelques commandes (pwd,cd,ls, . . .), et observer. Les caractères tapés sont écrits 2 fois.

i

Cette option est utile lorsqu’on contacte un serveur autre que TELNET en utilisant le programme telnet(voir ci-après) et que les caractères tapés n’apparaissent pas à l’écran.

12. quittertelnet

[Corrigé]

2.II Telnet comme simple client TCP

Le programme clienttelnetpeut être utilisé dans un autre but. En effet, il permet de communiquer avec des serveurs (en utilisant le protocole approprié) qui utilisent TCP comme protocole de transport. Ceci parce que telnetpeut se comporter comme un client TCP ordinaire. Il suffit de lui indiquer après l’hˆote, leportutilisé par le serveur par la ligne de commande suivante :

$ telnet hˆote port

où port est le numéro du port de l’application à contacter, ou le nom (ou un alias) du service rendu par cette application tel qu’il apparaît dans le fichier/etc/servicessur Linux etC:\WINDOWS\system32\drivers\

etc\services(ouC:\WINNT\system32\drivers\etc\services) sur Windows.

-

On en profite pour rappeler ici quelques ports TCPréservés:

Num (décimal) Application

7 Serveur echo

13 Serveur daytime

20 Serveur FTP (données) 21 Serveur FTP (commandes)

22 Serveur SSH

23 Serveur TELNET

25 Serveur SMTP (transfert de mail)

53 Serveur DNS

80 Serveur HTTP (www)

119 Serveur NNTP (news)

Le clienttelnetva alors établir une connexion TCP avec le serveur en écoute sur le portportde l’hôtehˆote.

Tout ce que l’utilisateur tapera sera transmis au serveur qui l’interprétera généralement comme un requête. Tout ce que le serveur enverra sera alors affiché sur le terminal de l’utilisateur et correspondra généralement à une réponse à une requête.

(5)

De nombreux protocoles utilisent les caractères ASCII pour former leurs messages. Les serveurs de ces proto- coles peuvent donc être contactés avectelnet. De plus, ces serveurs utilisent ou requièrent généralement que les fins de lignes soient exprimées par la séquence des deux caractères ’\r’ (Carriage ReturnouCR) et ’\n’ (Line FeedouLF), ce que fait justementtelnet.

i

Pour ne citer que quelques protocoles majeurs qui utilisent des caractères ASCII dans leurs échanges, il y a : HTTP, FTP, SMTP, POP3.

Exercice 3 (Utilisation de telnet en client TCP) Depuis un terminal du PC :

1. Utiliserlesspour consulter le fichier/etc/services, en particulier le début ;

2. Contacter le serveur daytime de infodoc en utilisant telnet. Celui-ci se contente de renvoyer la date et l’heure qu’il possède puis ferme la connexion ou reste muet.

i

Si le serveur ne ferme pas la connexion, entrer dans le mode commandes detelnetpour le faire.

3. Essayer ensuite de contacter le serveur daytime d’allegro et de paprika. En revanche, il y a très peu de chances de contacter avec succès un serveur situé à l’extérieur de l’IUT car ce genre de services est géné- ralement désactivé (ou filtré).

4. Contacter le serveurechodeinfodoc. Celui-ci renvoie les caractères qu’il reçoit jusqu’à ce que la connexion soit rompue. Taper quelques lignes puis terminer la connexion (en passant par le mode commandes de telnet).

[Corrigé]

3 Activités réseaux d’un hôte

3.I Les services réseau et la sécurité

Les applications ou processus ouvrant un port TCP ou UDP sur un système, constituent le premier point d’attaque accessible via un réseau TCP/IP (LAN et WAN). Le plus souvent ce sont des erreurs de configuration qui sont à l’origine des failles de sécurité dans un réseau. Il est également courant que l’administrateur a tout simplement oublié de désactiver un service réseau "sensible", comme par exemple le serveur TELNET installé par défaut par certaines distributions Linux (maintenant obsolètes) ou un serveur HTTP destiné à une utilisation exclusive en Intranet —mais par erreur accessible via une adresse IP publique (i.e. à partir d’Internet). Et bien sûr, la plupart des virus (vers et chevaux de Troie) communiquent via Internet avec d’autres serveurs SMTP, HTTP ou FTP pour pouvoir se propager, pour télécharger des modules supplémentaires ou tout simplement pour déposer les informations qu’ils ont pu extraire du système "infecté" sur un serveur distant (listes d’adresses e-mail, codes d’accès, numéro de cartes bancaires, etc.).

3.II Lister l’activité réseau avec netstat

Les processus utilisant le réseau peuvent être "débusqués" par l’administrateur réseau en utilisant la com- mandenetstat, disponible sur Unix et Windows. Elle donne des renseignements très complets sur les fonction- nalités réseau de la station, notamment sur l’état des connexions TCP, des ports (TCP ou UDP) utilisés par les

(6)

applications, et bien d’autres choses. Elle admet de nombreuses options comme on peut le constater en consul- tant le manuel Linux. En particulier,netstatliste l’ensemble des sockets TCP, UDP ou Unix ouvertes sur l’hôte local :

• les sockets TCP et UDP sont les adresses des applications utilisant internet. On les appelle les sockets internetet sont identifiées par le triplet :

(Adresse IP, Protocole, Port)

Tout programme utilisant la pile IP pour communiquer avec Internet doit demander une socket TCP ou UDP pour obtenir une adresse d’application ;

• les sockets unix correspondent à des fichier spéciaux (de typesocket) et sont utilisées localement pour des communications entre processus de l’hôte. Leur utilisation étant plus performante que les sockets internet, elles sont privilégiées pour les communications locales.

Un processus dialoguant avec Internet reçoit ses données via une socket internet.Dans le cas de TCP, les serveurs sont en écoute sur une socket internet afin d’accepter les connexions des clients. Lorsqu’un client se connecte, le système fournit au serveur une socket internet supplémentaire représentant cette connexion.

Lors de la demande de sa socket internet d’écoute, le serveur indique à TCP par quelle adresse IP il veut être joignable. S’il n’a pas de préférence, il indique0.0.0.0, voulant dire n’importe quelle adresse (any). Un processus utilisant UDP fait de même pour indiquer par quelle adresse il souhaite recevoir des datagrammes.

-

Pour un protocole de transport donné (TCP ou UDP), l’adresse d’une application est généralement affichée sous le formatadresse-ip:port(voir exemple ci-dessous).

Exemple 1

Supposons que sur un hôte on obtienne :

$ netstat -an

Connexions Internet actives (serveurs et établies)

Proto Recv-Q Send-Q Adresse locale Adresse distante Etat

tcp 0 0 127.0.0.1:7634 0.0.0.0:* LISTEN

tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN

...

tcp 0 0 139.124.187.34:40413 139.124.187.4:22 ESTABLISHED tcp 1 0 139.124.187.34:48549 91.197.138.30:80 CLOSE_WAIT ...

tcp6 0 0 :::22 :::* LISTEN

...

udp 0 0 0.0.0.0:68 0.0.0.0:*

udp 0 0 0.0.0.0:69 0.0.0.0:*

...

raw 0 0 0.0.0.0:1 0.0.0.0:* 7

...

Sockets du domaine UNIX actives(serveurs et établies) Proto RefCnt Flags Type State I-Node Chemin

unix 2 [ ACC ] STREAM LISTENING 677938 /var/run/avahi-daemon/socket ...

unix 2 [ ] DGRAM 2239 @/org/kernel/udev/udevd

unix 3 [ ] STREAM CONNECTE 689563 @/tmp/.X11-unix/X0

(7)

alors dans l’ordre, on peut en déduire qu’il y a :

• un serveur en écoute (LISTEN) sur le port TCP 7634 mais qu’il ne peut être contacté que par un processus local car il n’écvoute que sur l’adresse 127.0.0.1 ;

• un serveur (SSH) en écoute (LISTEN) sur le port TCP 22, en écoute sur toutes ses adresses IP (0.0.0.0) ;

• une connexion TCP est en cours (ESTABLISHED) entre un client SSH local d’adresse 139.124.187.34:40413et le serveur SSH139.124.187.4:22; le port TCP 22 étant celui des serveurs SSH ;

• une autre connexion TCP est en cours de terminaison (CLOSE_WAIT) entre un navigateur Web d’adresse 139.124.187.34:48549et le serveur HTTP91.197.138.30:80;

• le serveur SSH accepte aussi IPv6 ;

• un client DHCP est actif et utilise l’adresse0.0.0.0:68;

• un serveur TFTP est en écoute sur l’adresse0 0.0.0.0:69;

• une socket internet en mode raw est active : il s’agit d’une socket utilisée par une exécution de la com- mandeping, reposant sur ICMP (mode raw) ;

• un serveur local est en écoute sur le fichier /var/run/avahi-daemon/socket pour accepter les connexions d’autres processus locaux ;

• un processus utilise le fichier@/org/kernel/udev/udevdcomme socket unix en mode non connecté (DGRAM) ;

• un processus local est connecté (avec un autre) via le fichier@/tmp/.X11-unix/X0.

Exercice 4 (netstat sur linux)

Sur un terminal du PC, consulter le manuel en ligne denetstaten tapant :

$ man netstat

pour étudier ses options-a,-r,-n,-t,-uet-p, puis répondre aux questions suivantes : 1. afficher toutes les sockets ouvertes ;

2. afficher la table de routage uniquement ;

3. afficher la table de routage uniquement mais en désactivant la résolution inverse (et voir les adresses IP et les numéros des ports plutôt que des noms d’hôtes et de services) ;

4. l’état des connexions TCP uniquement, sans résolution inverse ; 5. l’état des sockets UDP

6. l’état des sockets UDP avec des informations sur les processus qui les possèdent. En principe, cette dernière information n’est disponible que pourroot.

[Corrigé]

Exercice 5 (netstat sur windows)

Consulter l’aide denetstatsous Windows en tapant : C:> netstat /?

pour étudier ses options-a,-r,-pet-n, puis répondre aux questions suivantes :

(8)

1. afficher toutes les informations disponibles 2. afficher la table de routage uniquement

3. l’état des connexions TCP uniquement, sans résolution inverse.

[Corrigé]

Exercice 6 (netstat sur linux)

Sur le PC, lancer Marionnet (menu Applications −→ Education −→ Marionnet) et ouvrir le fichier adm2_linux.martéléchargé en début de TP. Cliquer ensuite surTout Démarrer.

L’administrateur a remarqué un ralentissement anormal sur son réseau et suspecte une infection dem2par un processus utilisant Internet. Il pense qu’un serveur a été activé à son insu et est à l’origine des problèmes. Aidez l’administrateur à se débarrasser de ce processus gênant. Pour cela, analyser surm2les sockets internet ouvertes.

Essayer d’utilisertelnetpour discuter avec les serveurs que vous trouverez. Quand vous avez trouvé le processus coupable, tuez le !

i

Surm2vous êtesrootet vous pouvez vous servir avantageusement de l’option-pdenetstat. . .

[Corrigé]

4 Autres outils du bricoleur réseau

4.I nmap : scanner un réseau

Un des logiciels favoris des pirates (N) est unscanner de ports. En effet, les pirates cherchent les services qui sont susceptibles de posséder une faille de sécurité afin de pénétrer un système. Pour cela, ils ont besoin d’un bon scanner dans leur trousse à outil. Le plus célèbre est certainement nmap (téléchargeable sur le site http://www.insecure.org).

Mais le scanner ne sert pas seulement aux pirates ! ! Il permet aux administrateurs réseaux (☺) de vérifier les ports ouverts sur leurs systèmes et s’il n’y a pas de service inutile actif ni debackdoor.

i

nmapest aussi disponible pour Windows (voir sitehttp://www.insecure.org). De plus, une interface graphique nomméezenmapest maintenant disponible.

Exercice 7 (Utilisation de nmap sur Linux)

La documentation denmap(et le manuel en ligne) est très fourni car elle admet un très grand nombre d’op- tions dont certaines ne sont utilisables que par root. Nous nous limiterons à une utilisation des plus basiques, sans option simplement en tapant des commandes de la forme :

nmap hˆote

1. Utilisernmappour vérifier les services ouverts sur votre PC. Comparer avec le résultat denetstat -atn (l’état d’un serveur en écoute et donc actif est LISTEN ou LISTENING) ;

2. Depuis allegro, utiliser nmap pour vérifier les services ouverts sur votre PC. remarquer que les services locaux (en écoute sur 127.0.0.1) ne sont pas détectables ;

(9)

3. Depuis le PC, utilisernmappour vérifier ceux ouverts surallegro; 4. Depuis le PC, utilisernmappour vérifier ceux ouverts surinfodoc;

5. Éventuellement, utilisernmappour vérifier ceux ouverts sur box si vous connaissez votre adresse IP.

[Corrigé]

4.II netcat : un client/serveur à tester

Il existe d’autre logiciels quetelnetpour contacter un serveur quelconque, notamment le logicielnetcat(et son évolutionsocat). Sous Linux, l’exécutable se nommencet est généralement situé dans/usr/bin.

Comparé par àtelnet, l’avantage dencest qu’il permet non seulement d’envoyer des caractères ASCII sur une connexion mais aussi des données binaires. Il peut aussi servir de client UDP (alors quetelnetn’utilise que TCP). Enfin, il peut aussi servir de serveur, c’est à dire qu’il peut être "lié" à un port (TCP ou UDP selon le choix fait) et attendre que des clients lui envoient des données.

i

nc existe en plusieurs versions. Celle qui est installée sur les PC est la version BSD qui a plus de fonctionnalités que celle installée surallegro, et qui s’utilise un peu différemment.

i

Il existe aussi un portage denetcat sur Windows, que l’on peut trouver sur le site http://www.

vulnwatch.org/netcat/.

Exercice 8 (Utilisation de netcat sur Linux)

Sur un terminal du PC, consulter le manuel en ligne dencen tapant :

$ man nc

pour étudier ses options-uet-l, puis répondre aux questions suivantes : 1. Utiliserncpour contacter le serveur TCP daytime deinfodoc; 2. Utiliserncpour contacter le serveur UDP echo d’allegro;

3. Utiliserncpour lancer un serveur sur un port que vous choisirez (au dessus de 10000). Sur un autre terminal, par exemple depuisallegro, utilisertelnetpour vous connecter à ce serveur ;

4. Utiliser nc pour lancer un serveur UDP sur un port que vous choisirez (au dessus de 10000). Essayer d’utilisertelnetpour le contacter (ça ne marchera pas). Le contacter en laçant un clientnc(depuisallegro).

[Corrigé]

5 FTP

FileTransferProtocol(RFC 959) est un (vieux) protocole de la couche application de TCP/IP, permettant de transférer des fichiers entre des stations. Le programmeftp surLinuxet Windowsest unclientFTP permettant de contacter unserveurFTP.

En tapant :

$ ftp hˆote

oùhˆoteest l’adresse IP ou le nom d’une station, le client tente d’ouvrir une connexion TCP sur le port 21 de l’hˆoteindiqué :

(10)

serveur FTP

Hôte distant client

FTP

Établissement de la connexion de contrôle

12345 21

Hôte local

connexion de contrôle

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’utilisateuret unmot de passe.

5.I Authentification FTP

Il y a deux possibilités d’authentification :

• soit on dispose d’un compte sur le serveur et l’on veut transférer des fichiers depuis ou vers ce compte.

Dans ce cas, on saisit son nom d’utilisateur et son mot de passe ;

• soit on ne dispose d’aucun compte sur le serveur mais on sait qu’il met à disposition certains fichiers que l’on peut télécharger ou un répertoire dans lequel on peut déposer (upload) des fichiers. Dans ce cas, il faut utiliser 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 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’authentifi- cation. Il n’ya prioriaucune raison de ne pas le faire. . .

5.II Commandes du client FTP

Une fois leloginaccepté, de nombreuses commandes sont disponibles pour transférer des fichiers (mais pas des répertoires).

i

Pour obtenir la liste des commandes disponibles proposées par le clientftp, 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.

(11)

5.II.A Commandes relatives au transfert de fichiers

• binaryetascii: 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 texteoufichier 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, readmedevraient ê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 adap- ter 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 transfert qui suit soit binaire alors queascii demande à ce qu’il soit en mode texte.

• passive: permet de basculer du mode actif au mode passif, et inversement (voirgetci-après).

ftp> passive

M

Le client FTP sur Windows ne reconnaît pas cette commande. Ce client est donc géné- ralement inutilisable sur un ordinateur qui se trouve derrière unfirewallou uneNatbox.

Voir explications ci-dessous sur les modes actif et passif.

• get: permet de demander le transfert d’un fichier du serveur vers l’hôte local.

ftp> get fic-source [fic-destination]

oùfic-sourceest la référence du fichier à transférer et fic-destinationest le nom qu’il portera localement.

Le transfert du fichier est opéré sur uneconnexion de donnéesétablie pour l’occasion.

Il y a deux possibilités pour l’établissement de la connexion de données :

enmode actif, 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 la connexion de données en mode actif, le client devient le serveur et le serveur devient le client.

client FTP

Hôte local

serveur FTP

Hôte distant connexion de contrôle

12345

34567 20

21 connexion de données

Établissement de la connexion de données (mode actif)

(12)

-

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 routeur qui filtre les connexions entrantes (firewall), 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.

enmode passif, c’est le client qui se connecte au serveur pour établir la connexion de données. Le port utilisé pour cette connexion par le serveur est communiqué au client par l’intermédiaire de la connexion de contrôle.

client FTP

Hôte local

connexion de contrôle

serveur FTP Établissement de la connexion de données (mode passif)

12345

23456 45678

21 connexion de données

Hôte distant

-

Chaque transfert de fichier doit se faire sur une connexion de données différente.

-

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.

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.

• 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

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.

(13)

• mget: permet de demander le transfert de plusieurs fichiers du serveur vers l’hôte local.

ftp> mget motif {motif}

oùmotifest 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 (voirpromptci-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-sourceest la référence du fichier à transférer etfic-destinationest 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 uneconnexion 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ùmotifest 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.

5.II.B 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

• lsoudir: 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´erenceest le fichier ou le répertoire sur lequel appliquer la commande et fichier-sortieest 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 simplels(j’avoue ne pas savoir pourquoi, alors si vous le savez, dites-le moi en m’envoyant unmail).

-

Les informations fournies parls(dir) le sont sur uneconnexion de données.

• chmod: permet de changer les permissions d’un fichier (ou répertoire) sur le serveur ftp> chmod permissions r´ef´erence

(14)

• rename: permet de renommer un fichier sur le serveur ftp> rename ancien nouveau

demande de renommer le fichier (ou répertoire)ancienennouveau.

M

On ne déplace pas un fichier avec cette commande. De plus, si le fichier nouveau existe déjà, il est écrasé. Siancienetnouveausont des répertoires (existants), alorsnouveausera é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´erenceest un répertoire vide.

• !: permet d’exécuter une commande localement.

ftp> ! [commande]

Lacommandeest 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 commandeest 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 typeexit), le client FTP reprend la main.

5.II.C Commandes de gestion de la session

• byeouexitouquit: terminer la session FTP et se déconnecter du serveur.

ftp> bye ftp> exit ftp> quit

• 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

(15)

• 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’uti- lisateurnom.

5.III Limitations de FTP

FTP n’est pas conçu pour télécharger ou déposer une hiérarchie de répertoires (arborescence). Plus sim- plement, 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 doivent être 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 pargzip) ou.tgZ,.taz(si compression parcompress).

Parfois, l’archive est compressée après avoir été créée, et porte une extension de type.tar.gzou.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.zipou.rar.

i

Certains clients FTP (comme la plupart des clients graphiques) permettent de transférer des arbores- cences. Pour cela, ils parcourent eux-même récursivement l’arborescence à télécharger, en faisant une requêteLISTpour chaque répertoire rencontré.

Si vous n’avez pas encore vu l’utilitairetar en cours de systèmes (ni les utilitaires de compression/décom- pression), vous ne saurez pas télécharger pour le moment une arborescence sans passer par un client graphique.

5.IV Clients FTP graphiques

Il existe pléthore de clients FTP graphiques plus ou moins ergonomiques, notamment en offrant une visua- lisation côte-à-côte du répertoire distant et du répertoire local et en permettant le drag and drop. 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 :

• WS-FTPsous Windows édité paripswitch

• Filezillasous Windows et Linux

• gftpsous Linux/Unix

5.V Exercices

Exercice 9 (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’adresseftp.rfc-editor.org(ou au serveur ftp.pasteur.fr).

Aller dans le répertoirein-notes(sur le serveurpasteur.fr, ce répertoire est dans pub/computing/rfc) et récupérer le fichierrfc1939.txtenmode passif(transfert de fichier texte) avec visualisation de l’activité de transfert. Lorsque le fichier a été transféré, fermer la connexion en quittantftpen tapantquit(oubye).

[Corrigé]

(16)

Exercice 10 (Dépot d’un fichier sur un serveur FTP)

Toujours depuis un terminal du PC, utiliserftppour se connecter au serveur FTP d’allegroen utilisant votre vrai nom d’utilisateur. Une fois fait, créer un répertoirerfcdanstpà partir de la session FTPet y déposer le fichier rfc1939.txt. Enfin quitter le client FTP et vérifier que le fichier est bien présent surallegro.

[Corrigé]

Exercice 11 (Utilisation de gftp depuis Linux (allegro))

En utilisantgftp depuis allegro, récupérer la RFC 959 depuis le serveur ftp.rfc-editor.org. Cette RFC décrit le protocole FTP. Y jeter un coup d’œil puis la mettre de côté.

[Corrigé]

i

Les administrateurs réseaux ferment de plus en plus les services non sécurisés (cryptés) comme FTP.

Dans ce cas, il faut utiliser de sous-modules de ssh (secure shell) offrant des services de type FTP- crypté. Les clients de ces sous-modules sont par exemplescp(secure copy),sftp(secure FTP) oulftp sous Linux. Sous Windows, il existe un logiciel gratuit nomme PSFTP que l’on trouve sur le site consacré à PUTTY (un client SSH pour Windows) : http://www.chiark.greenend.org.

uk/~sgtatham/putty/.

5.VI 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 pro- duit 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 Re- turn ouCR) et ’\n’ (Line Feed ouLF). Cependant, les serveurs acceptent généralement les re- quêtes qui ne se terminent que parLF.

USERnom

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 expli- cation. 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.

(17)

-

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.

PASSmot-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.

CWDr´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

PORTh1,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 deP etp2celle 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 port38693 (= 151×256 + 37) sur la machine d’adresse82.3.4.5.

(18)

TYPEtype

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 messagePORTouPASV.

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.

RETRr´ef´erence

demande le transfert du fichier indiqué depuis le serveur vers le client. Ce transfert se fait dans les même conditions que pourLIST.

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.

STORr´ef´erence

pour indiquer au serveur que l’on veut transférer des données, qu’il faut sauver dans le fichierr´ef´erence.

Ce transfert se fait dans les même conditions que pourLIST.

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.

(19)

5.VII Exercices

Exercice 12 (Transfert manuel en mode actif) Depuis un terminal du PC :

1. utilisertelnetpour ouvrir une connexion de contrôle avec le serveur FTP deallegro

2. vous authentifier avec votre vrai nom d’utilisateur et votre mot de passe.Attention, il est écrit en clair ! ! 3. sur un autre terminal du PC, utiliserncpour se mettre en écoute sur un port que vous choisirez

4. sur la connexion de contrôle, indiquer au serveur sur quel port votrencest en écoute

5. 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

6. quitter la session FTP.

[Corrigé]

Exercice 13 (Transfert manuel en mode passif)

Utilisertelnetpour ouvrir une connexion de contrôle avec le serveur FTP deftp.rfc-editor.org(ou ftp.pasteur.fr) puis faites le nécessaire afin de récupérer la RFC 821 (fichierrfc821.txt du répertoire in-notes). La 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 denc. . .

[Corrigé]

(20)

6 Simulateur : Nat/Pat et firewall

Soit l’interconnexion de réseaux modélisée dans le simulateur de Pierre Loisel (CERTA) :

formée par les 5 réseaux suivants (plus Internet et les FAI) :

• le réseau192.168.2.0/24constitué des stationsst1etst2

• le réseau192.168.0.0/24constitué des stationsst1,st3etst4

• le réseau192.168.1.0/24constitué des stationsst5,st6,st7etst8

• le réseau192.168.5.0/24constitué des stationsst9,st11etst13appartenant au vlan 5

-

Tous les vlans de l’exercice sont de niveau 2, ce qui n’a pas vraiment d’importance pour le sujet traité.

• le réseau192.168.6.0/24constitué des stationsst9,st10,st12etst14appartenant au vlan 6

Les stationsst1,st5etst9ont toutes des cartes d’accès distant les reliant à Internet et sont configurées pour servir de routeurs. Cependantles autres stations appartiennent à des réseaux privés et ne peuvent pas encore utiliser Internet.

Exercice 14 (Simulation Nat/Pat et firewall) Depuis la machine virtuelle Windows :

1. Dans un navigateur, aller sur le sitehttp://infodoc.iut.univ-aix.fr/~cpbet récupérer le fichier reseau_depart.xml, puis le charger dans le simulateur de Pierre Loisel

2. En modeTransport, activer leNat/Patsurst1, st5 etst9. Pour cela, effectuer un clic droit sur la station, choisirConfiguration IPet cocher la caseNat/Patpuis sélectionner l’interface publique ppp(qui les relie à Internet) :

(21)

3. Mise en place de serveurs :

(a) faire écouter par st2 son port UDP 69 (serveur TFTP). Pour cela, en mode Transport, faire un clic droit surst2puis choisirTables→Ports écoutéspuis ajouter le port UDP 69 :

(b) faire écouter parst3son port TCP 22 (serveur SSH) (c) faire écouter parst8son port TCP 21 (serveur FTP) (d) faire écouter parst12son port TCP 80 (serveur HTTP) (e) faire écouter parst13son port TCP 22 (serveur SSH)

(f) faire écouter parst14son port TCP 21 (serveur FTP)

4. Configuration des redirections de port (traductions statiques) surst1,st5etst9:

(a) configurer st1pour que l’accès aux serveurs dest2etst3soit possible depuis Internet. Pour cela, en modeTransport, faire un clic droit sur st1puis choisirTables →Table Nat/Patet ajouter les entrées pour les serveurs dest2etst3. Pour chaque serveur, il faut remplir une ligne de la table :

en spécifiant :

• le protocole de transport TCP ou UDP

• l’adresse IP privée du serveur (ici dest2oust3)

• le port privé du serveur (celui sur lequel il est en écoute)

• l’adresse IP publique (donc ici dest1)

• le port public (ici on peut prendre le même que le port du serveur)

(22)

(b) configurerst5pour que l’accès au serveur dest8soit possible depuis Internet

(c) configurerst9pour que l’accès aux serveurs dest12,st13etst14soit possible depuis Internet

5. Vérifier l’accessibilité des serveurs depuis n’importe quelle station (d’un réseau différent) en émettant une requête destinée à ces serveurs et en les faisant répondre (en mode Transport, clic-droit sur une station puisenvoyer une requête/répondre à une requête).Pendant la simulation, observer les traductions PAT (adresses et ports) lors de la traversée éventuelle des NATBoxst1,st5etst9.

i

On rappelle que l’envoi de la requête doit se faire vers l’IP publique et le port public du serveur ; pas vers les adresses privées. . .

6. Configuration d’un firewall (règles de filtrage ou access lists). Les règles de filtrage sont entrées sur une station/routeur en mode Transport en effectuant un clic droit sur la station/routeur puis choisir Tables→ Règles de filtrage. Chaque règle dicte comment traiter un datagramme UDP ou segment TCP ou message ICMP reçu, et il faut remplir une ligne de la table :

en spécifiant pour quels datagrammes elle doit être appliquée :

• sur quelle carte en entrée (*pour toutes)

• sur quelle carte en sortie (*pour toutes)

• pour quel protocole parmiUDP,TCPouICMP(*pour tous)

• pour quel bloc d’adresses IP source, indiqué par une adresse et un préfixe (*pour toutes)

• pour quel port source (*pour tous)

• pour quel bloc d’adresses IP destination, indiqué par une adresse et un préfixe (*pour toutes)

• pour quel port destination (*pour tous)

• que faire du datagramme qui correspond à ces critères :AccepterouBloquer.

-

Pour un datagramme donné, la première règle qui correspond est celle appliquée.

Configurer les règles dest9pour que :

(a) tout le monde puisse atteindre les serveurs de la DMZ (serveur Web surst12et serveur FTP surst14) (b) seulst1puisse atteindre le serveur SSH (dest13)

(c) laisser passer en entrée tout le trafic ICMP (d) bloquer tout autre type de trafic entrant (e) laisser le trafic sortant passer

7. Vérifier que ces règles fonctionnent en tentant d’envoyer des requêtes à ces serveurs et en les faisant ré- pondre lorsqu’elles arrivent.

[Corrigé]

(23)

7 Introduction à SSH

Le protocole SSH (pourSecureSHell) est le remplaçant dersh(remoteshell) qui correspond grosso-modo à TELNET. Comme nous le verrons, SSH permet bien plus de choses que TELNET. Il permet aussi de transférer des fichiers de façon sécurisée (fiable et cryptée) via les sous-modules SCP et SFTP.

SSH existe en deux versions majeures 1 et 2 qui sont incompatibles. La version 2 est la plus sécurisée et à utiliser à chaque fois que c’est possible.

Une différence notable entre TELNET (ou rsh) et SSH est que ce dernier établit un canal de transmission full-duplex fiable etcryptéentre le client et le serveur. Ainsi, alors que tout le trafic dans le protocole TELNET passe en clair sur le réseau (y compris le nom d’utilisateur et son mot de passe), en SSH ce trafic est crypté. Il est donc beaucoup plus sécurisé.

Avant d’établir le canal crypté, SSH prévoit une authentification du serveur par le client. Puis, lorsque ce canal est établi, c’est au serveur qu’il incombe d’authentifier l’utilisateur qui souhaite se loger (ou utiliser ses fonctionnalités).

SSH utilise le chiffrement asymétrique pour crypter certains échanges puis utilise un cryptage symétrique une fois les paramètres de la communication négociés.

i

Pour illustrer certaines notions de SSH, nous utiliserons dans un premier temps le client SSH le plus utilisé sur Linux :ssh. Le serveur SSH sous Linux est généralementsshd.

7.I Notion de chiffrement

Il existe deux approches au chiffrement : le chiffrementsymétriqueet le chiffrementasymétrique. Avant de présenter le chiffrement asymétrique, on va d’abord critiquer le chiffrement symétrique.

7.I.A Critique du chiffrement symétrique

Pour le chiffrement symétrique, un fichier est crypté/décrypté à l’aide d’une unique clé. Ainsi, lorsqu’on communique un fichier crypté à quelqu’un, cette personne doit posséder la clé qui a permis le cryptage pour pouvoir décrypter le fichier. Le principe est illustré par le schéma suivant :

cryptage

transmission

décryptage clé partagée entre

l’émetteur et le récepteur

émetteur récepteur

abc efg ijk

010 101 010

010 101 010 abc efg ijk

Le problème est que quiconque possède cette clé sera en mesure de décrypter les données confidentielles.

Ainsi, si la personne à qui on a communiqué notre clé n’est pas très prudente, on court le risque de perdre la

(24)

confidentialité de nos transmissions. D’autre part, on peut très bien envoyer un fichier crypté à quelqu’un mais souhaiter que cette personne ne puisse pas décrypter les autres fichiers que l’on crypte. Dans ce cas, il faut utiliser une clé spécialement pour l’échange avec cette personne. C’est déjà pénible mais ce n’est pas tout : comment transmettre une clé, en étant sûr que personne ne la récupère et puisse ainsi lire les données transmises ? Les moyens de communication étant régulièrement "écoutés" par différentes "organisations" (si ce n’était pas le cas, ce ne serait pas la peine de mettre en place un cryptage des données. . .), que reste-t-il ? une communication en mains propres ?

Manifestement, cette méthode de chiffrement pose de nombreux problèmes et on comprend pourquoi elle est de moins en moins utilisée.

7.I.B Le chiffrement asymétrique

Le chiffrement asymétrique est une méthode de chiffrement qui apporte une solution intéressante aux pro- blèmes de gestion de clé que connaît le chiffrement symétrique.

Il nécessite l’emploi d’une paire de clés :

• une clé privéequi, comme son nom l’indique, doit demeurer privée et jamais communiquée. Néanmoins, elle doit être stockée sur l’ordinateur qu’utilise son créateur (possesseur). Celui-ci doit donc impérative- ment la protéger au mieux, notamment par l’intermédiaire d’une "passphrase" et en la rangeant dans un répertoire et un fichier inaccessibles aux autres.

• une clé publiquequi, elle, peut être communiquée au reste du monde, sans aucun risque de dévoiler la clé privée. En effet, si les deux clés sont étroitement liées, il n’est pas possible de fabriquer la clé privée à partir de la clé publique. En revanche, si la clé publique est perdue, il sera possible de la générer à partir de la clé privée.

Le chiffrement asymétrique permet le cryptagemais aussi la signature numériquede documents, qui ont des objectifs différents :

• cryptage : il s’agit de protéger un document en le cryptant. Seuls les détenteurs d’une clé appropriée pourront le décrypter et le lire ;

• signature :il s’agit d’authentifier un document ainsi que son rédacteur.

i

Le termechiffrementest souvent employé dans les documentations à la place decryptage. Par la suite, nous l’employons dans son sens large, recouvrant lasignature.

7.I.B.1 Paires de clés et trousseau

Différents utilitaires existent pour créer un paire de clés publique et privée. L’outil que je préconiserais est gpgabbréviation deGnuPG(The GNU Privacy Guard), disponible à la fois pour Linux et Windows.

En utilisantgpg, on crée un trousseau de clé comportant une clé privée et la clé publique associée.

En outre, gpg gère aussi les clés publiques que nous ont communiquées les personnes avec lesquelles on désire crypter/signer les échanges.

gpgpourra alors être utilisé pour crypter/décrypter et/ou signer/vérifier des documents. Nous n’étudions ici que les principes du chiffrement et non la génération de clés ni les opérations de cryptage/décryptage ou signa- ture/vérification avecgpg. Le lecteur intéressé pourra étudier le tutorial sur le chiffrement, bientôt accessible sur

(25)

mon site (http://infodoc.iut.univ-aix.fr/~cpb/).

On supposera par la suite que les personnes impliquées dans les échanges ont à leur disposition un tel outil.

7.I.B.2 Cryptage/Décryptage par paire de clés

Pour envoyer un document crypté à quelqu’un, l’émetteur doit posséder la clé publique du récepteur. Des serveurs de clés (publiques) existent sur Internet afin de faciliter la distibution des clés publiques.

cryptage (clé publique)

émetteur récepteur

clé privée que seul le récepteur possède

décryptage (clé privée)

transmission

la clé publique a été communiquée à l’émetteur

clé publique communiquée aux émetteurs potentiels de documents cryptés

abc efg ijk

010 101 010

010 101 010 abc efg ijk

FIGURE1 – Cryptage asymétrique avec la clé publique du destinataire qui décryptera avec sa clé privée.

La méthode de cryptage asymétrique est illustrée par le schéma de la figure1. L’émetteur crypte le document à l’aide de la clé publique du récepteur. Seule la personne possédant la clé privée peut décrypter le document crypté. Ainsi, lorsque le récepteur reçoit le document crypté, il le décrypte à l’aide de sa clé privée.

7.I.B.3 Signature/vérification par paire de clés

La signature numérique de document a pour objectif de prouver au récepteur que le document a bien été en- voyé par l’émetteur annoncé, et qu’il n’a pas été modifié pendant son transport.

D’un autre côté, la signature numérique assure la non-répudiation : l’émetteur ne peut nier avoir envoyé le document.

Cette signature est généralement générée par l’algorithme DSA (Digital Signature Algorithm). Le principe de son utilisation est le suivant, illustré par la figure2:

1. L’émetteur calcule une empreinte (fingerprint) du document par une fonction de hashage. La fonction de hashage doit être telle qu’une modification minime du document produit une empreinte différente et qu’il est impossible de produire un document à partir d’une empreinte. L’algorithme de hashage généralement utilisé est SHA1. Il existe aussi MD5 réputé plus faible que SHA1

2. L’émetteur crypte l’empreinte avec sa clé privée par une méthode qui rend possible son décryptage par la clé publique associée

3. Le récepteur décrypte l’empreinte avec la clé publique de l’émetteur (authentification de l’émetteur) 4. Le récepteur calcule l’empreinte du message et la compare à celle obtenue à l’étape précédente (vérification

de la non modification du message)

(26)

S S

émetteur récepteur

transmission signature (clé privée)

vérification (clé publique) clé publique communiquée

aux récepteurs potentiels de documents signés clé privée que seul l’émetteur possède

la clé publique a été communiquée au récepteur

abc efg ijk

abc efg ijk

abc efg ijk

abc efg ijk

FIGURE 2 – Signature d’un document avec la clé privée de l’émetteur. Le récepteur vérifie avec la clé publique correspondante.

7.II Authentification d’un serveur SSH

Il s’agit de s’assurer que le client se connecte au bon serveur et non pas à une machine qui aurait usurpé l’IP du serveur (mise en place par un attaquant pour voler les mots de passe, par exemple) ni à la machine d’un attaquant située sur le trajet menant au serveur, qui servirait à intercepter ou modifier nos messages. Cette dernière attaque est de typeman-in-the-middleet est illustrée par le schéma suivant :

client attaquant serveur

sherekhan

mowgli bagheera

connexion SSH

connexion SSH

Le principe de cette attaque est le suivant :

• Le client (surmowgli) veut établir une connexion SSH surbagheera

• Sur le chemin emprunté par les datagrammes IP se trouve la machinesherekhande l’attaquant qui inter- cepte la demande de connexion et répond à la place debagheera

• L’attaquant établit aussi une connexion SSH entresherekhanetbagheera

• Lorsque le client s’identifie (pensant avoir à faire à bagheera), il communique son nom d’utilisateur et son mot de passe qui sont récupérés par l’attaquant

• L’attaquant utilise ces informations pour s’identifier surbagheera

• Deux connexions SSH sont alors établies, l’unemowgli↔sherekhanet l’autresherekhan↔bagheera

• L’attaquant fait transiter (automatiquement) les commandes du client vers le serveur, ainsi que les ré- ponses du serveur vers le client, éventuellement en modifiant certaines choses.

i

Cette attaque ne peut en principe être possible que lors de la première connexion du client. Si elle réussit, elle peut être reproductible.

Pour authentifier le serveur et initier la connexion, SSH utilise une paire de clés publique/clé privée et un mécanisme de chiffrement asymétrique. Lors de l’installation du serveur SSH, une paire de clés est générée. Elle doit rester la même tant que l’administrateur n’a pas détecté un risque de vol de la clé privée. La clé publique est destinée à être transmise à tout client qui en fait la demande.

(27)

7.II.A Emplacement des clés d’un serveur SSH

Les clés publiques et privées d’un serveur SSH sous Linux sont situées dans le répertoire/etc/sshet sont contenues dans les fichiers :

• ssh_host_dsa_key

• ssh_host_dsa_key.pub

• ssh_host_rsa_key

• ssh_host_rsa_key.pub

• ssh_host_key

• ssh_host_key.pub

Ces 6 fichiers définissent 3 paires de clés :

• lesssh_host_key*définissent les clés pour SSH version 1 (obsolète)

• lesssh_host_dsa_key*définissent les clés DSA pour SSH version 2

• les ssh_host_rsa_key* définissent les clés RSA pour SSH version 2 : ce sont les clés les plus em- ployées.

Les clés publiques sont dans les fichiers d’extension.pubet sont lisibles par tous. Les autres fichiers contiennent les clés privées et ne sont accessibles qu’àroot.

7.II.B Procédure d’authentification du serveur et cryptage de la connexion

Lors de la connexion du client, le serveur lui renvoie sa clé publique. Le client vérifie alors que cette clé correspond bien à celle du serveur qu’il aura au préalable stocké dans un fichier de configuration (voir plus loin).

Si c’est le cas, le serveur est authentifié et sa clé publique sera utilisée par le client pour négocier avec le serveur les clés et les algorihtmes utilisés pour crypter les transmissions. En particulier, le client transmet au serveur une clé de session cryptée avec la clé publique du serveur (ainsi que l’algorithme utilisé) qui sera utilisée ensuite dans les échanges par un chiffrement symétrique. Le serveur étant le seul à détenir la clé privée, il est le seul qui peut décrypter la clé de session. La clé de session et les algorithmes seront renégociés régulièrement au cours de la communication SSH. Notons qu’il y normalement une clé de session par sens de transmission.

-

La clé publique du serveur est très importante car elle permet d’authentifier le serveur et de lui trans- mettre la clé de session. Si l’on connaît la clé publique du serveur, cette méthode rend impossible l’attaque de typeman-in-the-middle.

7.II.C Authentification du serveur lors de la première connexion

Lors de la première connexion du client, celui-ci ne connaît pas la clé publique du serveur et ne peut donc pas être sûr d’avoir à faire au bon serveur. Selon la configuration du client SSH, celui-ci peut aller jusqu’à refuser le dialogue avec un serveur inconnu. Dans la grande majorité des cas, le client SSH informe l’utilisateur qu’il ne peut assurer l’authenticité du serveur et lui demande s’il doit continuer comme dans l’exemple suivant :

$ ssh allegro.iut.univ-aix.fr

The authenticity of host ’allegro.iut.univ-aix.fr (139.124.187.4)’ can’t be established.

RSA key fingerprint is 93:92:5c:40:21:e5:67:e0:9f:53:11:1f:ec:b1:36:52.

Are you sure you want to continue connecting (yes/no)?

Il revient donc à l’utilisateur de s’assurer que le serveur est le bon !L’idéal serait que la clé publique du serveur soit communiquée au préalable à l’utilisateur (par exemple sur une page Web) mais ce n’est généralement pas le cas.

(28)

M

La plupart des utilisateurs n’ayant aucun moyen de la vérifier, l’acceptent sans autre vérification, ce qui les expose aux attaques de typeman-in-the-middle. Une possibilité de contrôle de cette clé est présentée un peu plus loin.

Cette acceptation se fait en répondantyesà la question posée précédemment comme sur l’exemple suivant :

Are you sure you want to continue connecting (yes/no)? yes

Warning: Permanently added ’allegro.iut.univ-aix.fr,139.124.187.4’ (RSA) to the list of known hosts.

Suite à l’acceptation de la clé publique, le serveur est considéré comme authentifié (il devra néanmoins être capable de décrypter les messages – notamment la clé de session – cryptée avec la clé publique annoncée).

7.II.D Enregistrement de la clé publique du serveur côté client

La ligneWarning:qui suit l’acceptation de l’utilisateur indique que l’"identité" du serveur (nom, adresse, clé publique) est enregistrée dans le fichier$HOME/.ssh/known_hosts(de l’utilisateur). Pour les connexions futures, le serveur devrait être automatiquement reconnu grâce à ce fichier. Si le serveur est connu mais que la clé publique annoncée n’est pas la même (elle peut avoir changé ou une attaqueman-in-the-middleest en cours), l’utilisateur en sera averti et selon la configuration du client SSH, celui-ci refusera de continuer (mais, le cas échéant, on pourra modifier le fichier$HOME/.ssh/known_hostspour enlever la ligne concernant l’ancienne clé du serveur puis recommencer la connexion).

i

Il est possible pour l’administrateur système de renseigner le fichier/etc/ssh/ssh_known_hosts pour contenir les identités de serveurs auxquels les utilisateurs peuvent se connecter. Cela leur évite de les authentifier eux-mêmes. . .

7.II.E Hashage des fichiers known_hosts

Selon l’installation du client SSH, les fichiersknown_hostscontiennent les clés publiques des serveurs plus ou moins en clair. Par exemple, la clé d’allegroserait stockée ainsi (sur une ligne) :

$ ssh-keygen -F allegro

allegro,139.124.187.4 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAntyWXC9hVDfBxhXLQ933/

bWLxEQualfiv65C0FnWb6EQ1Ww13ye1tbCUb4lFgbkoAtSgLRld4/2olbw0Gt37XMW2w95VzeqB66nr aXORQAdk+svyFGGJe5OJ3dCizw0t7LEk0SZ9iLxPF9la1Y+g9P2LCzv+PGvkiuG7lr4dIv6NKTg8oZE LxWA2QV/cEBOjuIxRo5CgXWFt1eEj43ARJEr0vqRaMLbUlsBJ9p9CPhbu+ZPnPffoHtlRWSobsd2Psu BcWDXHrACF7EZwr2Og/W8O4wIUqmxIlnGvdQcx0tx54uSL5g/VeN7+8AI1nypcP1Ib+260UttwrvYqN NdRgQ==

Or, on voit que l’adresse IP d’allegroapparaît. Ce n’est pas très sûr car les utilisateurs ont tendance à avoir le même mot de passe sur les ordinateurs qu’ils utilisent. Si un attaquant a réussi à voler le mot de passe d’un utilisateur, alors en consultant ce fichier, il sait que cet utilisateur a probablement le même mot de passe sur les serveurs qu’il contient et peut tenter de s’y introduire. C’est pourquoi généralement les fichiersknown_hosts sont hashés et il n’est pas possible de retrouver les noms ou adresses des serveurs correspondants. En cas de hashage (comme sur une Debian récente), l’identité d’allegroest stockée par la ligne suivante :

Références

Documents relatifs

Or cette configuration manuelle peut être fastidieuse pour un nombre important de périphériques car pour chaque machine il faut entrer manuellement l'adresse IPv4, le masque

//On associe un paquet à un buffer vide pour la réception DatagramPacket paquet =new DatagramPacket(buffer,buffer.length());. //On crée un socket pour écouter sur le

Serveur en gestion multi--clients clients en en mode connecté. mode

◮ Réponse : message transmis par un serveur à un client suite à l’exécution d’une opération, contenant le résultat

Ce n'est pas une bonne pratique d'un point de vue sécurité car cela veut dire que les machines de l'entreprise peut communiquer directement entre elles.. Si l'une d'elle est

En revanche, certaines utilisations comme le continu (streaming) nécessitent l'emploi d'un protocole plus léger et plus rapide, comme UDP (User Datagram Protocol ou protocole

– Comment casser la relation forte entre client et serveur, comment rendre le client indépendant du serveur pour l'appel.

L’algorithme, g´ en´ erique, pr´ ecise simplement que T est un tableau d’objets e ∈ E sur lesquels existe une relation d’ordre total. L’algorithme fonctionne donc aussi bien,