Radius
Radius
Radius
Objectifs spécifiques :
1. Savoir expliquer les concepts de RADIUS
2. Maitriser les principaux attributs RADIUS
3. Maitriser les formats des données échangées entre un client et un serveur
RADIUS
4. Savoir mettre en œuvre les différents protocoles d’authentification EAP
5. Savoir contrôler l’accès aux réseaux basés sur les ports en utilisant le
protocole 802.1X aussi bien en environnement Windows que Linux
Sommaire
I. Radius
I.1 Historique
I.2 Description du protocole
I.3 Principes du protocole RADIUS
I.4 Les entités du protocole Radius
I.5 Les formats des données du protocole RADIUS
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.
On trouvera 4 types de paquets permettant d’effectuer une authentification Radius :
Access-Request : Ce paquet est envoyé par le NAS qui contient les
informations d’authentification du client.
De façon imagée, l'utilisateur qui veut entrer sur le réseau va s'adresser à un "gardien" (un
équipement de réseau) qui lui demande alors de décliner son identité, qui va vérifier, auprès
d'un poste de sécurité central, que l'on peut effectivement le laisser entrer et qui prendra
connaissance des prérogatives qui seront accordées à l'utilisateur après son admission.
L'équipement de réseau sur lequel le client final se connecte (un commutateur - ou une
borne Wifi compatible 802.1x, un routeur) 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 fichier, dans un annuaire LDAP ou encore une base de données SQL.
Les ports d'écoute UDP utilisés pour accéder aux services proposés par le protocole RADIUS
sont les suivants :
• 1812, reçoit les requêtes d'authentification et d'autorisations ;
• 1813, reçoit les requêtes d' « accounting » (comptabilité).
Le protocole RADIUS utilise un format de paquet bien défini pour réaliser les transactions
d'authentification, d'autorisation et de comptabilité. Le modèle des données RADIUS
contient les champs ci-contre:
1. Code ;
2. ID ;
3. Longueur ;
4. « Authentificateur » ;
5. Attributs et Valeurs.
Ces champs accueillent des types de données décrites dans la RFC du protocole RADIUS.
Code
Ce champ identifie le type du paquet RADIUS. En effet, le protocole définit 255 types de
paquets que l'on peut trouver dans la RFC 3575. Cependant, nous allons citer quelques types
de ces derniers à savoir :
Access-Request
Access-Challenge
Access-Accept
Access-Reject
ID
Ce champ permet de mettre en relation un identifiant au client RADIUS avec le couple
requêtes/réponses.
Longueur
Ce champ contient la longueur totale des données RADIUS.
Authentificateur
Ce champ permet de vérifier l'intégrité des paquets envoyés par le serveur RADIUS. Il est
calculé de manière aléatoire à partir d'un secret partagé (mot de passe connu par le serveur et
le client) entre le client et le serveur. Ainsi, le client RADIUS peut s'assurer que la réponse
lui vient bien du serveur RADIUS et non d'un usurpateur.
Attributs et valeurs
Ce champ contient la charge utile du protocole RADIUS. Il est de longueur variable en
fonction des couples d'attributs/valeurs envoyés par le client RADIUS en requête ou par le
serveur RADIUS en réponse.
Dans les paquets RADIUS, le nom d'un attribut n'apparaît jamais. Seul le numéro de l'attribut
est présent. La correspondance entre le nom de l'attribut et son numéro est faite grâce à un
dictionnaire d'attributs implémenté sur le client et sur le serveur.
Les dictionnaires d'attributs contiennent la concordance entre les attributs standards et leurs
numéros respectifs. Mais il peut également avoir des dictionnaires d' « attributs constructeurs
».
Le protocole RADIUS compte un grand nombre d'attributs (plus d'une centaine). La liste
complète des attributs RADIUS est consultable sur le site internet de l'organisation IANA au
lien suivant : http://www.iana.org/assignments/radius-types/radius-types.xhtml#radius-types-
2
Exemple :
"User-Name"
Cet attribut est envoyé par le client RADIUS lors de la demande d'authentification. Il peut
correspondre à un identifiant utilisateur associé à un mot de passe. Dans le cas de
l'authentification d'une machine, cet attribut peut prendre la valeur de l'adresse physique de
celle-ci plus communément appelée adresse MAC. Lors de l'utilisation d'un certificat
électronique, la valeur reçue par l'attribut User-Name est le nom du porteur du certificat.
"User-Password"
Cet attribut contient le mot de passe associé à l'attribut User-Name. Il est également envoyé
par le client RADIUS.
"NAS-IP-Address"
Cet attribut est renseigné par le client RADIUS (NAS). Il contient son adresse IP. Cet attribut
peut imposer une restriction. Par exemple, un poste de travail ne pourra s'authentifier que s'il
se connecte à partir d'un NAS possédant une adresse IP spécifique.
"Nas-Port"
Cet attribut permet d'ajouter une condition supplémentaire pour l'authentification. Prenons
l'exemple d'un équipement réseau de type commutateur. Ainsi, un poste de travail est autorisé
à s'authentifier uniquement s'il est connecté sur un port précis du commutateur. L'attribut «
Nas-Port » donne le numéro de port sur lequel est connecté un poste utilisateur. Il est envoyé
par le NAS lors de la demande d'authentification.
Dans la technologie sans fil, cet attribut perd son sens, car un point d'accès génère un port
"virtuel" au moment de l'association du poste de travail à celui-ci.
"Called-Station-Id"
Cet attribut contient l'adresse MAC du NAS qui demande l'authentification au serveur
RADIUS
"Calling-Station-Id"
Cet attribut contient l'adresse MAC du poste de travail souhaitant s'authentifier.
L'ajout d'attribut(s) constructeur permet aux administrateurs réseau de tirer un meilleur profit
des capacités de leurs équipements réseau. En effet, ils offrent aux fournisseurs la possibilité
de spécifier 255 attributs supplémentaires pour leurs matériels. L'implémentation d'un
dictionnaire d'attributs constructeur permet le support de ceux-ci sur le serveur RADIUS.
Bien évidemment, seuls les équipements constructeurs pourront interpréter la valeur d'un
attribut propriétaire.
Cet attribut est appelé « Vendor Specific Attributes » (VSA) dans la terminologie RADIUS.
Il est identifié par le numéro d'attribut 26. L'attribut VSA est similaire au couple
attribut/valeur (AVP) RADIUS (voir figure 7). Chaque attribut VSA est constitué des champs
suivants :
N° d'attribut : c'est le numéro 26 qui est défini pour l'attribut VSA dans le standard
RADIUS ;
Longueur : contient la longueur totale de l'attribut ;
« Vendor-id » : contient le code international du constructeur. Chaque constructeur
possède un code qui lui est propre. On trouve la liste des codes constructeur dans la
RFC 1700 ;
N° d'attribut constructeur : contient le numéro d'attribut spécifié par le constructeur ;
Longueur VSA : contient la longueur du champ VSA ;
Valeur de l'attribut constructeur : contient la valeur de l'attribut VSA.
L'autre nom de 802.1x est "Port-based Network Access Control" ou "User Based Access
Control".
Le protocole 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 :
Dans des implémentations plus cloisonnées, le serveur RADIUS indiquera par exemple au
client RADIUS dans quel VLAN placer le client final.
II.1. Les protocoles et méthodes 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.
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.
PEAP
PEAP est un protocole de transfert sécurisé (P comme "Protected") d'informations
d'authentification. Il a été mis au point par Microsoft, Cisco et RSA. Il ne nécessite pas de
certificat sur les postes clients, contrairement à EAP/TLS. MS-CHAP s'appuie sur PEAP
En réalité, le port contrôlé du commutateur n'est pas totalement fermé. Il va laisser passer
le protocole EAP (Phase 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 ).
EAP
Après authentification
1.1 L'équipement demande au client final de décliner son identité (trame EAP-
Request-Identity),
1.2 Le client répond par une trame EAP contenant son nom d'utilisateur (trame EAP-
Response-Identity). Ça tombe bien, les trames EAP sont les seules autorisées à entrer dans
l'équipement.
L'équipement fabrique un paquet IP [access-request] encapsulant la trame [EAP- response-
Identity]. Il ajoute d'autres informations comme l'adresse MAC du client final. Ce paquet IP
est envoyé au serveur RADIUS.
Le client final répond dans une trame [EAP-response] transmis de la même manière indirecte
par encapsulation - au serveur RADIUS.
Le client final répond par un message [client hello] avec la liste des algorithmes de
chiffrement qu'il connait.
Le serveur envoie son choix d'algorithme, ainsi que son certificat et sa clé publique au client
final.
Le client final authentifie le serveur. Il génère une "pré-master-key" avec la clé publique du
serveur. Le serveur fait de même et un tunnel chiffré est établi entre eux. Le tunnel sert à
protéger l'échange du mot de passe par rapport à une authentification EAP simple.
Rappel : le client final n'a pas de certificat (PEAP). Attention, bien qu'on utilise TLS, on
n’est pas dans "EAP-TLS", méthode utilisant des certificats serveur et client.
Les échanges liés au protocole de validation du mot de passe vont être effectués dans le tunnel
TLS avec MSCHAP-V2.
Le port s'ouvre lorsque le serveur envoie au client final un message [Access-Accept] après
avoir vérifié le mot de passe de l'utilisateur et s'être assuré de ses autorisations.
II.3. Exemple de cas d’utilisation de RADIUS
Cet exemple de cas d’utilisation permet d’authentifier les utilisateurs finaux qui tentent de
connecter au point d’accès avec un login et un mot de passe qui sont stockés dans un fichier,
dans une base de données, ou dans un annuaire LDAP.
Installation et Configuration
Nous éditons le fichier /etc/freeradius/clients.conf pour déclarer le Point d'accès Wifi comme
suit :
La déclaration d'un point d'accès consiste à préciser son adresse IP ou son adresse réseau et
son mot de passer qui permettent de l'authentifier auprès du serveur freeradius.
Il reste à créer les utilisateurs dans le fichier /etc/freeradius/users pour se connecter avec ces
comptes :