|
La sécurité du protocole HSRP
Par Sébastien Fontaine(_SebF)
1 - L'introduction
2 - La présentation d'HSRP
2.1 - Structure de l'entête
2.2 -
Définition des différents
champs
2.3 - Exemple de trame
3 - La configuration d'HSRP
3.1 - Les commandes
3.2 - Le schéma
3.3 - Configuration de R1
3.4 - Configuration de R2
3.5 -
Commandes d'exploitation
3.6 -
Monitoring et supervision
4 - La sécurité d'HSRP
4.1 -
Les faiblesses du protocole
4.2 -
Les protections d'HSRP
5 - Discussion autour de la documentation
6 - Suivi du document
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 :

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.
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.
Voici la structure de l'entête IP basé
sur 20 octets.

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.

Vous pouvez téléchargez le fichier .cap contenant
l'ensemble de la trame.
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.

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 |
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 |
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 :
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) |
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 :
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.
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.
Vous pouvez poser toutes vos questions,
vos remarques et vos expériences à propos de la sécurité d'HSRP. Pour cela,
rendez-vous sur le Forum Sécurité.
Le 18 décembre 2007, par Sébastien
Fontaine, Création du document.
|