Sécurité du protocole HSRP

Sécurité du protocole HSRP

1 – L’introduction à la sécurité du protocole HSRP

Le protocole HSRP (Hot Standby Routing Protocol) est le protocole propriétaire CIsco permettant d’obtenir une continuité de service LAN sur les routeurs.

Les entreprises disposant d’un accès WAN attendent un taux de disponibilité important. Les risques identifiés autour d’un accès WAN sont :

  • Le Switch LAN
  • Le routeur CPE
  • Le lien de boucle local
  • Le Backbone de l’opérateur
  • Le service offert par l’opérateur

hsrp-cisco-securite introduction

Ainsi, dans le cadre du routeur CPE, la solution est de le doubler. Pour cela, dans le cadre de routeur Cisco, la plus part des entreprises et opérateurs implémentent le protocole HSRP. Cependant, ce protocole très largement utilisée, dispose d’une faille remettant en cause la stabilité de l’architecture de routage.

2 – La présentation d’HSRP

HSRP, signifiant Hot Standby Routing Protocol, est un protocole qui permet à un routeur d’être le secours d’un autre routeur situé sur le même réseau Ethernet. HSRP est décrit par la  RFC 2281 « Cisco Hot Standby Router Protocol (HSRP) ». HSRP est le protocole propriétaire de Cisco inspiré du protocole normalisé VRRP.

Le principe de fonctionnement est que tous les routeurs émulent une adresse IP virtuelle qui sera utilisée comme passerelle par les équipements du réseau LAN. Pour cela, chacun des routeurs configurera son protocole HSRP avec un niveau de priorité. Celui qui disposera du plus grand se verra élu et sera actif. Les autres seront passifs en attendant la perte du premier routeur.

La communication lié au protocole HSRP entre les routeurs se fait par l’envoi de paquets Multicast à l’adresse IP 224.0.0.2 vers le port UDP 1985. Cela permet principalement d’élire le routeur actif et de tester (track) sa présence.

Les hôtes IP du réseau LAN sont client du routeur virtuelle via l’adresse IP et l’adresse MAC* émulées. Bien sur, seul le routeur actif répondra à ces adresses jusqu’au moment où il ne sera plus disponible (panne). A ce moment là, l’un des routeurs de Backup prendra dynamiquement le relais.

* L’adresse MAC émulée est du type 00:00:0C:07:AC:ZZ où ZZ représente le numéro du groupe.

2.1 – Structure de l’entête

Voici la structure de l’entête IP basé sur 20 octets.

hsrp-cisco-securite entete hsrp

2.2 – Définition des différents champs

2.2.1 – Version

Le champ Version est codé sur 1 octet, il indique la version du protocole HSRP utilisée. En l’occurrence, il existe qu’une seule version, la 0.

2.2.2 – Op Code

Le champ Op Code est codé sur 1 octet, il stipule  le type de message. Voici la liste des types de messages possibles :

  • 0 – Hello
  • 1 – Coup
  • 2 – Resign

2.2.3 – State

Le champ State est codé sur 1 octet, il informe de l’état du routeur émettant ce datagramme HSRP. Voici les différentes valeurs possibles :

  • 0 – Initial
  • 1 – Learn
  • 2 – Listen
  • 4 – Speak
  • 8 – Standby
  • 16 – Active

2.2.4 – Hellotime

Le champ Hellotime est codé sur 1 octet, il représente l’intervalle de temps en seconde entre chaque envoi de paquet Hello. Ce champ n’est lu que dans le cas d’Op code = 0.

2.2.5 – Holdtime

Le champ Holdtime est codé sur 1 octet, il représente le temps en seconde de la validité des paquets Hello. Ce champ n’est lu que dans le cas d’Op code = 0.

2.2.6 – Priority

Le champ Priority est codé sur 1 octet, il permet d’élire le routeurs qui sera actif. Pour cela, la plus valeur sera considéré comme gagnante.

2.2.7 – Group

Le champ Group est codé sur 1 octet, il permet l’utilisation de plusieurs HSRP sur le même LAN tant en spécifiant des numéros de groupes différents.

2.2.8 – Reserved

Le champ Reserved est codé sur 1 octet, il servira pour des besoins futurs. Ce champ doit être marqué à 0. Au jour d’aujourd’hui, on peut considérer que les besoins futurs se transforment en un champ non utilisé.

2.2.9 – Authentification Data

Le champ Authentification Data est codé sur 8 octet, il contient le mot de passe de 8 caractères en claire. Dans le cas de non utilisation de l’authentification, il est fortement conseillé de paramètrer ce champ à la valeurs : 0x63 0x69 0x73 0x63 0x6F 0x00 0x00 0x00 (cisco).

2.2.10 – Adresse IP Virtuelle

Le champ Adresse IP Virtuelle est codé sur 4 octet, il contient l’adresse IP virtuelle commune aux différents routeurs du groupe HSRP.

2.3 – Exemple de trame

hsrp-cisco-securite exemple trame

Vous pouvez téléchargez le fichier .cap contenant l’ensemble de la trame.

3 – La configuration d’HSRP

3.1  – Les commandes

Voici la listes des commandes permettant d’implémenter et maîtriser le protocole HSRP :

  • La commande « standby priority xxx » définit une priorité au routeur. Celui qui possédera la plus grande valeur sera élus actif. Si la configuration du routeur ne stipule pas la priorité, alors la valeurs par défaut de 100 sera appliquée.
  • La commande « standby preempt » permet d’accélérer le processus d’élection.
  • La commande « standby ip xxx.xxx.xxx.xxx » indique l’adresse IP virtuelle partagée entre les deux routeurs.
  • La commande « standby track xxxxxx » permet de superviser une interface et de baisser de 10 la valeur de la priorité HSRP si elle devenait Down.
  • La commande « standby authentication« , permet de remplacer le mot de passe par défaut « Cisco    » (63 69 73 63 6F 00 00 00).

Si à un moment les élections montrent plusieurs routeurs avec les mêmes valeurs de priorité, alors la plus grande adresse IP physique sera élus.

3.2  – Le schéma

hsrp-cisco-securite configuration hsrp

3.3 – Configuration de R1

Voici la configuration du routeur R1

interface FastEthernet1/0
  description *** Interface LAN ***
  ip address 192.168.101.253 255.255.255.0
  standby priority 120
  standby preempt
  standby ip 192.168.101.254

3.4 – Configuration de R2

Voici la configuration du routeur R1

interface FastEthernet1/0
  description *** Interface LAN ***
  ip address 192.168.101.252 255.255.255.0
  standby priority 110
  standby preempt
  standby ip 192.168.101.254

3.5 – Commandes d’exploitation

Activer le mode debug pour HSRP :

debug standby
terminal monitor

Où le debug suivant pour ne pas afficher les paquets d’information et de type :

debug standby terse
 terminal monitor

Exemple de résultat obtenu :

SB0:FastEthernet0/0 Hello out 192.168.101.252 Active pri 110 hel 3 
hol 10 ip 192.168.101.254 
SB0:FastEthernet0/0 Hello in 192.168.101.253 Active pri 120 hel 3 
hol 10 ip 192.168.101.254
SB0: FastEthernet0/0 state Active -> Speak 
SB0:FastEthernet0/0 Resign out 192.168.101.252 Speak pri 110 hel 3 
hol 10 ip 192.168.101.254 
SB0:FastEthernet0/0 Hello out 192.168.101.252 Speak pri 110 hel 3 
hol 10 ip 192.168.101.254
%LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/0,
changed state to down
SB0: FastEthernet0/0 state Speak -> Init 
%LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/0,
changed state to up
SB0: FastEthernet0/0 state Init -> Listen 
%LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/0,
changed state to down
SB0: FastEthernet0/0 state Listen -> Init
%LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/0,
changed state to up 
SB0: FastEthernet0/0 state Init -> Listen 
SB0: FastEthernet0/0 state Listen -> Speak 
SB0: FastEthernet0/0 state Speak -> Standby 
SB0: FastEthernet0/0 state Standby -> Active
SB: FastEthernet0/0 Adding 0000.0c07.ac00 to address filter
SB0:FastEthernet0/0 Hello out 192.168.101.252 Active pri 110 hel 3 
hol 10 ip 192.168.101.254 
SB0:FastEthernet0/0 Hello in 192.168.101.253 Active pri 120 hel 3 
hol 10 ip 192.168.101.254
SB0: FastEthernet0/0 state Active -> Speak

Visualiser l’état de l’HSRP :

show standby

Exemple de résultat obtenu :

FastEthernet0/0 - Group 0
  State is Active
    2 state changes, last state change 00:44:56
  Virtual IP address is 192.168.101.254
  Active virtual MAC address is 0000.0c07.ac00
    Local virtual MAC address is 0000.0c07.ac00 (v1 default)
  Hello time 3 sec, hold time 10 sec
    Next hello sent in 2.627 secs
  Preemption enabled
  Active router is local
  Standby router is unknown
  Priority 120 (configured 120)
  IP redundancy name is "hsrp-Fa0/0-0" (default)

3.6 – Monitoring et supervision

Il est possible de récupérer un maximum de compteur via le protocole SNMP. Pour cela, vous pouvez vous référencer aux deux fichiers suivants :

4 – La sécurité d’HSRP

4.1 – Les faiblesses du protocole

Le protocole HSRP possède deux principales faiblesses qui sont le passage du mot de passe d’authentification en claire et l’acceptation de paquet unicast.

4.1.1 – Mot de passe d’authentification en claire

Le protocole HSRP utilise pour authentifier les requêtes, un mot de passe qui transite en clair sur le réseau LAN. De plus, comme le protocole s’appui sur une adresse IP de destination de type Multicast afin de s’adresser à tous les routeurs, l’écoute de ce mot de passe est très simple et ne demande aucune action particulière même dans le cadre de réseau commuté.

Une simple écoute du réseau permettra de réccupérer le numéro du groupe, le mot de passe d’authentification. Ainsi, le protocole HSRP n’es pas protégé et n’importe qui peux participer au groupe. La seule limite est d’être présent sur le LAN afin d’utiliser l’adresse Multicast 224.0.0.1.

4.1.2 – Acceptation des paquets Unicast

Il existe un problème dans la gestion des adresses IP par HSRP. En effet, bien que les messages HSRP soient de type Multicast, les paquets de type Unicast (datagramme dirigé) sont acceptés et traités par les routeurs HSRP.

Cela signifie que les paquets HSRP, ayant pour adresse de destination le routeur physique, seront traités par ce dernier sans différence. Ce comportement permet aux attaques d’être exécutées à distance en s’affranchissant des contraintes de sécurité liées au trafic Multicast.

4.2 – Les protections d’HSRP

Il y a plusieurs solutions envisageables afin de se protéger des faiblesses du protocole HSRP.

4.2.1 – Définition d’un groupe

Il est conseillé de changer le numéro du groupe pour ne pas utiliser celui par défaut. Ainsi, on diminuera le nombre de chance qu’un bots automatique casse l’HSRP. Pour changer le numéro du groupe, il faut le spécifier dans chaque commande comme dans l’exemple suivant avec le groupe 3 :

interface FastEthernet1/0
  description *** Interface LAN ***
  ip address 192.168.101.253 255.255.255.0
  standby 3 priority 120
  standby 3 preempt
  standby 3 ip 192.168.101.254

4.2.2- Définition d’un mot de passe

Il est conseillé de spécifier un mot de passe pour les échanges pour ne pas utiliser celui par défaut. Ainsi, on diminuera le nombre de chance qu’un bots automatique casse l’HSRP. Pour changer le mot de passe par défaut, il faut spécifier la commande suivante :

standby 3 authentication frameip

4.2.3 – Filtrage des paquets

Il est impératif de filtrer les datagrammes afin de maîtriser les flux. Pour ce protéger des attaques sur HSRP, il est fortement conseiller d’appliquer du filtrage IP sur chaque routeur HSRP et sur chaque bordure du réseau.

Filtrage en bordure du réseau LAN :

Les bordures sont principalement représentées par les accès WAN et Internet. A ces différents endroits du réseau LAN, il faut appliquer un filtre IP permettant d’interdire les flux de type UDP 1985 d’entrer. Ainsi, vous serez protégé contre toutes les attaques distantes.

Filtrage sur chaque routeur HSRP :

Chaque routeur implémentant le protocole HSRP doit appliquer un filtrage IP sur c’est flux entrant. Celui ci n’autorisant la réception de datagramme UDP 1985 que provenant des autres routeurs membres de son groupe HSRP.

4.2.4 – IPSEC

CISCO propose d’installer IPSec entre les routeurs HSRP membre du groupe afin de chiffrer les communications HSRP et par conséquent la clé d’authentification.

4.2.5 – Hashage MD5

Cisco propose d’utiliser l’algorithme MD5 afin de Hash les échanges. Dans ce cas précis, le mot de passe n’est plus transité dans le champs « Authentification data » qui devient alors égale à 0. Pour cela, il faut rajouter la commande suivante dans tous les routeurs membre du groupe HSRP :

standby 3 authentication md5 key-string toto

4.2.6 – VRRP

La solution radicale est de ne pas utiliser le protocole Cisco HSRP, mais de préférer VRRP (Virtual Router Redundancy Protocol).

4.2.7 – Evolution d’HSRP

CISCO a officiellement et publiquement annoncé qu’il n’avait pas l’intention de développer de correctif pour ces vulnérabilités.

5 – Suivi du document

Création et suivi de la documentation par _SebF

6 – Discussion autour de la sécurité du protocole HSRP

Vous pouvez poser toutes vos questions, faire part de vos remarques et partager vos expériences à propos de la sécurité du protocole HSRP. Pour cela, n’hésitez pas à laisser un commentaire ci-dessous :

Commentaire et discussion

1 commentaire sur la page : “Sécurité du protocole HSRP”

  1. j’ai apprécis votre cours sur les protocole HSRP mais je preferé suivreune formation avec vous sur le routage parce que je quelque lacune sur ce cours et j’aimerai devenir un specialiste sur la configuration du materiel de cisco.
    je vous note 5 etoile
    Merci

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *