9.2. Dynamic Host Configuration Protocol - DHCP

Le protocole DHCP est utilisé pour délivrer dynamiquement une adresse IP unique pour chaque machine le demandant sur le réseau interne. En clair, si un client interne veut obtenir une adresse IP pour bénéficier des services réseau, il envoie un message DHCP à tout le réseau (broadcast) pour trouver le serveur DHCP. Le serveur DHCP répondra en lui envoyant tous les paramètres de configuration réseau.

Ce service permet «d'alléger» la gestion du réseau en évitant d'avoir des configurations statiques à maintenir sur chaque machine. Malheureusement, le protocole DHCP comporte diverses failles que nous allons vous présenter.

9.2.1. Attaque par épuisement de ressources

Comme il l'a été décrit, un serveur DHCP possède un stock d'adresses IP qu'il distribue aux différents clients. Ce stock est bien sûr limité. Il y aura seulement un nombre défini de clients pouvant disposer des différentes adresses IP en même temps. Si le serveur est bien administré avec une liste «fermée» de correspondances entre adresses MAC et IP aucune attaque par épuisement n'est possible.

Si le service est mal administré ; c'est à dire que les correspondances entre adresses MAC et IP se font dynamiquement à partir d'une plage d'adresses IP vacantes, le scénario suivant est possible.

Si un pirate génère un grand nombre de requêtes DHCP semblant venir d'un grand nombre de clients différents, le serveur épuisera vite son stock d'adresses. Les «vrais» clients ne pourront donc plus obtenir d'adresse IP : le trafic réseau sera paralysé.

9.2.2. Faux serveurs DHCP

Cette attaque vient en complément de la première. Si un pirate a réussi à saturer un serveur DHCP par épuisement de ressources, il peut très bien en activer un autre à la place. Ainsi il pourra ainsi contrôler tout le trafic réseau.

9.2.3. Comment s'en protéger ?

Chaque fois que c'est possible, il faut limiter le service DHCP à une liste «fermée» de correspondances d'adresses MAC et IP. De cette façon toute requête «étrangère» à cette liste est systématiquement rejetée.

  • Sous Windows, remplissez les champs de l'option Réservations dans le programme de configuration du serveur DHCP

  • Sous Linux, éditez le fichier /etc/dhcpd.conf sur le serveur DHCP. Par exemple, pour un client toto avec l'adresse MAC 00:C0:34:45:56:67 à laquelle on fait correspondre : l'adresse 192.168.1.2, le routeur 192.168.1.1 et le serveur de noms 192.168.1.3.

    host toto {
      hardware ethernet 00:C0:34:45:56:67;
      fixed-address 192.168.1.2;
      option routers 192.168.1.1;
      option domain-name-server 192.168.1.3;
      }
    

S'il est impossible d'établir une liste «fermée», segmentez votre réseau en sous-réseaux et attribuez-leur chacun un serveur DHCP. Ces serveurs seront indépendants les uns des autres.

Enfin, les nouvelles versions du protocole DHCP permettent l'utilisation de mécanismes d'authentification plus stricts. Assurez vous que vos serveurs utilisent ces versions de protocoles (Voir RFC3118).

9.2.4. Documents