Authentification 802.1X sur un réseau Ethernet (Port-Based Authentication) – WS-C2950 vs WS-C3750
Sur tout bon switch qui se respecte il est possible de configurer de l’authentification des clients afin de sécuriser la connectivité au réseau. Pour faire simple, lorsqu’une machine est connectée au réseau (physique), le switch attend une authentification de la part de l’utilisateur (ou de la machine) avant que l’interface ne devienne fonctionnelle.
Pour arriver à ça, on utilise d’une part les fonctionnalités AAA (Authentication, Authorization & Accounting) des switches ansi qu’un protocole de communication, soit TACACS+(propriétaire Cisco) soit Radius avec extensions EAP (protocole standard). Cette méthode porte le doux nom de IEEE 802.1x … ou … pour les intimes … Dot1x 😉
Bien que le principe de configuration soit assez simple, il s’avère généralement assez délicat à mettre en oeuvre et ce principalement en raison des différentes implémentations du protocole Radius chez les différents fabricants. Voici un petit retour d’expérience personnelle, moyennant quelques explications sur la configuration…
Topologie de la configuration
Afin de comparer le fonctionnement de deux équipements différents, j’ai utilisé un WS-C3750 et un WS-C2950, interconnectés par un Trunk dot1Q. Le Vlan20 reçoit les clients qui devront s’authentifier, tandis que le Vlan10 héberge le serveur radius.
Pour que tout cela fonctionne, il faut uniquement que les clients soient connectés aux switches et que ceux-ci puissent communiquer avec le serveur radius. C’est la raison pour laquelle chaque switch a une SVI VLAN10 (interface Vlan 10) adressée.
Pré-requis:
- Un serveur Radius
- Un switch supportant Dot1x et le « Port-Based Authentication »
- Une communication IP fonctionnelle entre les deux entités (Radius <-> Switch)
Configuration du serveur Radius:
Je ne vais pas ici vous faire un step-by-step, étant donné que chaque serveur Radius a ses propres spécificités. Par contre je peux lister dans les grandes lignes ce qui est nécessaire de configurer:
- Un client radius par switch (les switches qui font appel au service d’authentification), avec au minimum une adresse IP ( « 10.0.0.1 » et « 10.0.0.2 » ) ainsi qu’une clé d »authentification ( « ciscomadesimple » ).
- Au moins un utilisateur qui permettra à la machine client de s’identifier et d’avoir accès au réseau (login: « cmsbe », pwd: « userpwd »).
- Assurez-vous des ports utilisés par le serveur radius. Il y en a en général deux. Le premier pour l’authentification/authorisation, le second pour l’accounting. (dans mon cas, auth: UDP 1812, acct: UDP 1813).
Configuration du WS-C2950 (le plus ancien des deux)
- Configuration de base du switch
c2950(config)#vlan 10,20 c2950(config-vlan)#exit c2950(config)#interface fastEthernet0/24 c2950(config-if)#switchport mode trunk c2950(config-if)#exit c2950(config)#interface range fastEthernet0/1 - 23 c2950(config-if-range)#switchport mode access c2950(config-if-range)#switchport access vlan 20 c2950(config-if-range)#spanning-tree portfast c2950(config-if-range)#exit c2950(config)#interface vlan 10 c2950(config-if)#ip address 10.0.0.2 255.255.255.0 c2950(config-if)#no shutdown c2950(config-if)#exit
- Activer les fonctionnalités AAA globalement
c2950(config)#aaa new-model
- Configurer les informations relatives au serveur radius
c2950(config)#radius-server host 10.0.0.10 auth-port 1812 acct-port 1813 key ciscomadesimple
- Configurer la méthode d’authentification dot1x globale
c2950(config)#aaa authentication dot1x default group radius
- Activer le service d’authentification des ports
c2950(config)#dot1x system-auth-control
- Configurer les ports
c2950(config)#interface range fastEthernet0/1 - 23 c2950(config-if)#dot1x port-control auto c2950(config-if)#end
Pour le WS-C2950 tout se passe comme prévu (comme c’est écrit dans les bouquins 🙂 ), aucun souci, il suffit d’appliquer la doc à la lettre.
Machine client connectée (un MacBook), quelques secondes et hop … une fenêtre qui demande d’entrer les login et mot de passe. Vient ensuite autour d’une machine Windows 7 … n’espérez pas que cela fonctionne sans avoir au préalable activé manuellement le service d’authentification réseau (« Wired AutoConfig » ou « Configuration automatique de réseau câblé »). Une fois cela fait, dés que la machine est branchée sur le switch, même comportement, un popup, on entre les infos et c’est parti.
Configuration du WS-C3750
- Configuration de base du switch
c3750(config)#vlan 10,20 c3750(config-vlan)#exit c3750(config)#interface fastEthernet1/0/24 ! Port trunk vers c2950 c3750(config-if)#switchport trunk encapsulation dot1q ! remarque (1) c3750(config-if)#switchport mode trunk c3750(config-if)#exit c3750(config)#interface fastEthernet1/0/23 ! Port connecté au serveur radius c3750(config-if)#switchport mode access c3750(config-if)#switchport access vlan 10 c3750(config-if)#spanning-tree portfast c3750(config-if)#exit c3750(config)#interface range fastEthernet1/0/1 - 22 c3750(config-if-range)#switchport mode access c3750(config-if-range)#switchport access vlan 20 c3750(config-if-range)#spanning-tree portfast c3750(config-if-range)#exit c3750(config)#interface vlan 10 c3750(config-if)#ip address 10.0.0.1 255.255.255.0 c3750(config-if)#no shutdown c3750(config-if)#exit
- Activer les fonctionnalités AAA globalement
c3750(config)#aaa new-model
- Configurer les informations relatives au serveur radius
c3750(config)#radius-server host 10.0.0.10 auth-port 1812 acct-port 1813 non-standard key ciscomadesimple ! remarque (2)
- Configurer la méthode d’authentification dot1x globale
c3750(config)#aaa authentication dot1x default group radius
- Activer le service d’authentification des ports
c3750(config)#dot1x system-auth-control
- Configurer les ports
c3750(config)#interface range fastEthernet0/1 - 23 c3750(config-if)#authentication port-control auto ! remarque (3) c3750(config-if)#dot1x pae authenticator ! remarque (4) c3750(config-if)#end
Comme vous l’aurez remarqué, il y a quelques changements…
(1) Les ws-c3750 supportent ISL et dot1q comme protocole de trunking, donc si on veut forcer le trunk, il faut forcer le protocole.
(2) Pour une raison qui m’échape, là où le c2950 discutait volontiers avec le serveur radius utilisé, pour le c3750 j’ai du forcer l’analyse des informations non-standard, sans quoi dans un « debug radius authentication« , je recevais des messages du genre: « RADIUS: Response (9) failed decrypt ».
(3) Ô joie, ô bonheur, les commandes « standard » ne sont plus supportées sur les plateformes plus récentes. « dot1x port-control auto » devient « authentication port-control auto ». Je parie que des développeurs sont payés pour faire ce genre de modifications 😉
Jusqu’ici rien ne marche … après avoir testé aussi bien avec le Mac que la machine Windows … nada, rien …
(4) L’épine que j’ai eu du mal à retirer de mon pieds … par défaut le wc-c3750 (C3750-IPSERVICESK9-M, Version 12.2(55)SE7) … je suppose que le version de l’IOS a une influence sur ce genre de comportements … ne se conduit pas comme un authentificateur … en gros … le client voudrait bien (mais n’peut point) se présenter et s’identifier, le switch fait la sourde oreille… Problème résolu en lui disant quoi faire avec « dot1x pae authenticator ».
C’est toujours frustrant de s’apercevoir que ce qui sert de référence (qui parle des ouvrages CiscoPress Official Certification Guide ???) pour les certifications se révèle être une guerre ou deux en retard. Ce ne sont que des détails, bien entendu, mais on pourrait s’attendre à un peu plus de cohérence entre certification et vie réelle … non ?
un merci gigantesque, c’était très utile <3
Bonjour,
J’aimerai faire juste une petite remarque, si on garde votre topologie et pour que les pc communique avec le serveur il va falloir:
– Utiliser des switchs multilayer,
– Activer le routage avec la commande (ip routing),
– Rajouter une interface vlan 20 et l’adresser ( cette adresse sera la passerelle des pc),
– Rajouter la passerelle au niveau du serveur qui est l’adresse ip de l’interfae vlan 10.
Si je me trompe corrigez moi svp.
Merci infiniment.
Rien de tout ça n’est nécessaire. Les PCs n’ont pas besoin de communiquer avec le serveur. L’authentification a lieu entre le PC et le Switch… Le switch lui interroge le serveur pour la valider. C’est tout.
Bonsoir,
Merci pour l’article, tres bien expliqué.
J’aimerai tester ces config mais je ne sais pas sur quel simulateur ?
Est ce que ça marche avec Packet tracer ? ou GNS3 ?
Merci infiniment.
Rien n’est impossible dans GNS3… ou presque. Mais les technologies de switching requièrent l’utilisation d’images virtuelles de type IOU pour pouvoir faire quelque chose de sérieux.
PacketTracer supporte il me semble les bases de dot1x dans ses dernières versions, mais je doute que la topologie soit réalisable telle-quelle dedans.
Comme toujours, didactique et pédagogique… que demander de plus !