- Address resolution protocol
-
Address Resolution Protocol
Pour les articles homonymes, voir ARP.Pile de protocoles 7 • Application 6 • Présentation 5 • Session 4 • Transport 3 • Réseau 2 • Liaison 1 • Physique Modèle Internet
Modèle OSIL'Address resolution protocol (ARP, protocole de résolution d'adresse) est un protocole effectuant la traduction d'une adresse de protocole de couche réseau (typiquement une adresse IPv4) en une adresse MAC (typiquement une adresse ethernet), ou même de tout matériel de couche de liaison. Il opère au-dessous de la couche réseau et se situe à l'interface entre la couche réseau (couche 3 du modèle OSI) et la couche de liaison (couche 2 du modèle OSI).
Il a été défini dans la RFC 826 : An Ethernet Address Resolution Protocol.
Le protocole ARP est nécessaire au fonctionnement d'IPv4 utilisé au-dessus d'un réseau de type ethernet. Il a été supplanté par de nouveaux dispositifs dans IPv6. En IPv6, les fonctions de ARP sont reprises par Internet Control Message Protocol V6.
Dans la suite de l'article, le terme adresse IP est utilisé pour parler d' adresse IPv4.
Sommaire
Scénario typique de l'utilisation d'ARP
Un ordinateur connecté à un réseau informatique souhaite émettre une trame ethernet à destination d'un autre ordinateur dont il connaît l'adresse IP et placé dans le même sous réseau. Dans ce cas, cet ordinateur va placer son émission en attente et effectuer une requête ARP en broadcast. Cette requête est de type « quelle est l'adresse MAC correspondant à l'adresse IP adresseIP ? Répondez à adresseMAC ».
Puisqu'il s'agit d'un broadcast, tous les ordinateurs connectés au support physique vont recevoir la requête. En observant son contenu, ils pourront déterminer quelle est l'adresse IP sur laquelle porte la recherche. La machine qui possède cette adresse IP, sera la seule (du moins si elle est la seule, ce qui est censé être le cas dans tout réseau) à répondre en envoyant à la machine émettrice une réponse ARP du type « je suis adresseIP, mon adresse MAC est adresseMAC ». Pour émettre cette réponse au bon ordinateur, il crée une entrée dans son cache ARP à partir des données contenues dans la requête ARP qu'il vient de recevoir.
La machine à l'origine de la requête ARP reçoit la réponse, met à jour son cache ARP et peut donc envoyer le message qu'elle avait mis en attente jusqu'à l'ordinateur concerné.
Il suffit donc d'un broadcast et d'un unicast pour créer une entrée dans le cache ARP de deux ordinateurs.
Sécurité du protocole ARP
Le protocole ARP est vulnérable à des attaques locales reposant principalement sur l'envoi de messages ARP erronés à un ou plusieurs ordinateurs. Elles sont regroupées sous l'appellation « pollution de cache ARP » (« ARP cache poisoning » en anglais). La vulnérabilité d'un ordinateur à la pollution de cache ARP dépend de la mise en œuvre du protocole ARP par son système d'exploitation.
Typiquement une attaque de ce genre consiste à envoyer un paquet « arp who-has » à la machine d'Alice. Ce paquet spécialement forgé contiendra, en adresse IP source, l'adresse IP de la machine de Bob dont nous voulons usurper l'identité (ARP spoofing) et l'adresse MAC de la carte réseau de notre machine Mallory. La machine d'Alice va ainsi créer une entrée associant notre adresse MAC à l'adresse IP de la machine de Bob. Alice, destinataire de l'« arp who-has », utilise notre paquet pour créer une entrée dans sa table MAC. Si Alice veut communiquer avec Bob au niveau IP, c'est notre poste qui recevra les trames de Alice puisque notre adresse MAC est enregistré dans le cache empoisonné de Alice comme équivalence pour l'IP du poste Bob. Ceci est une faiblesse connue de la mise en œuvre d'ARP et permet de corrompre facilement un cache ARP distant.
Ces attaques peuvent provoquer une écoute des communications entre deux machines (MITM ou Man in the Middle), le vol de connexion, une surcharge des commutateurs servant de structure au réseau informatique ou un déni de service (il suffit de faire une attaque de type MITM puis de refuser les paquets).
Pour lutter contre ce type d'attaque, il est possible :
- De mettre en place des entrées statiques dans le cache ARP de chaque machine du réseau (commande arp -s). Ceci n'est applicable qu'à un faible nombre de machines (privilégier les plus critiques, comme les serveurs et les passerelles) à moins de souhaiter y passer ses jours et ses nuits (attention cependant au fait que sur les systèmes d'exploitation Microsoft Windows antérieurs à la version XP, une entrée statique peut être mise à jour, la seule différence est qu'elle n'expire pas)
- De limiter les adresses MAC sur chaque port (renseignement statique) des commutateurs s'ils le permettent (fonction Port Security). Les commutateurs de niveau 3 par exemple offrent la possibilité de paramétrer des associations port/MAC/IP statiques. Mais cela rend évidemment plus difficile la maintenance du parc.
- De surveiller les messages ARP circulant sur réseau informatique, à l'aide d'outils de surveillance tels qu'ARPwatch (outil du Network Research Group (NRG), the Information and Computing Sciences Division (ICSD), Lawrence Berkeley National Laboratory (LBNL)[1]), d'arpalert[2], ou, d'IDS (Systèmes de Détection d'Intrusion)
- Il faut savoir que chaque entrée a une durée de vie (cela oblige d'ailleurs l'attaquant à corrompre régulièrement le cache de la victime). Certains Systèmes d'exploitation comme Solaris permettent de modifier la valeur de ce temps d'expiration (commande ndd). Une valeur courte rendra la corruption plus facilement visible.
En-tête ARP
+ Bits 0 - 7 8 - 15 16 - 31 0 Hardware type Protocol type 32 Hardware Address Length Protocol Address Length Operation 64 Sender Hardware Address ? Sender Protocol Address ? Target Hardware Address ? Target Protocol Address avec :
- Hardware type (type de matériel)
- 01 - Ethernet (10Mb) [JBP]
- 02 - Experimental Ethernet (3Mb) [JBP]
- 03 - Amateur Radio AX.25 [PXK]
- 04 - Proteon ProNET Token Ring [Doria]
- 05 - Chaos [GXP]
- 06 - IEEE 802 Networks [JBP]
- 07 - ARCNET [JBP]
- 08 - Hyperchannel [JBP]
- 09 - Lanstar [TU]
- 10 - Autonet Short Address [MXB1]
- 11 - LocalTalk [JKR1]
- 12 - LocalNet (IBM PCNet or SYTEK LocalNET) [JXM]
- 13 - Ultra link [RXD2]
- 14 - SMDS [GXC1]
- 15 - Frame Relay [AGM]
- 16 - Asynchronous Transmission Mode (ATM) [JXB2]
- 17 - HDLC [JBP]
- 18 - Fibre Channel [Yakov Rekhter]
- 19 - Asynchronous Transmission Mode (ATM) [RFC2225]
- 20 - Serial Line [JBP]
- 21 - Asynchronous Transmission Mode (ATM) [MXB1]
- 22 - MIL-STD-188-220 [Jensen]
- 23 - Metricom [Stone]
- 24 - IEEE 1394.1995 [Hattig]
- 25 - MAPOS [Maruyama]
- 26 - Twinaxial [Pitts]
- 27 - EUI-64 [Fujisawa]
- 28 - HIPARP [JMP]
- 29 - IP and ARP over ISO 7816-3 [Guthery]
- 30 - ARPSec [Etienne]
- 31 - IPsec tunnel [RFC3456]
- 32 - InfiniBand (TM) [Kashyap]
- 33 - TIA-102 Project 25 Common Air Interface (CAI) [Anderson]
- Protocol type (Type de protocole)
- 0x0800 - IP
Ce champ indique quel est le type de protocole couche 3 (OSI) qui utilise Arp.
- Hardware Address Length (longueur de l'adresse physique)
- 01 - Token Ring
- 06 - Ethernet
Ce champ correspond à la longueur de l’adresse physique. La longueur doit être prise en octets.
- Protocol Address Length (longueur de l'adresse logique)
- 04 - IP v4
- 16 - IP v6
Ce champ correspond à la longueur de l’adresse réseau. La longueur doit être prise en octets.
Ce champ permet de connaître la fonction du message et donc son objectif.
- Sender Hardware Address (adresse physique de l’émetteur)
Adresse MAC source dans le cadre d'Ethernet.
- Sender Internet Address (adresse réseau de l’émetteur)
Adresse IP de source dans le cadre de TCP/IP
- Target Hardware Address (adresse physique du destinataire)
Adresse MAC destination dans le cadre d'Ethernet . Si c’est une demande Arp, alors, ne connaissant justement pas cette adresse, le champ sera mis à 1 (c'est un broadcast de niveau 2)
- Target Internet Address (adresse réseau du destinataire)
Adresse IP de destination dans le cadre de TCP/IP
Voir aussi
Liens externes
- (en) RFC 826 An Ethernet Address Resolution Protocol
- (en) RFC 2390 Inverse Address Resolution Protocol
- (fr) Jouer avec le protocole ARP
- (fr) ARP sur FrameIP
- (fr) Outil gratuit permettant de générer des datagrammes ARP Code source en C fourni
Notes et références
- Portail de l’informatique
Catégorie : Protocole réseau
Wikimedia Foundation. 2010.