DHCP snooping : Défense contre le DHCP spoofing


Un petit article pour vous présenter une parade au dhcp spoofing implémenté sur des switchs cisco.
Cette parade s’apel le DHCP snooping. Elle consiste a mettre en place un liste de port sur le switch sur lequel se trouvent les “trusted dhcp server”.
De cette manière, il sera impossible de rajouter un dhcp sur le LAN.
Tout d’abord, un peux de théorie sur les DHCP.

1. Théorie

Un DHCP est un serveur permettant de configurer l’ip, le netmask, les serveurs dns et la passerelle d’un machine cliente.
Le danger est, dans le cas ou un dhcp externe est apporter au réseau, que les informations envoyé au clients ne sont pas intègre. Par exemple, le dhcp “pirate” peux renseigner comme passerelle du réseau sa propre IP, dans ce cas, tout le trafic des clients transitera par le dhcp “pirate” (MITM), ou alors, renseigner une machine cliente comme gateway ce qui cause premièrement un DoS du réseau, et si le client n’est pas suffisamment puissant pour gérer toutes les requêtes, un crash de la machine gateway.
Voici comment se déroule une transaction DHCP.

1. Le client émet un dhcp discover, le tout se joue en couche 2  vu que le client n’ pas d’ip. Il broadcast donc en FF:FF:FF:FF:FF:FF pour obtenir la liste des serveurs dhcp a proximité.
2. Les serveurs DHCP s’annoncent avec un DHCP OFFER et offre une configuration au client.
3. Le client envoi a tout les serveur dhcp quel serveur il a choisis et envoi donc un DHCP REQUEST
4. Le serveur DHCP ayan été choisis confirme au clietn que sa demande a bien été enregistré.
Tout ces machanismes permettent par exemple, dans le cas ou il y a  deux serveurs DHCP avec chacun le subnet 192.168.1.0/24 de disponible, de se synchronisé . Ainsi si l’ip 192.168.1.2 a été attribué depuis le dhcp A, le dhcp B sera informé que cette ip a été attribué et l’enlèvera de son pool d’adresse disponible.

Imaginons maintenant que un serveur dhcp externe a été apporté au réseau

On voi que le serveur DHCP pirate envoi aussi un DHCP OFFER, ce qui fait qu’il est potentiellement choisissable par la machine cliente.

2. DHCP Snooping

Le dhcp snooping est simple, vu que n’importe qui est autorisé a emttre des DHCP OFFER et ACK, nous allons autoriser que certains ports sur le switch a les émettre.
Ainsi nous aurons une listes des port “trusted” et “untrusted”. Seul les ports Trusted pourront émettre des DHCP OFFER et ACK, ainsi, la machine pirate du shema ci-dessus, n’étant pas sur un port trusted, ne pourra donc pas émettre de DHCP OFFER et ACK.
C’est très simple a mettre en place :

1. Switch(config)# ip dhcp snooping
2. Switch(config)# ip dhcp snooping vlan 3 15
3. Switch(config)# ip dhcp snooping information option
4. Switch(config)# interface fastethernet0/0
5. Switch(config-if)# ip dhcp snooping trust
6. Switch(config-if)# ip dhcp snooping limit rate 50

1. On active le dhcp snoooping
2. On définit sur quels VLAN le dhcp snooping s’appliquera
3. On active l’option 82 du protocole DHCP car le DHCP snooping en a besoin (plus d’infos sur l’option 82) http://www.cisco.com/en/US/docs/ios/12_2t/12_2t2/feature/guide/ftrbeo82.html
Enfin, on définit les interface que l’on veux truster, sur lesquels se trouvent donc les serveurs dhcp. Dans ce cas ci, sur l’interface fa 0/0
4. On rentre dans la configuration de l’interface
5. On la trust
6. On définit le nombre de requête maximal par seconde autorisé.

3. Conclusion

Le DHCP spoofing est encore trop facilement réalisable. Il y a d’autres méthodes de protection hardware ou logiciel, par exemple, definir de manière fixe la MAC address du serveur DHCP, ainsi, le client ne broadcast plus et va directement contacter le serveur DHCP renseigné. Cette protection n’est pas infaillibles et ne protège QUE du dhcp spoofing, pas de l’ip spoofing, l’arp spoofing, etc.
Voici quelques conseils que je donnerais pour améliorer la sécurité :
1. Mettre des ip fixes sur les serveurs.
JE sais, ça parait le B-a-BA, mais ce n’est psa fait partout, certains serveurs ‘optionnels’, sot en ip dynamique…
2. SI vous êtes dans un LAN de quelques machines (moin de 30), configurer les clients avec des ips fixe
3. Bloquer sur le switch les ports non utilisé afin d’interdire l’apport de machines externes
4. Dedier un DHCP pour le VPN et un pour le WIFI et les mettre les clients dans des zones isolé et autement filtré.
5. Rajouter du filtrage par MAC sur les switch.

Voila, tout n’es pas nécessaire, mais le DHCP snooping n’est pas suffisant. Il faut toujours partir du principe que la sécurité totale n’existe pas, la sécurité n’est que la réduction de pertes en cas d’attaques et doit sans cesse être remise en question.

En espérant que ceci vous ai plu ^^

9 thoughts on “DHCP snooping : Défense contre le DHCP spoofing

  1. Pingback: Linux – Mise en place d’un serveur DHCP « Istace Emmanuel

  2. guillaume

    tout ceci est exact mais il ne faut pas oublier que si on active le dhcp snooping tout le dhcp relay est desactivé sauf sur le port trust. Donc si un dhcp est dans un autre reseau et qu’un ip helper est utilisé, la commande ne marche plus car je routeur devient “relay”. La trame dhcp offert reviens, passe le port trust (lien trunk par exemple) mais n ‘est pas transmise au port du poste demandeur car dans la trame l information relay est stipulée et l adresse ip du dhcp est en fait celle du relay. Hop la trame passe a la poubelle.

    Reply
  3. guillaume

    ne pouvant editer ma reponse, je laisse un autre message. Ma reponse precedente etait fausse! en faite mes trames etait rejetees par le switch lorsque le port n’etait pas trust car l option 82 etait activée! en fait mon serveur dhcp se trouve dans un autre vlan et j utilise un ip helper pour acheminer les trames dhcp vers lui. Mais lui ne tag pas les trames dhcp avec l’option 82 et donc mon switch les jette lorsqu’il repond! Pour que mon port client les accepte et que mon pc derriere obtienne une ip voila ma config

    #ip dhcp snooping
    # no ip dhcp snooping information option
    # ip dhcp snooping vlan 1 1000
    #(conf-if) ip dhcp snooping limit rate 200 (ca c’est pour le port trunk de sortie vers le dhcp)
    #(conf-if) ip dhcp snooping trust (ca c’est pour le port trunk de sortie vers le dhcp)
    #(conf-if) ip dhcp snooping limit rate 50 (ca c’est pour le port du client)

    Reply
  4. Juju

    Petite question, et si mon serveur DHCP est dans un VLAN différent que les clients, comment ça fonctionne ?

    Reply
  5. Marquette

    Le dhcp discover est bien couche 3.
    Il émet un paquet ip en broadcast de l’ip 0.0.0.0 : 68 vers l’ip 255.255.255.255 : 67
    ps: 67 est le port d’écoute UDP du serveur, 68 est le port de connexion du service client dhcp

    Reply
  6. sécurité informatique

    I am really loving the theme/design of your web site. Do you ever run into
    any web browser compatibility issues? A number of my blog readers have complained about my website
    not operating correctly in Explorer but looks great in Chrome.
    Do you have any advice to help fix this problem?

    Reply
  7. denicfr

    Super article! Je déterre un sujet, désolé, mais j’ai une question …
    Vous mettez “efinir de manière fixe la MAC address du serveur DHCP, ainsi, le client ne broadcast plus et va directement contacter le serveur DHCP renseigné”.
    J’aimerais bien le faire, mais je ne trouve pas comment sur des clients Windows.
    Auriez-vous des pistes à me donner pour arriver à une conf de ces clients avec @MAC du serveur.

    Par avance, merci.

    Reply
  8. toto

    Bonjour, un article intéressant mais malheureusement bourré de fautes et d’erreurs de syntaxe ….

    Reply

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s