Академический Документы
Профессиональный Документы
Культура Документы
Mars 2007
Os radius
Le radius est un os long qui forme le squelette de l'avant-bras Cet os va de l'extrieur du coude la base du pouce sur le poignet. Il est plus court que l'autre os de l'avant-bras, le cubitus
Sommaire
Historique AAA Protocole Radius Flux Radius Outils Radius Freeradius Exploitation proxy Radius CASE Questions
Historique
Radius = Remote Authentication Dial-In User Service Dvelopp par Livingston Enterprises puis normalis par lIETF Premire version: janvier 1997 Dernire version: juin 2000 normalise par l'IETF dans les RFC :
RFC 2865 (RADIUS authentication) RFC 2866 (RADIUS accounting) RFC 2869 (RADIUS extensions EAP)
A l'origine pour permettre aux FAI d'authentifier les utilisateurs distants utilisant les connexions par modem RTC partir de multiples serveurs (les clients radius de type NAS) mais d'une seule base utilisateurs (attache au serveur radius)
Authentication
Qui me parle ? Comment je lauthentifie ?
Authorization
Quelles autorisations je lui accorde ?
Accounting
Que fait-il ?
Authentication
Permet de vrifier si le client est bien celui quil prtend tre Authentification pour dlivrer des autorisations Prsentation dun login/password, dun token, dune adresse MAC, ... Mthode dauthentification: CHAP, MS-CHAP, PAP, EAP, etc Authentification rseaux:
Branchement physique: 802.1X Autorisation daccs Autorisation d'usage
Authentification applicatives:
Systme d'exploitation: formulaire de login Application apache: formulaire HTTP daccs une page
Authorization
Vrifier si le client droit daccder telle ou telle ressource Utilisation dun fichier ou dune base de donnes Enrichissement grce des attributs
Framed-IP-Address, Session-Timeout et Idle-Timeout, ..
Utilisation de dictionnaires
Valeur
213.223.20.254 213.223.20.1
Accounting
Input-Octets
Output-Octets
Session-Time
145 20Mo
32 3600
Le protocole Radius
Permet de grer les connexions d'utilisateurs des services distants (politique d'autorisation, droits d'accs et traabilit) Dfini par la RFC2138/RFC2139 et ses extensions RFC2869 (support de lEAP pour accroitre la scurit) Architecture client/serveur Transport UDP Port 1812 (anciennement 1645): service authentification Port 1813 (anciennement 1646): service accounting Proxyfiable Transport en clair, seul le mot de passe est chiffr par hachage Richesse des informations qui peuvent potentiellement tre transmises entre le serveur et le client par les attributs (AvPairs)
Le protocole utilise 6 types de paquets => suffisants pour assurer toutes les transactions: Access-Request
Premier paquet envoy par le client (NAS), Contient l'identit de l'utilisateur qui se connecte
Access-Accept
Renvoy par le serveur Radius pour accepter la requte du client aprs interrogation de sa base d'authentification
Access-Reject
Emis par le serveur radius pour spcifier au client que sa requte est rejete.
Access-Challenge
Emis par le serveur Radius pour demander de remettre un access-request avec des paramtres supplmentaires
Accounting-Request
Emis par le client pour indiquer loccurrence dun dvnement
Accounting-Response
Emis par le serveur pour confirmer lenregistrement de lvnement
10
Identifier (1 octet): permet dassocier les requtes et leurs rponses Length (2 octets): taille totale du paquet UDP Authenticator (2 octets): permet de garantir lintgrit et la scurit Attributes
11
Les authenticators
Hash de 16 octets qui assure la scurit des changes Calcul des authenticators:
RequestAuth = nombre alatoire ResponseAuth = MD5(Code+ID+Length+RequestAuth+Attributes+Secret) RequestAcct = MD5(Code+ID+Length+16 zero octets+Attributes+Secret) ResponseAcct = MD5(Code+ID+Length+ RequestAcct+Attributes+Secret)
Les paquets access-request ne sont pas authentifis avec le secret ! Le serveur peut demander un challenge (Request-Challenge) Seul lattribut User-Password permet de vrifier que le secret partag est le bon.. enfin, si le password est bon
User-Password = XOR(MD5(Secret+RequestAuth),Password)
12
Couple de cl/valeur permettant un enrichissement des proprits des paquets Chaque attribut possde un numro d'identification Seul ce numro est transmis dans les paquets La correspondance entre le nom de l'attribut, son numro et son type est ralis dans un dictionnaire
Nom
User-Name User-Password CHAP-Password NAS-IP-Address NAS-Port Service-Type Framed-Protocol Framed-IP-Address Framed-IP-Netmask
Code
1 2 3 4 5 6 7 8 9
Type
string string octets ipaddr integer integer integer ipaddr ipaddr
Length (1 octet): taille totale de lattribut en comptant le Type+ Length+Value Value (x octets)
14
Les fabricant de matriel rseau ont parfois intgr leurs quipements des attributs spcifiques en plus des attributs standards dfinis dans les RFC. Ces attributs sont encapsuls dans l'attribut standard vendor-specific qui a pour numro 26. Ils sont appels VSA = Vendor Specific Attribut
15
Type (1 octet) = 26 Vendor-Specific Length (2 octets) = taille totale de lattribut Vendor-Id (4 octets) = N'immatriculation du fabricant
16
Mode opratoire
17
Flux dauthentication
NAS
Serveur Radius
Select User=nhe
Framed-Address=213.223.38.100
Internet
Utilisateur
Flux daccounting
NAS
Accounting-Request User-Name=nhe@fai Serveur NAS-IP-Address: 207.12.4.1 Acct-Status-Type = Stop Acct-Session-Id = 120 Acct-Session-Time = 200
Radius
Dconnexion
Internet
Utilisateur
19
Faiblesses du protocole
Le protocole RADIUS possde ainsi plusieurs failles de conception se trouvant l'origine de problmes de scurit :
La technique de protection "User-Password" ne devrait pas utiliser la fonction MD5 comme primitive de chiffrement qui est plutt rserv pour des opration de signature La gnration du champ "Response Authenticator" prsente des faiblesses Le paquet "Access-Request" n'est pas authentifi. De nombreuses implmentations clientes ne crent pas des requtes d'authentification "Request Authenticator" suffisamment alatoires Beaucoup d'administrateurs choisissent des "secrets partags" identiques pour diffrents clients De nombreuses implmentations clientes limitent artificiellement le nombre de caractres possibles du secret partag
En interceptant la fois le Access-Request envoy par le client et la rponse du serveur, il est possible de trouver le secret en utilisant une attaque brute-force ou par dictionnaire. En effet, le Request Authenticator n'est pas encrypt dans la requte, ni les champs Code, Identificateur et Longueur et les attributs dans la rponse
RequestAuth = nombre alatoire ResponseAuth = MD5(Code+ID+Length+RequestAuth+Attributes+Secret)
20
Le modem adsl effectue une demande de connexion sur le domaine @sfr.fr Le BAS demande une authentification sur le radius interne de la collecte ADSL de NeufTelecom Le radius analyse la demande et retransmet la requte vers le serveur radius du FAI distant
21
Radius a t tendu pour supporter le protocole EAP et donc l'authentification 802.1x. Pour cela 2 attributs ont t ajouts:
Message-Authenticator EAP-Message
Les paquets EAP sont encapsuls dans l'attribut EAP-Message Message-Authenticator est un attribut qui permet de signer les requtes qui contiennent des attributs EAP-Message. (calcul MD5 sur le contenu d'un access-request + secret partag) RFC:
3579 radius support for EAP 3748 EAP 2716 EAP/TLS 3580 802.1x radius usage guidelines
22
23
24
25
Pas de rponse
26
Serveurs radius
Radiator Steel-Belted Microsoft Radius Server IAS Cisco Secure Access Control Server (ACS) OpenRADIUS Radius - GNU Project Cistron RADIUS Freeradius
Clients radius
radtest radiusclient testradius healthcheck F5 Cyber
27
Freeradius
Freeradius est une implmentation open source du protocole Radius Bas sur Cistron Supporte:
PAP, CHAP, MS-CHAP, EAP-MD5, EAP-GTC, EAP-TLS, EAP-TTLS, PEAPv0, LEAP, EAP-SIM, Digest LDAP, PostgresSQL, Oracle, SAMBA, fichier Local Proxy RADIUS Failover, Load balancing Rcriture, Ajout dattribut la vole Plus de 100 dictionnaires vendor Module PAM-radius pour linux Module mod_auth pour Apache
Disponible sur : Linux, FreeBSD, NetBSD, Solaris, MAC OSX, HP/UX, AIX, MINGW32, CygWin
28
Configurations secondaires:
eap.conf dictionnary ldap.attrmap oraclesql.conf postgresql.conf sql.conf
29
Doit rfrencer toutes les IP et les secrets des clients Radius autoriss /etc/raddb/clients.conf
client 127.0.0.1 { secret = "testradius" shortname = localhost } client 80.125.182.0/30 { secret = "testradius" shortname = HC_DMZF } client 80.118.192.64/26 { secret = "tutuyoutou" shortname = h-int-rha-proxy_radius_sfr
30
Le fichier users est la base de donnes locale Il est constitu d'une succession d'entres. Chacune correspondant un utilisateur ou une machine Le fichier est parcouru squentiellement du haut vers le bas Chaque entre commence par un identifiant (le username) suivi par une liste d'item vrifier (check item) sur une seule ligne. Les lignes suivantes commencent par une tabulation suivie d'une liste d'items de rponse (reply item) (Il peut y avoir plusieurs reply item spars par des virgules et sur plusieurs lignes) La slection sarrte au premier qui match sauf si une directive de FallThrough = Yes est utilis Tous les check-item doivent matcher, sinon la requte est rejete
31
DEFAULT Suffix == ".shell", Auth-Type := System Service-Type = Login-User, Login-Service = Telnet, Login-IP-Host = your.shell.machine
testradius Auth-Type := Local , User-Password == "testradius" Reply-Message = "Hello, %u", Fall-Through = No DEFAULT Huntgroup-Name == "proxy_radius_sfr" , Proxy-To-Realm := "h-ach-rha-vipradius" Fall-Through = No
32
Permet de dfinir un groupe de clients bas sur des adresses IP Le nom du groupe servira comme discriminant dans le users /etc/raddb/huntgroups
proxy_radius_sfr Client-IP-Address =~ "80.118.192.*" proxy_radius_sfr Client-IP-Address =~ "80.118.196.*" proxy_radius_sfr Client-IP-Address =~ "86.64.152.*"
34
Permet de dfinir la configuration des forwarding Commence par une directive proxy server:
proxy server { synchronous = no retry_delay = 5 retry_count = 3 dead_time = 120 default_fallback = no }
Un serveur est vu down si une requte nest pas servie dans le dlais imparti Attention, il est sorti du pool pendant 120s non compressible ! synchronous=no permet de ne pas renvoyer une requte duplique default_fallback=no permet de ne pas utiliser les entres DEFAULT en cas dabsence de realm => proxy par default
35
Constitu d'une succession de directives realm permettant de choisir le forwardeur De base: si User-name=toot@free.fr alors realm=free.fr Choix dimplmentation: pas de connaissance des realms des user-name + forage du realm dans le fichier users
realm h-ach-rha-vipradius { type = radius authhost = 10.143.214.20:1812 accthost = 10.143.214.20:1813 secret = toutouyoutou nostrip }
Forward des requtes vers les hosts suivant le service auth ou acct Si 2+ realms identiques avec directive: ldflag= round_robin alors load-balacing Si 2+ realms identiques avec directive: ldflag= fail_over alors active/backup
36
Securit
Dfinit les paramtres pour minimiser les impacts dune attaque (nombre max dattributs, temps entre 2 requtes, etc..
Thread
Dfinit les paralllisassions des process traitant les requtes entrante (nombre min, max, start, etc)
Snmp
Dfinit la communaut pour le pooling des stats => ne marche pas dans notre version
Instantiate
Dfinit lordre de chargement des modules
37
Bloc Modules
Dfinit les fonctions activables ainsi que leur instances : chap, pap, realm, ldap,files, preprocess, sql, passwd, attr_rewrite Format : nom_du_module nom_de_linstance { paramtres }
modules { ldap ldap_serveur1 { server = "ldap.your.domain" } ldap ldap_serveur2 { server = "ldap2.your.domain" } } attr_rewrite rwt_username { attribute = User-Name searchin = proxy searchfor = sfr.fr replacewith = sfr.com ignore_case = no new_attribute = no }
detail acct_log { detailfile = ${radacctdir}/%{Client-IP-Address}/acct_detail-%Y%m%d detailperm = 600 } detail auth_log { detailfile = ${radauthdir}/%{Client-IP-Address}/auth-detail-%Y%m%d detailperm = 600 } detail post_auth_log { detailfile = ${radacctdir}/%{Client-IP-Address}/reply-detail-%Y%m%d detailperm = 600 } detail pre_proxy_log { detailfile = ${radacctdir}/%{Client-IP-Address}/pre-proxy-detail-%Y%m%d detailperm = 600 } detail post_proxy_log { detailfile = ${radacctdir}/%{Client-IP-Address}/post-proxy-detail-%Y%m%d detailperm = 600 }
38
Bloc Authentication
Liste les type dauthentification disponibles Sur CASE uniquement PAP et CHAP
authenticate { Auth-Type PAP { pap } Auth-Type CHAP { chap } }
39
Bloc Authorize
Prpare les attributs, les enrichis et dcide quels sont ceux qui seront renvoys Sur CASE, uniquement preprocess (clean + huntgroups) -> realms -> users
40
41
Pour RHA
CASE ne connat pas les realms des clients => exit la mthode des realm toto@sfr CASE ne connat pas les User-name et CASE na pas accs une base LDAP => exit mthode user=>proxy CASE connat les IP de NAS/Proxy se connectant dfinition dun huntgroup forage du huntgroup tre proxyfi vers la PFS RHA Peut-tre contraignant car discriminant = IP source
42
Exploitation de freeradius
Arret/Dmarrage/Statut: /etc/init.d/radiusd stop/start/status Debug prolog avanc (attention cela coupe le flux)
/etc/init.d/radiusd stop radiusd X Ne pas oublier de relancer /etc/init.d/radiusd start
43
Exploitation de freeradius
/var/log/messages
Mar 30 11:59:16 pppsvada01 radiusd: radiusd shutdown succeeded Mar 30 11:59:19 pppsvada01 radiusd: Fri Mar 30 11:59:19 2007 : Info: Starting - reading configuration files ... Mar 30 11:59:19 pppsvada01 radiusd: radiusd startup succeeded Mar 30 11:59:40 pppsvada01 radiusd: radiusd shutdown succeeded Mar 30 11:59:43 pppsvada01 radiusd: Fri Mar 30 11:59:43 2007 : Info: Starting - reading configuration files ... Mar 30 11:59:43 pppsvada01 radiusd: Fri Mar 30 11:59:43 2007 : Error: /etc/raddb/radiusd.conf[267]: Unexpected end of file Mar 30 11:59:43 pppsvada01 radiusd: Fri Mar 30 11:59:43 2007 : Error: Errors reading radiusd.conf Mar 30 11:59:43 pppsvada01 radiusd: radiusd startup failed
44
Sending Access-Request of id 2 to 10.143.214.20:1812 User-Name = "usr1opt3@test.sfr.fr" CHAP-Password = 0x01128b8ff6bbebf100e98d95a0f5292e3f NAS-IP-Address = 86.70.250.167 NAS-Identifier = "92def1-G2-2" Framed-Compression = None NAS-Port-Type = Virtual NAS-Port = 2 Port-Limit = 0 Calling-Station-Id = "92def1-G2-201100100037" Acct-Session-Id = "0077904942" Connect-Info = "OPT1-MAD-MAX" NAS-Port-Id = "92def1-G2-2.1.At.1.1.1.1.37.1.37" Proxy-State = 0x4f53432d457874656e6465642d49643d313531 CHAP-Challenge = 0x572c6d143f4d21563be1ba588bd3b35f Proxy-State = 0x313531 rad_recv: Access-Accept packet from host 10.143.214.20:1812, id=2, length=142 Proxy-State = 0x4f53432d457874656e6465642d49643d313531 Proxy-State = 0x313531 Reply-Message = "-" Service-Type = Framed-User Tunnel-Assignment-Id:1 = "217.70.90.123" Tunnel-Client-Auth-Id:1 = "clara-sfr" Tunnel-Medium-Type:1 = IP Tunnel-Password:1 = "password" Tunnel-Preference:1 = 1 Tunnel-Server-Endpoint:1 = "217.70.90.123" Tunnel-Type:1 = L2TP
46
Processing the post-proxy section of radiusd.conf modcall: group post-proxy returns ok for request 73 authorize: Skipping authorize in post-proxy stage rad_check_password: Found Auth-Type rad_check_password: Auth-Type = Accept, accepting the user radius_xlat: '-' Processing the post-auth section of radiusd.conf modcall: entering group post-auth for request 73 modcall: group post-auth returns ok for request 73 Sending Access-Accept of id 151 to 80.118.192.89:43255 Reply-Message = "-" Service-Type = Framed-User Tunnel-Assignment-Id:1 = "217.70.90.123" Tunnel-Client-Auth-Id:1 = "clara-sfr" Tunnel-Medium-Type:1 = IP Tunnel-Password:1 = "password" Tunnel-Preference:1 = 1 Tunnel-Server-Endpoint:1 = "217.70.90.123" Tunnel-Type:1 = L2TP Proxy-State = 0x4f53432d457874656e6465642d49643d313531 Finished request 73
47
Question ?
Hicham?
48
EAP/TLS
49
EAP/TLS
1- Le NAS envoi au client une requte EAP lui demandant son identit 2- Le client rpond avec le CN comme identit 3- Le serveur dmarre la squence TLS par lenvoi du message TLS_start 4- Le client rpond par un message client_hello :
La version de TLS Un challenge (nombre alatoire) Un identifiant de session La liste des algorithmes de chiffrement supports par le client
EAP/TLS
7- Le client et le serveur calculent une cl de chiffrement pour la session principale ( partir des challenges changs) 8- Le client renvoi une rponse EAP vide et le serveur rpond par un message EAP_success avec une cl de session pour la borne wifi. 9- A partir de cette cl de session la borne calcul une cl WEP ou WPA et lenvoi au client. Dans le cas dauthentification EAP/TLS la cl de session principale nest pas utilise.
51