Les réseaux informatiques, by MadDany And on the third day God created networks.... I. CONCEPTS FONDAMENTAUX ____________________________ Note : ce texte s'adresse à des personnes ayant des connaissances générales suffisamment avancées en informatique, càd que je ne passerai pas mon temps à redéfinir ce qu'est un octet ou l'hexadécimal, et que je pars du principe que vous connaissez globalement les différents OS et leur fonctionnement. ***Les différents types de commutation Il existe 3 types principaux de commutation (manière dont les données sont transférées) : la commutation de circuits, la commutation de messages et la commutation de paquets. La commutation de circuits est la première à avoir fait son apparition. Le réseau téléphonique est un exemple de réseau à commutation de circuits. Dans ce cas un réseau un circuit dédié est matérialisé entre les deux utilisateurs, càd qu'aucune autre donnée que les données qu'ils ont à se transmettre ne transiteront par ce circuit tant que la liaison est maintenue, et aucune donnée ne peut être échangée avant la mise en place de ce circuit. De plus si l'échange de données cesse pendent un certain temps, la liaison qui est maintenue reste inutilisée pendant ce même temps. Pour optimiser le débit on peut alors concentrer des communications sur une même liaison. Mais des communications risquent d'avoir à attendre avant de pouvoir émettre, il va alors falloir mettre en place des zones de mémoire qui vont stocker les données en attendant une disponibilité de la liaison. La contrepartie de cette augmentation du débit est une complexification du système. Le schéma suivant montre un exemple de création de circuit sur un réseau à commutation de circuits. \ | (A, B, C... : autocommutateurs) +| ---A-------------------\ (--+---+--- : circuit) |\ \ | + /----E---- | -+---+---+-B/ | | \ | | + | | \ | | + | \ \ / ----C------------------D----- \ + \ \ Un message est une suite de données formant un tout logique : un fichier, le secteur d'un disque... Un réseau à commutation de message est un réseau comportant de nombreux noeuds de commutation. Le message est émis puis transféré de noeud de commutation en noeud de commutation jusqu'au destinataire final. Le message ne peut être transmis au noeud suivant que lorsqu'il est complètement et correctement reçu par le noeud précédent. Voici donc dans le meilleur des cas le temps de transmission total d'un message : \ (1) \ Noeud1--\========\ \ (2) \ (1) \ Noeud2----\~~~~~~~~\========\ \ \ (2) \ (3) \ Noeud3------\--------\~~~~~~~~\========\----------> \ \ \ \ temps (1) : message en cours d'émission vers le noeud suivant (2) : message en cours de réception depuis le noeud précédent (3) : émission du message vers le destinataire Il faut ajouter à cela les temps d'attente aux noeuds et les délais de propagation. Le problème vient de la fiabilité des transmissions : en moyenne un bit a 10^(-5) chances d'être en erreur lors de la transmission, càd qu'un fichier de 100 000 octets n'a qu'une probabilité de 0.0003 d'être transmis correctement. La commutation de paquets est une amélioration de la commutation de messages, le principe et la structure sont les mêmes, mais les données de l'utilisateurs ne sont plus transmis sous formes de messages mais de paquets, c'est à dire que les données sont découpées en groupes de données plus petits de longueur définis à l'avance sur l'ordinateur émetteur, ces paquets vont être acheminés de noeud en noeud puis réassemblés pour reconstituer le message d'origine sur l'ordinateur de destination (voir la section sur l'encapsulation plus loin). Autrement dit un réseau à commutation de paquets est un réseau à commutation de messages dont l'unité de transport de base est beaucoup plus petite. Le schéma suivant représente le temps de transmission d'un message constitué de 4 paquets sur un réseau à commutation de paquets. \p1\p2\p3\p4\ Noeud1--\==\==\==\==\ \ \p1\p2\p3\p4\ Noeud2----\~~\==\==\==\==\ \ \ \p1\p2\p3\p4\ Noeud3------\--\~~\==\==\==\==\----------> \ \ \ \ \ \ \ temps Ce schéma montre bien la différence de temps nécessaire pour transmettre un message de même taille sur un réseau à commutation de messages et sur un réseau à commutation de paquets (p1 est reçu par le noeud1, puis l'envoie vers le noeud2 en même temps qu'il reçoit p2 et ainsi de suite). Maintenant que se passe-t-il si un message est reçu en erreur ? Là encore la commutation de paquets surpasse la commutation de messages : \ (1) \ \ Noeud1--\########\========\ (commutation de \ \ \ messages) Noeud2----\--------\~~~~~~~~\========\ \ \ \ \ \ Noeud3------\--------\--------\~~~~~~~~\========\----------> \ \ \ \ \ temps (1) : message en erreur, il doit être à nouveau renvoyé au noeud pour pouvoir continuer à être transmis \p1\p1\p2\p3\p4\ Noeud1--\##\==\==\==\==\ \ \ \p1\p2\p3\p4\ (commutation de Noeud2----\--\~~\==\==\==\==\ paquets) \ \ \ \p1\p2\p3\p4\ Noeud3------\--\--\~~\==\==\==\==\----------> \ \ \ \ \ \ \ \ temps A nouveau la différence est flagrante. La présence d'un message en erreur sur le réseau à commutation de messages nécesssite le renvoi de tout un message ce qui peut demander un temps considérable, alors que sur le réseau à commutation de paquets il n'est nécessaire de renvoyer que le paquet en erreur. Une fois émis sur le réseau les paquets sont indépendants les uns des autres, ils peuvent emprunter des routes différentes et arriver dans le désordre sans que cela pose de problème. Cela sgnifie aussi qu'ils peuvent être multiplexés temporellement sur une même liaison : _________________ Message p___p2_ | | \p1_| | | Noeud | Message q---q2--q1-| de |---q2--q1--r2--p2--r1--p1---> | commutation | r1_| | Message r___r2_/ |_________________| Internet avec tcp/ip est l'exemple le plus connu (arf ;) de réseau à commutation de paquets. Les paquets sont indépendant les uns des autres sur le réseau et peuvent évidemment emprunter des routes différentes (voir le section sur le routage plus loin) et être de taille variables. En revanche d'autres protocoles comme X.25 exigent que les paquets soient toujours émis sur la même route, ce qui implique qu'ils arriveront aussi dans l'ordre. Il existe d'autres types de commutations que je ne décrirais pas ici comme la commutation de trames ou la commutation de cellules qui sont des extensions de la commutation de paquets. ***Bases des réseaux informatiques Le but fondamental d'un réseau informatique est de permettre à un ordinateur d'accéder aux ressources d'une autre machine, ou plus généralement de permettre à ces deux machines de communiquer entre elles. Il existe pour cela de nombreux types de réseaux, que l'on va définir par un réseau physique et un réseau logique. Le réseau physique est ce que vous voyez, câbles, cartes réseaux et ordinateurs, alors que le réseau logique est l'ensemble des normes permettant à ce réseau physique de fonctionner correctement. La topologie physique d'un réseau est son organisation matérielle. On définit trois types de topologies physiques : en bus, en étoile ou en anneau. Les topologies en bus et en étoile sont généralement utilisées pour des réseaux ethernet alors que la topologie en étoile est plutôt réservée aux réseaux token ring. Les topologies en étoile sont aussi utilisées avec des réseaux FDDI (fiber distributed data interface), qui fonctionnent avec des câbles en fibres optiques. Les termes que je viens d'employer, ethernet, token ring, FDDI, sont ce qu'on appelle des topologies logiques. Elles ne coexistent jamais sur le même réseau. Par comparaison avec le réseau routier, on pourrait définir les routes et les autoroutes comme le réseau physique et le code de la route serait la topologie logique. exemple de topologie en bus (ici 10BASE-2) station de station de station de travail travail travail | | | | | | -----bus---bus---bus---bus---bus---bus---bus---bus---- | | | | serveur imprimante réseau Un câble coaxial court d'un ordinateur à l'autre. Ce standard est le plus ancien mais aussi le plus vulnérable : si une des connexions tombe en panne le réseau ne fonctionne plus... exemple de topologie en étoile (ici 10BASE-T) station de station de travail travail \ / \ / \ / hub / | \ / | \ / | \ station de | imprimante travail | réseau | serveur Dans ce type de réseau tous les ordinateurs se connectent à un hub (concentrateur), et c'est celui ci qui va gérer les communications entre les machines. Bien plus fiables que les topologies en bus, les topologies en étoile sont aussi plus coûteuses. On peut ici brancher et débrancher des ordinateurs du réseau à volonté sans risquer de le paralyser. exemple de topologie en anneau station de station de travail travail \ / \ / \_________/ / \ / \ | MAU | | | \ / \_________/ / | \ / | \ / | \ station de | imprimante travail | réseau | serveur Les topologies en anneau sont pratiquement semblables aux topologies en étoile, à ceci près qu'un MAU (multistation access unit) remplace le hub (MAU est le terme employé par IBM pour désigner les concentrateurs Token Ring). Le MAU gère les communications légèrement différemment mais c'est le même fonctionnement. ***Assimiler les notions de base Vous avez vu jusqu'à maintenant ce qu'était une topologie physique et une topologie logique. Certains éléments essentiels d'un réseau n'ont pas été abordés, les voici donc : (Rappel) Les MAU et les hubs sont des concentrateurs sur lesquels viennent se connecter tous les équipements du réseau Les routeurs et les ponts sont chargés de véhiculer les données entre plusieurs réseaux Imaginez que vous deviez communiquez avec un japonais alors que vous ne parlez que le français et votre interlocuteur uniquementy le japonais. Forcément ça serait pas évident. Le même problème est rencontré par les ordinateurs, ils doivent parler le même langage. On va pour cela déterminer des protocoles que les ordinateurs utiliseront pour communiquer entre eux sur un réseau. TCP/IP, IPX/SPX, NetBIOS et NetBEUI sont des protocoles (ou plus exactement des suites de protocoles, mais ce n'est pas le sujet abordé ici). ***Les différents types de réseaux Outre la topologie physique et logique d'un réseau, sa configuration va déterminer de quel type de réseau il s'agit. -les LAN (local area network) ou réseaux locaux sont généralement semblables aux réseaux proposés sur les schémas précédents. Les ordinateurs sont physiquement très proches, sur un seul site, les LAN sont le type de réseau le plus simple. Il n'est toutefois pas rare de voir des LAN d'entreprise composés de plusieurs centaines ou milliers d'ordinateurs. Les ordinateurs étant reliés directement par des câbles les taux de transfert de données sont très élevés : 10 Mbps en général. -les MAN (metropolitan area network) sont des LAN qui se sont étendus au-delà de leur site géographique primaire, par exemple entre deux immeubles. La configuration est similaire à celle d'un LAN, mais à un point du réseau on ne pourra pas utiliser le câble classique, il faudra utiliser des moyens particuliers : lignes téléphoniques à haut débit, liaison radio, fibres optiques, laser... Les taux de transfert arrivent généralement à égaler ceux d'un LAN. Comme il s'agit d'un réseau unique, ce n'est pas la peine d'utiliser un routeur. -les WAN (wide area network) sont constitués d'un ensemble de MAN et de LAN reliés entre eux par des routeurs. La liaison se fait en générale par le téléphone entre les LAN et les MAN, ce qui implique une baisse énorme de la bande passante : 56 Kbps pour une ligne téléphonique analogique classique. Il est aussi possible de louer une ligne téléphonique T1 (les lignes des opérateurs de télécommunications) qui permettent de réaliser des transferts jusqu'à 1.5 Mbps, mais il va alors falloir débourser quelques milliers de francs par mois.... Voici donc les trois types de réseau de base. Il existe ensuite des nuances peu perceptibles entres LAN, MAN et WAN : -les CAN (campus area network) sont semblables à des MAN. Ils tiennent leur nom du fait qu'ils sont généralement installés dans des universités. Des ponts et des répéteurs sont utilisés pour relier les différentes parties du réseau entre elles, ce qui fait qu'il apparait de manière très simple à l'utilisateur final (il n'a plus de moyens de savoir si le serveur auquel il se connecte est situé de l'autre côté de la pièce ou à l'autre bout du campus). -les TAN (tiny area network) sont des petits LAN domestiques constitués de 2 ou 3 ordinateurs. C'est en générale les premiers réseaux que l'on établit, ils constituent un très bon début. ***Le modèle OSI Un groupe appelé Open Systems Interconnect à créé dans les années 80 un assemblage logique de la structure des réseaux mais leur entreprise n'a pas été courronnée de succès, quasiment aucun composant actuel ne respecte les protocoles OSI. Et pourtant aujourd'hui ce modèle est un véritable pilier de la structure des réseaux, il représente la structure théorique de tout réseau. Ce modèle n'est pas particulièrement complexe et il peut être intéressant à connaître. Voici une représentation fonctionnelle du modèle OSI à 7 couches : Couche 7 Couche Application | | Couche Application | | Couche 6 Couche Présentation |E R| Couche Présentation |M E| Couche 5 Couche Session |I C| Couche Session |S E| Couche 4 Couche Transport |S P| Couche Transport |I T| Couche 3 Couche Réseau |O I| Couche Réseau |N O| Couche 2 Couche Liens de données | N| Couche Liens de données | TRANSMISSION | Couche 1 Couche Physique |___________________| Couche Physique Au fur et à mesure que l'on s'élève dans les couches OSI le niveau d'abstraction s'accroit. Chaque couche ne communique qu'avec celles de niveau immédiatement inférieur ou supérieur. Plus précisément chaque couche offre un service à la couche supérieure et utilise les services de la couche inférieure. Voici à quoi correspondent les différentes couches : Couche 7 : c'est le programme avec lequel interagit l'utilisateur (ftp, telnet...) Couche 6 : c'est la phase de réécriture des données de manière à ce qu'elles puissent être utilisées par le système de l'ordinateur distant (d'UNIX à MSDOS par exemple) Couche 5 : c'est la gestion des connexions entre les ordinateurs, elle s'occupe d'encapsuler les données et de les transmettre dans le bon ordre Couche 4 : l'équivalent du tcp de tcp/ip. Elle s'assure que le destinataire a bien reçu les paquets transmis en surveillant le travail des trois couches qui sont au dessous d'elle. Couche 3 : fonctionne de concert avec la couche 2, elle s'occupe d'envoyer les paquets au bon ordinateur sur le réseau. (équivalent de l'ip de tcp/ip) Couche 2 : c'est un ensemble de règles indiquant comment les paquets doivent être retransmis en trouvant un chemin sur le réseau pour que la couche 1 puisse faire son travail Couche 1 : correspond aux câbles, hubs et aux autres matériels permettant la transmission physique des données sur le réseau II. TRANSMISSION DES DONNEES ______________________________ ***Encapsulation des données Avant d'être transmises à d'autres ordinateurs sur un réseau, on dit que les données sont encapsulées, càd qu'elles sont découpées en paquets. Ce mode de transmission est particulièrement important, il permet notamment à plusieurs paquets d'un même flux d'emprunter des routes différentes pour atteindre leur destination. Lors de l'encapsulation des données celles-ci sont scindées en part égales. Puis l'ordinateur compte le nombre de bits qui les composent et leur attribue un numéro qui est inclus au paquet. Ainsi la route qu'empruntent les données n'a aucune importance, une fois toutes arrivées à destination l'ordinateur les assemble à partir des numéros de séquence et d'une checksum (somme de contrôle) pour vérifier que le compte des paquets est bon. Les paquets peuvent être de différentes catégories selon la topologie logique du réseau, on parle de trames Ethernet ou de datagrammes tcp/ip notamment. Cette distinction peut être importante car un datagramme peut être encapsulé dans une trame par exemple. Toute information émise sur un réseau est d'abord encapsulée selon le type de réseau et les protocoles utilisés. Dans chaque paquet sont incluses les informations suivantes : -l'adresse de retour, càd la source des paquets -l'adresse de destination permettant le routage des paquets -un numéro de séquence permettant de vérifier si tel paquet doit être classé avant ou après tel autre ***Règles de transmission des données selon la topologie logique Les règles de transmission des données sur un réseau dépendent des topologies logiques définies dans la partie précédente. Nous allons donc voir ici plus précisément les particularités et le fonctionnement de chaque topologie logique. Il faut savoir que dans un réseau informatique, un seul ordinateur peut émettre sur un segment donné du réseau. -Ethernet : Ethernet est fondé sur la norme CSMA/CD (carrier sense multiple access/collision detection). Le segment de réseau que les ordinateurs d'un réseau ethernet se partagent est appelé domaine de collision. Son nom vient du fait que si 2 ordinateurs tentent d'émettre en même temps sur le même domaine il se produit une collision. A ce moment les 2 ordinateurs cessent d'émettre, puis attendent un temps aléatoire avant de recommencer leur transmission, permettant ainsi de réguler le traffic. Mais vous comprenez que si trop d'ordinateurs veulent émettre des données en même temps sur le même domaine de collision il va se produire un véritable embouteillage qui ralentira considérablement le traffic sur cette portion du réseau. C'est une des principales limites d'Ethernet. Ethernet est la topologie la plus répandue pour créer des réseaux. Quand des données sont émises sur le réseau elles sont émises à toutes les machines composant le réseau, bien que l'adresse de destination soit spécifiée dans le header (c'est l'adresse MAC qui est utilisée, l'adresse de la carte réseau). Ainsi toutes les machines reçoivent les paquets mais ne les acceptent que si l'adresse de destination spécifiée est effectivement leur adresse MAC. Ces particularités sont détaillées dans la partie suivante (sécurité). -Token Ring et FDDI : les réseaux Token Ring sont mis en place sur des topologies en anneau ou en étoile. Sur ce type de réseau, un paquet circule en permanence, on l'appelle le jeton (token). Quand un ordinateur a besoin d'émettre, il attend que le jeton soit disponible, le prend dès que c'est le cas et transmet ses données, puis il libère le jeton pour permettre aux ordinateurs qui attendent toujours de transmettre à nouveau. Ce système permet d'éviter les collisions d'Ethernet mais pose toujours le même problème, si trop d'ordinateurs attendent le jeton le trafic sera énormément ralenti. -ATM (asynchronous transfer mode) : c'est une technologie de réseau émergente totalement nouvelle. Elle est censée pouvoir transmettre à la fois la voix ou les données que ce soit sur des câbles en cuivres ou en fibres optiques. Avec ATM les paquets sont appelés cellules et sont scindés tous les 53 octets. ATM définit entre autres une priorité de transmission pour chaque cellule et est notamment capable de router les cellules très rapidement, de 25 à 622 Mbps. ***Adressage IP Je ne reviens pas sur ce qu'est une adresse IP, je voudrais plutôt aborder ici un problème étrange. On nous répète sans cesse qu'avec la popularité de l'internet, le système d'adressage IPv4 ne suffit plus. Un peu de mathématiques : une adresse IP classique de la forme xxx.xxx.xxx.xxx comprend quatre octets, donc 32 bits. Soit théoriquement 2^32 adresses différentes (4 294 967 296). Or on est loin d'avoir atteint les 4 milliards d'ordinateurs sur internet. Le problème vient du système de répartition des blocs d'adresses. Pour éclaircir cela voyons plutôt les différents types d'adresses : (X est un octet invariable) Classe Préfixe bin. Format de l'adresse Nb de bits variables Nb d'adresses dans le bloc =========================================================================================================== A 0 X.xxx.xxx.xxx 24 16 777 216 B 10 X.X.xxx.xxx 16 65536 C 110 X.X.X.xxx 8 256 Si vous avez bien compris ce tableau la situation s'éclaircit. Imaginez qu'une entreprise ait besoin de 100 000 adresses IP réservées, elle va se procurer un bloc d'adresses de classe A pour répondre à ses besoins, gaspillant ainsi plus de 16 millions d'adresses IP qui ne seront jamais utilisées. De même si vous établissez un petit réseau et que vous voulez 10 adresses, vous prendrez un bloc d'adresses de classe C mais vous n'utiliserez que 10 adresses sur la plage de 256 qui vous est allouée. Il est alors facilement compréhensible qu'à cette vitesse les adresses IP soient très vite gâchées. Pour remédier à cela on voit se profiler à l'horizon la nouvelle génération d'IP : IPv6. Il va certainement falloir vous habituer aux adresses de la forme x:x:x:x:x:x:x:x où chaque x représente un nombre hexadécimal de 16 bits, càd un nombre total d'adresses égal à 65536^8, je vous laisse calculer... Une autre solution a été aussi mise en place, il s'agit de la norme CIDR (classless interdomain routing), elle permet de combiner plusieurs blocs d'adresses de classe C et ainsi d'éviter de gaspiller les adresse IPv4 disponibles. Le problème est que tous les protocoles de routage ne supportent pas CIDR Une adresse IP est constituée de deux parties : un identificateur de réseau et un identificateur de la machine membre de ce réseau. Pour une adresse de classe A par exemple, le X est l'adresse réseau et les 24 bits variables (xxx.xxx.xxx) constituent l'id machine. Par exemple une adresse de classe C pourrait être 137.58.121.10. L'id réseau de cette adresse est 137.58.121 et son id machine est 10. Un id réseau à 0 permet à des machines du même réseau de communiquer entre elles sans avoir à connaître l'adresse réseau réelle. Par exemple 137.58.121.10 veut émetre vers 137.58.121.21 mais en ne connaissant que l'id machine de destination (21). Elle peut donc émettre vers 0.0.0.21. Il existe ensuite d'autres adresses spécifiques à un réseau, par exemples une adresse dont tous les bits de l'id machine sont à 1 est une adresse de broadcast (diffusion) désignant toutes les machines constitutives de ce réseau (137.58.121.255 désigne donc toutes les machines du réseau d'id 137.58.121). Inversement, un adresse dont tous les bits de l'id machine sont à 0 désigne la machine locale (137.58.121.0 par exemple). Ces concepts sont importants car le routage utilise les id réseaux. ***Routage Le routage est la détermination d'un chemin sur un réseau que les paquets devront suivre pour arriver à leur destination finale, les machines effectuant cette détermination sont appelés des routeurs (logique ;). On distingue deux types de routage : le routage direct et le routage indirect. Le routage direct est le transfert d'un paquet directement d'une machine à une autre sur un réseau local. La machine émettrice compare sa ou ses adresses réseaux à celle de l'adresse réseau de destination, et si elles sont effectivement égales le paquet est directement remis au destinataire sans intermédiaire. Le routage direct est un cas particulier et intervient toujours en fin de routage. Le routage indirect est utilisé pour transmettre des paquets sur un réseau distant, càd que les paquets vont devoir transiter par au moins une passerelle avant d'arriver à leur destination. Il est bien plus complexe que le routage direct car il fait intervenir des tables de routage. Ainsi la machine émettrice détermine que l'adresse réseau est différente de la sienne et transmet le paquet à une passerelle par défaut qui va se charger de déterminer la route pour atteindre la destination grâce à sa table de routage, elle va donc retransmettre le paquet à la passerelle suivante et ainsi de suite jusqu'à ce que le paquet arrive à destination. Les tables de routage contiennent les informations relatives aux différentes destinations. Etant donné la taille d'internet les tables de routage ne peuvent pas contenir les informations concernant toutes les destinations possibles, au lieu de celà elles stockent plutôt les adresse réseaux de destination ce qui permet un routage beaucoup plus rapide. Les données sont stockées sous la forme de paires adresse réseau/passerelle de destination (N/G). Ainsi si la machine M de destination a pour adresse réseau N, les paquets seront retransmis vers G. Il est possible pour un routeur possédant une table plutôt réduite de retransmettre les paquets à une passerelle par défaut possédant une table plus complète si ce routeur ne parvient pas à résoudre une requête de routage. Finalement l'algorithme utilisé par les routeurs pour retransmettre les données est : (pseudo-code emprunté à Benoît Boute et Frédéric Kaplan) Extraire l'adresse IP destination, Id, du datagramme; Calculer l'adresse du réseau destination, In; Si (In correspond à une adresse de réseau directement accessible) { envoyer le datagramme vers sa destination sur ce réseau (ceci suppose que l'on associe cette adresse In à une adresse physique, que l'on encapsule le datagramme et que la trame soit émise); } sinon { Si (Id est une route de machine à machine) router le datagramme conformément aux indications de la table; sinon { Si (In apparaît dans la table de routage) router le datagramme selon les indications de la table; sinon { Si (une route par défaut existe) router le datagramme vers la passerelle par défaut; sinon déclarer une erreur de routage; } } } Les routeurs permettent de router des paquets sur un réseau local ou vers un réseau distant. Ils utilisent pour cela 4 sets de protocoles : RIP et OSPF pour router sur les réseaux internes et EGP et BGP pour router sur les réseaux externes. RIP (Routing information protocol) : RIP est dépassé par OSPF. Il inclut une fonction de comptage des sauts effectués par un paquet (hops ou rebonds). Un paquet qui a deja ete route 16 fois est rejeté. La version 2 de RIP supporte CIDR. OSPF (Open shortest path first) : Il permet de router les paquets sur le chemin le plus rapide, ce qui ne signifie pas forcement qu'il est le plus court. Il permet aussi de detecter les défaillances sur un chemin et de router automatiquement les paquets vers un autre chemin. OSPF supporte CIDR. EGP (Exterior gateway protocol) : EGP est aujourd'hui trop limité et on lui préfère BGP. De plus EGP ne supporte pas CIDR. BGP (Border gateway protocol) : BGP repose sur TCP pour s'assurer que les paquets ont été transmis correctement. Il dispose aussi d'une table de routage optimisée ce qui permet d'eviter de gaspiller la bande passante disponible. De plus il détecte automatiquement les défaillances d'une route, ce qui tient de l'exploit vu la taille des tables de routage sur Internet. BGP-4 supporte CIDR. Plusieurs routeurs peuvent utiliser BGP pour retransmettre les paquets sur un réseau interne, mais cela implique qu'au moins un routeur du réseau implémente RIP ou OSPF. Si ce n'est pas le cas les paquets seront retransmis d'un routeur à l'autre en créant ainsi une boucle infinie qui fait crasher le reseau. III. EQUIPEMENTS RESEAUX ET SECURITE ________________________________________ Ah, enfin... ;^) ***Switches, hubs et MAU Egalement appelés hubs ou MAU (voir précedemment), les concentrateurs permettent d'améliorer la fiabilité d'un réseau. Ils peuvent également être utilisées de différentes manières pour segmenter un réseau par exemple. Le fait que les ordinateurs d'un même segment ne puissent émettre en même temps sur un réseau (voir les spécifications ethernet et token ring) peut être assez handicapant, on peut pour cela utiliser des concentrateurs ou des commutateurs (switches). Voici le schéma d'un réseau qui a été segmenté à l'aide de hubs et d'un switch : serveur serveur routeur \ | / \ \___s2____ s3 _____s4___/ \ \ | / \ \ | / INTERNET station de ---s1----switch travail | \ s5 \__s6___ | \ station de ___s5_____ hub hub travail / \ / \ s5 s6 station de ________/ \________ station de travail travail Ce réseau est donc composé de 6 segments : chaque machine reliée à un port dédié du commutateur constitue un seul segment, alors que les machines reliées aux hubs voient ainsi leurs médias partagés en constituant un segment partagé par toutes les machines connectées aux hubs. Les commutateurs ont une autre particularité intéressante : ils permettent de créer des VLAN (virtual lan). Imaginez le LAN d'une banque par exemple, il est peu probable que le directeur ait envie que les secrétaires puissent avoir accès aux informations contenues dans son ordinateur et ceux de ses conseillers. A plus forte raison si le réseau est connecté à internet pour que les employés chargés du service client puissent utiliser l'email, des informations sensibles contenues dans son ordinateur sont ainsi exposées à un risque potentiel inutile (nyark ;). A ce moment là on va pouvoir par exemple implémenter la configuration suivante : conseiller1 / / / directeur hub-----------conseiller2 | | ____|_______________|____ | |_______________| | | | secrétaire______|__ switch __|_______routeur--------INTERNET | \___________________/ | | | | | |_____|_________|_________| | | | | employé1 employé2 (petit exercice : déterminez les différents segments sur ce schéma) Le réseau est alors constitué de deux LAN isolés l'un par rapport à l'autre : un premier VLAN comprenant le directeur et ses deux conseillers, et un deuxième VLAN constitué des ordinateurs de la secrétaire, des deux employés et du routeur permettant l'accès à internet pour les employés de ce VLAN. Pratiquement, les ordinateurs de chaque VLAN n'ont même pas connaissance de la présence des ordinateurs membres d'autres VLAN. Les ordinateurs du directeur et du conseiller sont ainsi invulnérables à toute attaque venant d'un réseau extérieur à l'entreprise, pour peu que le commutateur ait été correctement configuré (de plus il faut toujours se méfier de sa secrétaire, des fois que ce soit un méchant hacker avec une perruque rousse...). ***Snif snif... Nous l'avons vu avec les spécifications d'ethernet, les ordinateurs n'acceptent que les paquets dont le header mentionnent leur adresse MAC. Une carte en mode de promiscuité accepte tous les messages sans tenir compte de l'adresse spécifiée dans les headers. Autrement dit si une carte réseau en mode de promiscuité est placée dans un concentrateur ou un ordinateur du réseau elle va capturer tout le traffic de ce réseau et permettre de l'examiner (sniffing rulez ;). De nombreux sniffers permettent d'examiner ce traffic et de ne retenir que les paquets répondant à certains critères (contenant le mot login ou password par exemple.... ;). Le risque est évidemment énorme étant donné que par défaut les données sont transmises en clair sur les réseaux ethernet... Une attaque possible peut être par exemple de placer une machine en mode de promiscuité sur un réseau une fois que l'on a obtenu un accès root sur cette machine et d'espionner tranquillement tout ce qui s'y passe. Il existe une parade à ce mode de promiscuité sur les réseaux ethernet : les hubs actifs. Ces hubs ne transmettent les paquets qu'à l'ordinateur de destination et non plus à tous les ordinateurs du réseau, rendant le mode de promiscuité inefficace. Il est possible d'employer un sniffer sur une macine qui n'est pas en mode de promiscuité, mais on ne pourra alors logger que l'activité de cette seule machine, ce qui peut tout de même être assez intéressant ;). Cette partie n'est pas détaillée du tout car le but n'est pas de faire un article sur le sniffing, mais on ne peut pas parler des réseaux sans le mentionner. Vous trouverez des textes supplémentaires si vous voulez en apprendre plus dans la zone de téléchargement de notre site. ***Firewalls et proxys On désigne par firewall tout équipement, matériel ou logiciel, permettant de filtrer l'entrée ou la sortie de paquets sur un réseau local. Ils sont très utilisés en matière de sécurité lorsqu'il s'agit de connecter un réseau local à internet. Ils peuvent être utilisés globalement de deux manières : pour limiter le traffic entrant et ainsi prévenir tout risque d'attaque potentiel, ou alors pour vérifier et restreindre les demandes de connexion du réseau interne vers le réseau distant. Dans le cadre de ce dossier je vais décrire les firewalls matériels. Il s'agit en générale d'ordinateurs dédiés à ce rôle, ou alors de routeurs configurés de manière à filtrer les paquets. Un firewall comporte deux cartes réseaux, une qui va être reliée au réseau interne et l'autre qui va le relier au réseau distant. Il pourra par exemple ne transmettre les paquets venant de l'extérieur que si la source est autorisée et authentifiée, empêchant tout individu à la moralité douteuse d'accéder au réseau protégé. RESEAU INTERNE || RESEAU DMZ || RESEAU DISTANT || || || _______________ || || | | || station de________ || | carte2-----|---------routeur---||------INTERNET travail \ || | | || \ || | firewall | || \ || | | || station de----------hub ---||----|----carte1 | || travail / || |_______________| || / || || / || || station de________/ || || travail || || || || || || La partie comprenant le firewall est appelée réseau DMZ ou zone démilitarisée. il est aussi possible de n'avoir qu'une partie du réseau interne à protéger, auquel cas la configuration pourrait être la suivante : ordinateur______ ______ordinateur protégé \ / exposé \ / \ / ordinateur--------hub-------firewall-------hub-------routeur-------INTERNET protégé / \ / \ / \ ordinateur_____/ \_____ordinateur protégé exposé Un firewall peut être configuré pour ne permettre que certains services, les emails par exemple. Ainsi toute attaque autre qu'une attaque visant le serveur de mail interne est théoriquement impossible. Il peut aussi permettre de rejeter toute demande de connexion extérieure non identifiée, empêchant n'importe qui d'avoir accès au réseau interne; ou bien d'empêcher toute communication vers l'intérieur mais de permettre aux utilisateurs du réseau interne de communiquer librement avec l'extérieur. Ils ont ainsi une fonction primordiale dans la sécurité générale du réseau en fournissant un goulot d'étranglement de toutes les communications vers ou de l'extérieur. Il permet notamment à des réseaux comportant plusieurs dizaines de machines d'être protégés au travers d'une seule machine, ce qui facilite énormément le travail de l'admin réseau et diminue ses chances de commettre des erreurs. Cependant on peut voir la chose différemment, si ce point central du réseau est mis à mal tout le réseau devient alors vulnérable. Secure or not secure, here is the question.... Les serveurs proxys (ou application gateways) sont des applications permettant l'ip masquerading, càd la dissimulation des adresse ip d'un réseaux interne aux yeux d'un réseau distant en la remplaçant par celle du proxy. Les proxys sont spécifiques à l'application et au protocole utilisés. L'ip masquerading joue aussi un rôle primordial dans la sécurité d'un réseau, si 50 utilisateurs du réseau sont sur internet et visitent un site, le serveur distant ne verra qu'un seul ip connecté et non celui de chaque utilisateur (du point de vue d'un LAN on parle d'ip masquerading, du point de vue d'un particulier comme vous on préfèrera parler de spoofing ;). Il va falloir pour cela configurer le logiciel client de chaque utilisateur du réseau interne pour qu'il envoie ses requêtes non pas directement sur internet mais au proxy. Lorsque le proxy reçoit cette requête il garde en mémoire l'ip de l'ordinateur ayant formulé cette requête puis la retransmet à l'adresse de destination, mais cette fois l'adresse source n'est pas celle de l'ordinateur client mais celle du proxy. L'ordinateur distant renvoie donc la réponse au proxy qui la retransmet à l'ordinateur ayant formulé la requête de départ. A nouveau les proxys permettent de concentrer (et surveiller) les requêtes des clients situés sur le réseau interne, ce qui permet de ne pas avoir à protéger chaque ordinateur individuellement. Pour un observateur situé en dehors du réseau, il n'y a qu'un seul ordinateur connecté à internet... Un serveur proxy implémenté sur un firewall permet d'autoriser à certaines communications de transiter librement par le firewall. Un réseau implémentant un proxy capturant toutes les requêtes des utilisateurs pourrait ressembler à ça : station de station de station de travail travail travail | | | | | | | | | |____________hub_____________| |-------routeur-------INTERNET | | | | | | |-------firewall-------hub | | | proxy (petit exercice : déterminez la zone protégée et la zone démilitarisée sur ce schéma) Il est intéressant de constater à quel point on peut protéger un réseau avec un firewall bien configuré (j'insiste bien là-dessus... "a poorly configured firewall is no firewall at all"). On peut notamment cacher les noms DNS internes à l'extérieur par un jeu de serveurs DNS. Tout d'abord il faut implémenter un serveur DNS sur une machine accessible publiquement (dans la zone DMZ ou une partie non protégée du réseau), ce sera le serveur public qui semblera être votre serveur DNS. En réalité tout ce que ce serveur saura sera ce que vous voulez que l'extérieur sache. Ensuite il faut implémenter un serveur DNS dans une partie non accessible du réseau (derrière le firewall donc), mais ce serveur contiendra les informations normales, ce sera votre vrai serveur alors que la machine publique est une sorte de leurre. Il faut configurer le vrai serveur pour transmettre les requêtes qu'il ne peut résoudre au serveur public. Ensuite il faut configurer tous les clients DNS du réseaux pour qu'ils utilisent le serveur DNS interne, y compris le client sur le serveur public. Le firewall entre les deux serveurs doit bien entendu leur permettre de communiquer entre eux. La configuration peut alors ressembler à ça : hote interne1_____ proxy \ | \ | \ | hote interne2-------hub-------serveur DNS-------firewall-------hub-------routeur-------INTERNET / privé | / | / | hote interne3____/ serveur DNS public Maintenant voilà ce qui peut se passer si le réseau est configuré correctement : 1.L'hôte interne1 émet une requête DNS à propos de l'hôte interne2, il la transmet au serveur DNS privé et obtient sa réponse 2.L'hôte interne3 (ou le serveur DNS public) émet une requête à propos d'un hôte distant, il la transmet au serveur DNS privé qui la transmet au serveur DNS public, qui la transmet à internet et répond. 3.Un hôte distant émet une requête à propos d'un hôte interne, il la transmet au serveur DNS public qui répond "restricted". Ceci n'est qu'un exemple de service transitant par un firewall et son utilisation, le but n'est pas ici de faire une liste exhaustive de ces techniques ni d'apprendre à les implémenter. Cet exemple a été inclus car il permet de mieux comprendre l'utilisation des firewalls. Voili voilou, j'ai terminé mon dossier. M'enfin il est quand même sujet à des modifications dans les numéros à venir parce que je peux pas prétendre tout savoir sur les réseaux, loin de là ! ***Références : - Les réseaux, Campus Press (couvre globalement les bases) - Les réseaux, Eyrolles (couvre tout le reste ;) - The Sniffer FAQ 1.7, Internet Security Systems, Inc. - Les Firewalls, Trom - The 411 on Fire Walls, GBoZ Of The Cybernetic Techno Ninjas - Maximum Security, anonyme - Le protocole Internet, Benoît Boute et Frédéric Kaplan - le rfc 1817, Y. Rekhter