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 [Link]
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 ([Link]) 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 [Link]
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 [Link] Tunnel-Type = VLAN Tunnel-Medium-Type = IEE-802 Exec-Program-Wait = /usr/local/bin/un-programme 3 dupont 30 Mar 2007 [Link]
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
[Link] Dclaration du serveur du domaine B comme client [Link] Dclaration du domaine-B Filtrage dattributs
Domaine-B
[Link] Dclaration du serveur du domaine A comme client [Link] 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 [Link]) 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 = [Link], 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 [Link] port 1812 User-Name = " Dupont" User-Password = " test" rad_recv: Access-Accept packet from host [Link]:1812, id=229, length=42 Framed-IP-Address = [Link] 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 [Link] j ACCEPT , Framed-IP-Address = [Link], 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 ([Link]
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 ([Link] [Link] [Link] [Link] (EAP) [Link] (WiFi Alliance/WPA) Livre: Authentification rseau avec Radius par Serge Bordres - Eyrolles