Vous êtes sur la page 1sur 42

Mthodes dauthentification avec un serveur Radius

Serge Bordres (Centre dEtudes Nuclaires de Bordeaux-Gradignan) 20 mars 2007 Institut dAstrophysique de Paris

Sommaire

Radius, principes Radius et 802.1X Usages de Radius


9 9 9 9 9

Protocoles dauthentification Rseaux virtuels Programmation Portails captifs Transformer un serveur en client Radius

Radius pour faire quoi ?


Authentification/autorisations VPN Authentification Wifi
h Aut cat i f i t en io ance t s i nd

Portail capif

Authentification filaire

Qu'est-ce-que Radius ?

Protocole d'

uthentification

=> Qui parle ? => Quels sont ses droits ? => Que fait-il ?

d'

A A
d'

utorisation ccounting

Principe client/serveur

Le monde de Radius
Authentification

Accs au rseau local

Accs dautres services Autorisations

Transport Adresses MAC 802.1X EAP

TLS TTLS PEAP


Transportent dautres protocoles (chap, mschapv2)

Quest quune authentification ?


Cest le processus qui prouve quune identit appartient bien celui qui la prsente Un identifiant est propos au serveur radius. Il doit vrifier quil est bien prsent dans sa base Il doit vrifier que celui qui prsente cet identifiant peut prouver quil en est bien le propritaire

Mhodes les plus courantes :


9 9 9

Adresse MAC (faible, pas de preuve) Login/mot de passe Certificat

Quest-ce quune autorisation ?


Le terme autorisation a un sens trs large Accs ou refus de la connexion au rseau Affecter un Nde VLAN Donner une adresse IP Ou encore : Positionner des ACLs Excuter une commande (filtrage, routage)

Il faut voir ces autorisations comme des attributs de connexion (Reply-item)

Les clients Radius


Serveur Radius Accs au rseau local Accs dautres services

Equipements rseau

Serveurs

Clients Radius

Commutateurs Routeurs

Bornes sans-fil

VPN

portail captif

..

Postes utilisateurs Pour tre client Radius il faut partager un secret partag

Principes du protocole Radius


requte rponse Serveur Radius requte rponse

Principes du protocole Radius

Demande d'authentification et d'autorisation

Demande infos supplmentaires

Access-Request Access-Challenge
Optionnel suivant les protocoles

Access-Request Access-Challenge
. . .

Interrogation de la base de donnes

Access-Accept Access-Reject

Accepte ou refuse

Principes du protocole Radius : Les attributs


Toutes les informations changes entre le serveur Radius et le client Radius passent par des attributs. Un attribut = Un nom et une valeur Certains attributs sont utilisables, dautres non ou bien dans certains cas Exemples dattributs
9 9 9

User-Name Calling-Station-Id Called-Station-Id

Envoys par les clients au serveur Radius (Request-Items)

9 9

Tunnel-Private-Group-Id Framed-IP-Adress

Envoys par le serveur Radius aux clients (Reply-Items)

Pas compatible avec EAP

Attributs vendor-specific

Principes du protocole 802.1X

Apr

s a u

then

tific a t io

EAP
Port non-contrl Port contrl

Port ouvert pour tous les protocoles

802.1X est un mcanisme actif sur lquipement rseau EAP est un protocole de dialogue de bas niveau entre lquipement rseau et le poste de travail

Le protocole EAP

EAP (Extensible Authentication Protocol) nest pas un protocole dauthentification Cest un protocole de transport de protocole dauthentification (TLS, PEAP, TTLS) Les paquets du protocole dauthentification sont encapsuls dans des paquets EAP EAP dispose de quatre types de paquets 9Request 9Response 9Success 9Failure Lquipement rseau : Connat le protocole EAP et cest tout (il ne sait pas ce que transporte EAP) Redirige les paquets EAP vers un serveur dauthentification grce au protocole Radiu Les quipements rseau sont indpendants du protocole dauthentification utilis

802.1X, EAP et Radius

EA P

Serveur Radius

ov er Ra di

us

802.1X

EAP

Compatibilit EAP dans Radius

La compatibilit EAP dans Radius est ralise au moyen dun attribut supplmentaire: EAP-Message Lorsque lquipement rseau reoit un paquet EAP du poste utilisateur, il le copie dans un attribut EAP-Message, lui mme copi dans un paquet Access-Request. Lorsque le serveur Radius reoit ce paquet il extrait le contenu de EAP-Message et le passe un module EAP pour drouler le protocole quil contient. Ce qui suppose que le serveur Radius dispose de ce module EAP (qui ne fait pas partie du protocole Radius)

Compatibilit EAP dans Radius

E A P

E A P

R A D I U S

R A D I U S

E A P

Authentification Base de donnes

Protocole dauthentification (charge utile) Encapsulage EAP Encapsulage Radius

Bases de donnes

La base de donnes associe au serveur Radius contient des informations dauthentification et/ou dautorisations. Cette base nest pas spcifie par le protocole Radius Avec FreeRadius par exemple : Fichier plat (users) Base LDAP (avec le schma Radius) Domaine Windows Base SQL Autorisations et/ou authentification Autorisations et/ou authentification Authentification Autorisation

Lidentifiant (attribut User-Name) envoy au serveur Radius est utilis comme cl de recherche dans la base

Lidentifiant

Type d'authentification adresse MAC

Emetteur de lidentifiant l'quipement rseau

Protocole RADIUS

login/password le poste utilisateur (supplicant)

certificat

RADIUS + 802.1X + EAP

Lintrt dun serveur Radius


Authentifier les machines/utilisateurs pour laccs au rseau local Utilisable en filaire et sans-fil Placer les machines dans des sous-rseaux virtuels Plusieurs moyens dauthentification Initialiser les algorithmes de chiffrement des communications (WPA) Les communications WiFi peuvent tre scurises Radius est un lment actif du rseau, pas seulement une base de donne. Grce aux modules ou attributs programmables. Interfaage avec des logiciels de portails captifs Authentification distante par redirection de requtes (proxy) Utilisable par dautres types de serveurs (VPN)

Implmentations Radius

Open sources Freeradius Openradius Gnuradius Commerciales ACS (Cisco) IAS (Microsoft)

Quelques protocoles dauthentification


Radius-MAC => Authentification par adresses MAC Equivalent VMPS pour le filaire Pas recommand en sans-fil TLS => Authentification mutuelle par certificats Deux phases : 9TLS Handshake - Authentification des certificats 9TLS Record - Cration dun tunnel chiffr Seule la premire phase est utilise Lidentifiant dans la base est le CN du certificat PEAP et TTLS

802.1X

=> Authentification du client par login/password et authentification du serveur par son certificat Met en uvre TLS Handshake puis TLS Record Le protocole dauthentification du mot de passe circule dans le tunnel chiffr

Usage avec les rseaux virtuels


Intrt : Une fois lauthentification faite, lquipement rseau ouvre le port sur un VLAN (VLAN dynamique) Utilisation des attributs :
9Tunnel-Type 9Tunnel-Medium-Type 9Tunnel-Private-Group-Id

(Ethernet 802) <= Le numro de VLAN

(VLAN)

Processus : Le serveur trouve lidentifiant dans sa base Rcupre les attributs Tunnel Envoie ces attributs lquipement rseau avec lAccess-Accept Lquipement rseau ouvre le port dans le VLAN contenu dans Tunnel-Private-Group-Id Les bornes WiFi doivent tre capables de grer plusieurs VLAN par SSID

Usage avec les rseaux virtuels


Exemples de configuration avec FreeRadius
Adresse MAC

0123456789ab Auth-Type :=Local, User-Password == 0123456789ab Tunnel-Type = VLAN, Tunnel-Medium-Type =IEEE-802, Tunnel-Private-Group-Id =Le 3 VLAN

Authentification Par adresse MAC (Pas de 802.1x)

Dupont Auth-Type := EAP Authentification 802.1X/EAP. Tunnel-Type = VLAN, Dupont peut se connecter depuis nimporte quel poste Tunnel-Medium-Type =IEEE-802, Tunnel-Private-Group-Id = 3

Dupont Auth-Type := EAP, Calling-Station-Id == 0123456789ab Tunnel-Type = VLAN, Tunnel-Medium-Type =IEEE-802, Tunnel-Private-Group-Id = 3

Authentification 802.1X/EAP. Dupont peut se connecter uniquement depuis le poste dadresse MAC 0123456789ab

Wifi Protected Access - WPA


WPA = 802.1X/EAP + mthode de chiffrement WPA permet : 9Authentification 9Chiffrement des communications (TKIP ou AES) Lauthentification est ralise par le serveur Radius avec EAP Le serveur Radius envoi la borne une cl de chiffrement calcule partir de la cl de session calcule dans la phase TLS Handshake. Cette cl est envoye dans lAccess-Accept au moyen de lattribut MS-MPPE-RECV-KEY Le rle du serveur Radius sarrte l La borne et le poste utilisateur drivent des cls de chiffrement Un chiffrement symtrique est ensuite tabli entre la borne et le poste utilisateur

WPA : Initialisation des cls de chiffrement

MK

TLS-Handshake

MK

PMK

PMK
Access-Accept

MS-MPPE-RECV-KEY EAPol-key PTK PMK

PTK

GTK
Chiffrement TKIP ou AES

GTK

Critres dauthentification supplmentaires


Exemples avec Freeradius

Authentification suivant l'quipement rseau Called-Station-Id ou Nas-IP-Address Identifiant Auth-Type := EAP , Called-Station-Id== adresse mac

Suivant le jour et l'heure Identifiant Auth-Type := EAP, Login-Time = any0700-2000 Expiration

Identifiant Auth-Type := EAP, Expiration = 30 Mar 2007 00:00:00

Imposer la mthode d'authentification Identifiant Auth-Type := EAP,EAP-Type:=PEAP

Modules et attributs programmables


Il est possible dcrire des programmes qui sexcuteront pendant le processus dauthentification/autorisation. Deux mthodes : Au moyen de modules dclars dans la configuration Radius Avec lattribut Exec-Program-Wait dans la base de donnes.

Exemples :
9Gnrer 9Envoyer 9

des lignes de logs spcifiques un mail avant expiration

Faire des vrifications supplmentaires dynamiquement la base de donnes

9Modifier

Modules et attributs programmables


Dans le fichier de configuration du daemon FreeRadius (radiusd.conf) on dfini un module spcifique.
exec logrecord { wait = yes program = "/usr/local/bin/logrecord %{Calling-station-Id} %{NAS-IP-ADDRESS} %{NAS-PORT} " input_pairs = reply output_pairs=none packet_type = Access-Accept }

Ce module est appel dans une des sections de radiusd.conf


post-auth { . } logrecord ..

Ecrire le programme appel

/usr/local/bin/logrecord
#!/bin/sh CALLING_STATION_ID=$1 NAS_IP_ADDRESS=$2 NAS_PORT=$3 logger "radiusd:ALLOW: ${CALLING_STATION_ID} -> VLAN${TUNNEL_PRIVATE_GROUP_ID//'"'/}, nas ${NAS_IP_ADDRESS} port ${NAS_PORT} USER ${USER_NAME}"

Modules et attributs programmables


Appel dun programme dans les attributs stocks dans la base de donnes (utilisation de lattribut Exec-Program-Wait.) Exemple : Envoi dun mail avant date dexpiration
Identifiant Auth-Type := EAP, Calling-Station-ID == 0123456789ab, Expiration = 30 Mar 2007 00:00:00 Tunnel-Type = VLAN Tunnel-Medium-Type = IEE-802 Exec-Program-Wait = /usr/local/bin/un-programme 3 dupont 30 Mar 2007 00:00:00

Ecriture du programme correspondant


#!/bin/sh # Les attributs sont passs dans des variables denvironnement vlan=$1 mail=$2 expire=$3 .. Calcul dlai avant expiration . Envoi dun mail .. echo Tunnel-Private-Group-Id = $vlan exit

Radius et les portails captifs


Page html envoye par le portail captif

Login :.. Password :..


La borne place le client sur le VlAN ddi

VLAN ddi derrire le Portail captif

Portail captif

Serveur Radius

Radius et les portails captifs

Le serveur de portail captif est dclar comme client dans la configuration du serveur Radius Le serveur Radius accepte les requtes si elles viennent du portail captif (Called-Station-Id) Le portail captif envoi comme identifiant le login/password. Le portail captif agit comme routeur / firewall / dhcp

Plusieurs stratgies possibles :


9Inconnus

toujours accepts sur le portail captif (pas dauthentification) dans Radis des utilisateurs autoriss (par exemple avec la programmation Radius)

9Enregistrement

9Auto-enregistrement

Proxy-Radius, principes
Domaine A Domaine B

Serveur Radius Serveur Radius

Identifiant=dupont@domaineA

Cest le serveur Radius du domaine auquel appartient lutilisateur nomade qui lauthentifie. Il envoi un Access-Accept au serveur Radius du domaine daccueil Le serveur daccueil choisit le VLAN Principe de Eduroam

Proxy-Radius, principes

Domaine-A
clients.conf Dclaration du serveur du domaine B comme client proxy.conf Dclaration du domaine-B Filtrage dattributs

Domaine-B
clients.conf Dclaration du serveur du domaine A comme client proxy.conf Dclaration du domaine-A Filtrage dattributs

Transformer un serveur en client Radius

Utilit : Se servir de Radius comme serveur central pour raliser des authentifications Se servir de Radius pour obtenir des informations (adresse IP, rgles de filtrage)

Transformer un serveur en client Radius avec pam_radius

Compilation/Installation du module pam_radius sur le serveur-client Configuration de PAM Dclaration du serveur-client sur le serveur Radius (secret partag dans clients.conf) Cration du fichier pam_radius_auth sur le serveur-client pour inscrire le secret partag.

Limitations : On ne peut obtenir quune authentification login/password Pas de retour dattributs

Transformer un serveur en client Radius avec radclient

Radclient est un utilitaire fourni avec FreeRadius Il faut installer Freeradius sur le serveur client (on lance pas de daemon, pas de config) Permet dinterroger la base Radius et dobtenir les attributs dans une chane de caractres

Transformer un serveur en client Radius avec radclient


Le fichier users du serveur Radius
Dupont Auth-Type := Local, User-Password == test, Nas-IP-Address == @IPdu-serveur-client Framed-IP-Address = 172.16.0.3, Tunnel-Type = VLAN, Tunnel-Medium-Type = IEEE-802, Tunnel-Private-Group-Id = 3,

Sur le serveur-client
echo User-Name=Dupont,User-Password=test | radclient x serveur-radius auth secret > tempfile

Rponse reue par le serveur-client


cat tempfile Sending Access-Request of id 229 to 172.16.0.10 port 1812 User-Name = " Dupont" User-Password = " test" rad_recv: Access-Accept packet from host 172.16.0.10:1812, id=229, length=42 Framed-IP-Address = 172.16.0.3 Tunnel-Type:0 = VLAN Tunnel-Medium-Type:0 = IEEE-802 Tunnel-Private-Group-Id:0 = "3"

Openvpn et Radius et radclient


Premier exemple But : le serveur Openvpn demande Radius si un utilisateur est connu et quelle adresse IP lui donner Openvpn authentifie les utilisateurs avec leur certificat Si le certificat nest pas authentifi, lutilisateur est rejet Appel dun script pour interroger le serveur Radius avec lordre client-connect Ce script excute une commande radclient (utilise Radius comme base dautorisation) Si Access-Reject cela signifie que cet utilisateur nest pas autoris utiliser OpenVpn. (exit 1) Si Access-Accept, analyse de la chane de caractres renvoyes pour en extraire ladresse IP. Ensuite on crit dans le fichier de config temporaire gr par Openvpn echo ifconfig adresse-envoye-par radius adresse-server-openvpn > $1 Intrts : 9Mme avec un certificat valide, un utilisateur sera autoris se connecter uniquement sil est enregistr dans la base de Radius. 9Un utilisateur reoit toujours la mme adresse IP. 9Possibilit de mettre en uvre un serveur VPN multi-vlan

Openvpn et Radius et radclient


Deuxime exemple But : Excuter, sur le serveur Openvpn, une commande iptables pour un utilisateur particulier Mthode : Crer un attribut qui contient une commande Iptables qui sera envoye par le serveur Radius au serveur Openvpn au moment de la connexion de lutilisateur. Sur le serveur Radius :
Jean Dupont Auth-Type := Local, User-Password == test, Nas-IP-Address == @IP-du-serveur-client Ipables = -I FORWARD s 172.16.0.3 j ACCEPT , Framed-IP-Address = 172.16.0.3, Tunnel-Type = VLAN, Tunnel-Medium-Type = IEEE-802, Tunnel-Private-Group-Id = 3

Sur le serveur Openvpn, le script client-connect est du type :


echo User-Name=Dupont,User-Password=test | radclient x serveur-radius auth secret > tempfile 9 Recherche de ladresse IP et affectation 9 Recherche du mot cl Iptables dans le fichier tempfile 9 Extraction de la commande Iptables 9 Excution de la commande Iptables

Openvpn et Radius et radiusplugin

Radiusplugin permet une authentification sur le serveur Radius avec retour de certains attributs (Framed-IP-Address, Framed-Routes, Acct-Interim-Interval) Sutilise avec loption plugin de Openvpn Projet intressant mais pas encore au point Bien moins souple que radclient (http://www.nongnu.org/radiusplugin)

Bilan

Le serveur Radius est le moteur de la mobilit Cest un lment structurant du rseau Apporte des solutions pour authentifier sans-fil/filaire (unification) Apporte des solutions pour exploiter au mieux un rseau fortement structur Apporte des solutions pour laccueil des visiteurs Extension dautres services rseau

Rfrences

RFC 2865, RFC 2868, RFC 2869 (http://www.ietf.org) http://www.freeradius.org http://www.freeradius.org/list/users.html http://www.levkowetz.com/pub/ietf/drafts/eap/rfc2284bis/draft-ietf-eap-rfc2284bis-07.html (EAP) http://www.wi-fi.org (WiFi Alliance/WPA) Livre: Authentification rseau avec Radius par Serge Bordres - Eyrolles