L'ordinateur sur lequel un utilisateur cherche à se connecter au réseau est appelé le
"supplicant". Il est le "client final" de la demande de connexion. Ce peut-être avec
toute forme de terminal portable, de téléphone IP ou d'ordinateur fixe. Dans la suite,
nous garderons l'expression française "client final" à la place de "supplicant".
L'équipement de réseau sur lequel le client final se connecte (un commutateur - ou
une borne Wifi - compatible 802.1x) relaye, en tant que client RADIUS, cette
demande de connexion à un serveur d'authentification, le serveur RADIUS, qui va,
par exemple, identifier la personne en rapprochant le nom de connexion et le mot de
passe de ceux stockés dans un annuaire LDAP ou encore une base de données
SQL.
Si l'identification réussit, l'accord est transmis au client RADIUS qui "ouvrira" alors le
port de connexion.
Synonymes des termes désignant les acteurs de la connexion 802.1x :
Supplicant : on trouve aussi les expressions "client demandeur" ou "client final".
Serveur d'authentification : on parle quelquefois de serveur d'identification.
Client RADIUS : on trouve également les synonymes suivants : "Authenticator" ou
NAS (Network Access Server) ou encore "contrôleur d'accès"
I.2 Le protocole 802.1x
Le protocole
802.1x est une solution standard de sécurisation de réseaux mise au
point par l'IEEE en 2001.
802.1x permet d'authentifier un utilisateur souhaitant
accéder à un réseau (câblé ou Wifi) grâce à un serveur central d'authentification.
L'autre nom de 802.1x est "
Port-based Network Access Control" ou "
User Based
Access Control".
802.1x permet de sécuriser l'accès à la couche 2 (liaison de donnée) du réseau.
Ainsi, tout utilisateur, qu'il soit interne ou non à l'entreprise, est dans l'obligation de
s’authentifier avant de pouvoir faire quoi que soit sur le réseau. Certains
équipements de réseau compatibles 802.1x peuvent réserver un traitement
particulier aux utilisateurs non authentifiés, comme le placement dans un VLAN
"guest", une sorte de quarantaine sans danger pour le reste du réseau.
802.1x a recours au protocole
EAP (
Extensible Authentification Protocol) qui
constitue un support universel permettant le transport de différentes méthodes
d'authentification qu'on retrouve dans les réseaux câblés ou sans-fil.
802.1x nécessite donc la présence d'un serveur d'authentification qui peut être un
serveur RADIUS : un serveur Microsoft, Cisco (...) ou un produit libre comme
FreeRADIUS) ou encore un serveur TACACS dans le monde fermé des
équipements Cisco.
Un port d'un commutateur réglé en mode 802.1x peut se trouver dans deux états
distincts :
- État "contrôlé" si l’authentification auprès du serveur RADIUS a réussi.
- État "non contrôlé" si l’authentification a échoué.
La réussite ou l'échec de l'authentification va donc ouvrir ou fermer le port à toute
communication. Un port ouvert va, par exemple, permettre au client final d'obtenir
une adresse IP auprès d'un serveur DHCP.
Dans des implémentations plus cloisonnées, le serveur RADIUS indiquera par
exemple au client RADIUS dans quel VLAN placer le client final.
I.3 RADIUS
RADIUS (acronyme de Remote Authentication Dial-In User Service) est un protocole
client-serveur permettant de centraliser des demandes d'authentification relayées par
des équipements de réseau, comme des commutateurs ou bornes Wifi, considérés
alors comme ses clients.
Par extension, un serveur qui centralise des demandes d'authentification et les
soumet à un service d'annuaire LDAP ou à un service de base de données SQL est
appelé serveur RADIUS.
RADIUS interroge une base de données d'authentification et d'autorisation qui peut
être un domaine Active Directory, une base LDAP ou une base de données SQL.
Ces bases ou annuaires peuvent se trouver sur le serveur lui-même ou sur un
serveur tiers. Certaines implémentations de RADIUS disposent d'une base de
données en propre.
A l'origine, RADIUS était surtout utilisé pour l'identification des clients des FAI, ses
capacités de comptabilisation des accès (accounting) permettant notamment la
journalisation des accès et leur facturation. RADIUS a été utilisé par la suite en
entreprise pour l'identification des clients finals WIFI et pour l'identification des clients
finals câblés.
En premier lieu, RADIUS doit authentifier les requêtes qui sont issues des clients
finals, via les clients RADIUS.
Cette authentification se basera soit sur un couple
identifiant/mot de passe, soit sur un certificat. Cela dépendra du protocole
d'authentification négocié avec le client final.
En deuxième lieu, RADIUS a pour mission de décider quoi faire du client authentifié,
et donc de lui délivrer une autorisation, un "laissez-passer". Pour ce faire, RADIUS
envoie des informations (on parle "d'attributs") aux clients RADIUS. Un exemple
typique d'attribut est un numéro du VLAN dans lequel placer le client authentifié et
autorisé.
Enfin, en bon gestionnaire, RADIUS va noter plusieurs données liées à la connexion,
comme la date et l'heure, l'adresse MAC de l'adaptateur réseau du client final, le
numéro de VLAN...). C'est son rôle comptable ou "d'accounting".
RADIUS est donc un serveur d'authentification, d'autorisation et de comptabilité.
De
façon imagée, c'est le "chef d'orchestre" des connexions 802.1X et les clients
RADIUS sont ses sbires... En ce sens, il se range dans le modèle AAA
(Authentication, Authorization, Accounting).
NPS (Network Policy Server) est le nom du service RADIUS des systèmes Microsoft
Windows 2008 Server, en remplacement du "Service d'Authentification Internet" de
Windows 2003 Server. D'autres solutions propriétaires existent, comme CISCO ACS
(Access Control Server). Différentes versions libres de RADIUS existent également,
comme FreeRADIUS (sous Linux ou Windows) ou OpenRADIUS (sous Linux).
RADIUS peut aussi servir à centraliser les accès sécurisés aux pages ou aux
terminaux de paramétrage de tous les équipements réseau : commutateurs,
routeurs, bornes wifi, contrôleurs wifi, etc.
I.4 Le client RADIUS
Dans le schéma général d'une connexion 802.1x, l'élément central est l'équipement
de réseau (commutateur, borne wifi, ...) désigné comme client RADIUS. Cet
équipement doit donc être en capacité de gérer le protocole 802.1x et le protocole
d'authentification EAP.
I.5 Le client final (ou supplicant)
Depuis Windows XP-SP3, les systèmes d'exploitation Microsoft disposent d'une
couche "supplicante" logicielle 802.1x. Les distributions Linux disposent de
paquetages comme "Xsupplicant".
Dans Windows, pour activer cette couche logicielle, il faut lancer le service de
configuration automatique de réseau câblé.
Commentaire associé à ce service:
"Le service Wired AutoConfig (DOT3SVC) est responsable de l’exécution de l’authentification IEEE
802.1X sur les interfaces Ethernet. Si votre déploiement de réseau câblé actuel applique
l’authentification 802.1X, le service DOT3SVC doit être configuré de façon à s’exécuter pour
l’établissement de la connectivité de Couche 2 et/ou fournir l’accès aux ressources réseau. Les
réseaux câblés qui n’appliquent pas l’authentification 802.1X ne sont pas concernés par le service
DOT3SVC."
La mise en route du service provoque l'apparition de l'onglet [Authentification] dans
les propriétés de la carte réseau.
Signification des coches
- "Revenir à un accès réseau non autorisé"
On coche cette option si on veut que, dans le cas où le système du client final
ne répondrait plus aux règles (de pare-feu, de mises à jour système,
d'antivirus), sa connexion soit coupée. Ces règles d'acceptation font partie des
exigences que l'on peut paramétrer dans le service RADIUS Microsoft NPS.
"Mémoriser mes informations d'identification..."
Mise en cache du couple identifiant/mot de passe. Cette mise en cache peut
être intéressante pour une machine non intégrée dans un domaine, pour éviter
de devoir se ré-authentifier. Pour nos TP, il est plus utile, pour observer ce qui
se passe, de décocher cette option. Un poste intégré dans un domaine pourra
utiliser les informations d'ouverture de session Windows pour l'authentification
802.1x. Ce ne sera pas demandé une seconde fois.
Ouvrons l'écran des propriétés EAP protégées en cliquant sur [Paramètres] à côté du
choix [Microsoft PEAP (Protected EAP]
"Valider le certificat du serveur"
Cette coche n'est pas utile dans notre cas.
Dans la méthode d'authentification,
on va utiliser "EAP-MSCHAP version 2".
Note : c'est par le bouton [Configurer] de l'écran ci-dessus qu'on indique si on veut
utiliser - ou non - le nom et le mot de passe d'ouverture de session Windows dans le
dialogue 802.1x.
Dans les phases de test, on peut relancer le mécanisme d'authentification en
désactivant/réactivant la carte réseau, mais tout le dialogue ne serait pas visible
dans un analyseur de trames. Il vaut mieux décocher/cocher "Activer
l'authentification 802.1X" pour observer tout ce qui se passe.
I.6 Les protocoles d'authentification
EAP est la couche protocolaire de base de l'authentification. Elle va servir à faire
passer un dialogue d'authentification entre le client final et le serveur RADIUS alors
que le port de connexion est fermé à toute autre forme de communication.
C'est un protocole extensible, au sens où il va permettre l'évolution de méthodes
d'authentification transportées, de plus en plus sûres au cours du temps.
Quelles ont été - et quelles sont - ces méthodes d'authentification ?
Le premier protocole a été PAP (Password Authentification Protocol) avec lequel les
mots de passe circulaient en clair. La sécurité proposée par ce protocole est faible.
Le second protocole qu'ont utilisé les serveurs RADIUS a été CHAP (Challenge
Handshake Authentication Protocol). Il est défini dans la RFC 1994. Avec CHAP, il
n'y a pas d'échange de mots de passe sur le réseau.
Les deux interlocuteurs, qui disposent donc de la même chaîne de caractère secrète,
s'authentifient sans échange du mot de passe par une technique de "challenge" (ou
"défi") basée sur une fonction de hachage à sens unique du secret partagé, telle que
MD5. Cette méthode était disponible avec le couple XP/Windows-2003-Server, mais
ne l'est plus en génération Seven/2008.
Au début de la connexion, le serveur réclame la preuve de l’identité du client, en lui
demandant de chiffrer une information. Le client ne peut relever le défi que s’il
possède effectivement la clé unique et secrète partagée.
Dialogue client-serveur avec CHAP
A. Après l'établissement de la connexion, l'authentificateur envoie une valeur aléatoire xxxxxx au
client.
B. Le client concatène cette valeur xxxxxx au secret partagé, applique une fonction de hachage
(telle que MD5) sur la chaîne obtenue et retourne le résultat.
C. Le serveur effectue la même opération et compare avec le résultat reçu. La connexion n'est
acceptée que si le résultat est identique.
D. A intervalle régulier, il y a un nouveau défi à relever pour pérenniser la connexion.
Microsoft a développé une variante de CHAP appelée MS-CHAP qui ajoute une
authentification mutuelle, MSCHAP-V1, puis MSCHAP-V2.
Dialogue client-serveur avec MSCHAP-V2.
A. Le serveur envoie au client une chaîne composée d'un identifiant de session et une chaîne
aléatoire xxxxx.
B. Le client renvoie son nom d'utilisateur et le résultat d'un hachage de la chaîne aléatoire xxxxx
+ l'identifiant de session + le mot-de-passe, et une seconde chaîne aléatoire yyyyy.
C. Le serveur vérifie le résultat (succès/échec) et retourne celui-ci, avec un hachage de la chaîne
yyyyy et du mot de passe utilisateur.
D. Le client vérifie enfin la correspondance entre les chaînes.
E. La connexion est établie
Articulation EAP / PEAP / MSCHAP-V2
- EAP est le mécanisme permettant à un client final de pouvoir communiquer sur
un port 802.1x fermé à toute autre forme de communication.
- PEAP ajoute la notion de protection des échanges par tunnel à ce mécanisme
- MSCHAP est la méthode de reconnaissance mutuelle du client serveur et du
serveur RADIUS qui passe par ce tunnel.
I.7 Les différentes phases (simplifiées) d'une connexion 802.1x
Au démarrage de la communication, le client final est prié d'envoyer ses identifiants
au serveur RADIUS. Or, à ce moment là, le client final ne connaît pas l'adresse du -
ou des - serveurs RADIUS du réseau. Il ne dispose peut-être même pas d'adresse
IP.
De même, le port du commutateur sur lequel il est connecté est censé être fermé
(état non contrôlé).
En réalité, le port contrôlé du commutateur n'est pas totalement fermé. Il va laisser
passer le protocole EAP (Phase 1 sur le schéma suivant). Cette communication ne
peut donc se faire que par des trames Ethernet de base et non par des paquets IP.
Le client final peut donc envoyer son identité dans un paquet EAP au commutateur.
Celui-ci le retransmet, encapsulé dans un paquet au format RADIUS, au premier
serveur RADIUS de sa liste (s'il en connaît plusieurs) (Phase 2).
Le serveur RADIUS reçoit le paquet et interroge sa base de données (Phase 3).
Il renvoie le résultat de cette interrogation au commutateur (Phase 4), sous forme
d'un commandement d'ouverture du port, éventuellement assorti d'un numéro de
VLAN dans lequel placer le client final.
A partir de ce moment seulement, il peut y
avoir d'autres trames échangées entre le client final et le reste du réseau, comme
une trame de requête DHCP par exemple.
Avant authentification