RADIUS
Da Wikipedia, l'enciclopedia libera.
RADIUS (Remote Access Dial-In User Service) è un protocollo AAA (authentication, authorization, accounting) utilizzato in applicazioni di accesso alle reti o di mobilità IP. RADIUS è attualmente lo standard de-facto per l’autenticazione remota, prevalendo sia nei sistemi nuovi che in quelli già esistenti.
Indice |
[modifica] Dettagli sul protocollo
Un pacchetto RADIUS è così formato (secondo la RFC):
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Code | Identifier | Lenght | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | Authenticator | | | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Attributes... +-+-+-+-+-+-+-+-+-+-+-+-+-
Il codice stabilisce il tipo di pacchetto RADIUS. I codici sono:
- 1 = Access-Request
- 2 = Access-Accept
- 3 = Access-Reject
- 4 = Accounting-Request
- 5 = Accounting-Response
- 11 = Access-Challenge
- 12 = Status-Server (sperimentale)
- 13 = Status-Client (sperimentale)
- 255 = riservato
L’identificatore è un ottetto che permette al client RADIUS di associare una risposta RADIUS con la relativa richiesta. Il significato della stringa Authenticator, di 16 byte, verrà chiarito dopo. Nella sezione degli attributi, infine, è conservato un numero arbitrario di campi.
[modifica] Funzionamento
L’intero processo ha inizio quando un client crea un pacchetto RADIUS Access-Request, includendo almeno gli attributi User-Name e User-Password, e generando il contenuto del campo identificatore. Il processo di generazione del campo identificatore non è specificato nel protocollo RADIUS, ma è solitamente implementato come un semplice contatore incrementato ad ogni richiesta.
Il campo authenticator contiene una Request-Authenticator, ovvero una stringa di 16 byte scelta in modo casuale. L'intero pacchetto è trasmesso in chiaro, a parte per l’attributo User-Password, che è protetto nel modo seguente: il client e il server condividono una chiave segreta. Tale chiave viene unita con la Request Authenticator, e l'intera stringa viene sottoposta a una funzione hash MD5 per la creazione di un valore di 16 ottetti, sottoposto a sua volta a un XOR con la password immessa dall’utente (e se tale password è più lunga di 16 ottetti, vi è un calcolo MD5 addizionale, utilizzando il testo cifrato anziché la Request Authenticator).
Il server riceve il pacchetto Access-Request e verifica di possedere la chiave segreta per il client. In caso negativo, il pacchetto viene silenziosamente ignorato. Poiché anche il server è in possesso del segreto condiviso, è possibile utilizzare una versione modificata del processo di protezione del client per ottenere la password in chiaro. Quindi il server consulta il database per convalidare username e password; se la password è valida, il server crea un pacchetto Access-Accept da rimandare al client. In caso contrario, crea un pacchetto Access-Reject e lo invia al client.
Entrambi i pacchetti Access-Accept e Access-Reject utilizzano lo stesso valore identificatore del pacchetto Access-Request del client, e hanno una Response Authenticator nel campo Authenticator. La Response Authenticator è la funzione hash MD5 del pacchetto di risposta con l’associata Request Authenticator, concatenata con il segreto condiviso.
Quando il client riceve un pacchetto di risposta, si accerta che esso combaci con una precedente richiesta utilizzando il campo identificatore. Se non esiste alcuna richiesta con lo stesso identificatore, la risposta è silenziosamente ignorata. Quindi il client verifica la Response Authenticator utilizzando lo stesso calcolo effettuato dal server, ed infine comparando il risultato con il campo Authenticator. Se la Response Authenticator non coincide, il pacchetto è silenziosamente ignorato.
Se il client riceve un pacchetto Access-Accept verificato, username e password sono considerati corretti, e l’utente è autenticato. Se invece riceve un pacchetto Access-Reject verificato, username e password sono scorretti, e di conseguenza l’utente non è autenticato.
[modifica] Utilizzo di RADIUS
RADIUS è un protocollo ampiamente utilizzato negli ambienti distribuiti. È comunemente usato per dispositivi di rete integrati come router, server modem, switch ecc., per svariate ragioni:
- I sistemi integrati generalmente non riescono a gestire un gran numero di utenti con informazioni di autenticazione distinte, poiché questo richiederebbe molta più memoria di massa di quanta ne possiedano la maggior parte di essi.
- RADIUS facilita l’amministrazione utente centralizzata, che è importante per diverse applicazioni. Molti ISP hanno decine di migliaia, centinaia di migliaia o anche milioni di utenti, aggiunti e cancellati di continuo durante una giornata, e le informazioni di autenticazione cambiano costantemente. L’amministrazione centralizzata degli utenti è un requisito operativo.
- RADIUS fornisce alcuni livelli di protezione contro attacchi attivi e di sniffing. Altri protocolli di autenticazione remota offrono una protezione intermittente, inadeguata o addirittura inesistente.
- Un supporto RADIUS è quasi onnipresente. Altri protocolli di autenticazione remota non hanno un consistente supporto da parte dei fornitori di hardware, quando invece RADIUS è uniformemente supportato. Poiché le piattaforme sulle quali è implementato RADIUS sono spesso sistemi integrati, vi sono limitate possibilità di supportare protocolli addizionali. Qualsiasi cambiamento al protocollo RADIUS dovrebbe quantomeno avere una compatibilità minima con client e server RADIUS preesistenti (e non modificati).
Nonostante ciò, è stato messo a punto un nuovo protocollo, Diameter, candidato a rimpiazzare RADIUS: utilizza infatti TCP anziché UDP ed è di conseguenza considerato più sicuro ed affidabile.
[modifica] Modalità di utilizzo di RADIUS
RADIUS è un protocollo che utilizza pacchetti UDP per trasportare informazioni di autenticazione e configurazione tra l’autenticatore e il server RADIUS. L’autenticazione è basata su username, password e, opzionalmente, risposta a una richiesta di riconoscimento (una sorta di “parola d’ordine”). Se l’autenticazione ha successo, il server RADIUS invia le informazioni di configurazione al client, inclusi i valori necessari a soddisfare il servizio richiesto, come un indirizzo IP e una maschera di sottorete per PPP o un numero di porta TCP per telnet.
Uno dei limiti del protocollo RADIUS è l’autenticazione basata esclusivamente su password: la password è trasmessa o in forma hash (utilizzando l’algoritmo di hashing MD5), oppure sottoforma di risposta a una richiesta di identificazione (CHAP-password). L’Extensible Authentication Protocol (EAP) rende RADIUS capace di lavorare con una varietà di schemi di autenticazione, inclusi chiave pubblica, Kerberos e smart card.
L’access point agisce da traduttore EAP-RADIUS tra il client wireless e il RADIUS server. Esso utilizza il protocollo EAP per comunicare con il client e il protocollo RADIUS per comunicare con il server RADIUS. L’access point incapsula le informazioni (come lo username o la chiave pubblica) in un pacchetto RADIUS che inoltra al server RADIUS. Quando il server rimanda una delle possibili risposte (Access-Accept/Reject/Challenge), l’access point spacchetta il pacchetto RADIUS ed inoltra la risposta al client in un pacchetto EAP.
La RFC 2869 (RADIUS Extensions) specifica gli attributi opzionali da settare sui pacchetti RADIUS per indicare al server RADIUS che si sta utilizzando il protocollo EAP. Poiché il pacchetto EAP include un campo per specificare quale metodo di autenticazione è in uso, il server RADIUS implementa l’autenticazione richiamando un’apposta procedura.
[modifica] RADIUS usato per l’autenticazione web
RADIUS offre la possibilità di eseguire l’autenticazione di utenti remoti anche per particolari siti web che richiedono la protezione dall’accesso del pubblico generale. In particolare c’è un modulo che prevede l’integrazione con il server web Apache, ovviando all’uso dei file .htaccess e .htpasswd con le istruzioni Allow e Deny, che rende l’accesso alle risorse web protetto con le caratteristiche AAA viste precedentemente.
Il modulo è stato sviluppato per Apache 1.x, e si chiama mod_auth_radius (per la versione 2.0 ancora non è stato sviluppato, ne è stato aggiornato). In questo modo Apache diventa un client del server RADIUS, sostituendosi al NAS nell’usuale schema di autenticazione, e dando in out-sourcing la gestione dell’autorizzazione e dell’accounting.
[modifica] Standard
Il protocollo RADIUS è definito in:
Altre RFC rilevanti sono:
- RFC 2548 Microsoft Vendor-specific RADIUS Attributes
- RFC 2607 Proxy Chaining and Policy Implementation in Roaming
- RFC 2618 RADIUS Authentication Client MIB
- RFC 2619 RADIUS Authentication Server MIB
- RFC 2620 RADIUS Accounting Client MIB
- RFC 2621 RADIUS Accounting Server MIB
- RFC 2809 Implementation of L2TP Compulsory Tunneling via RADIUS
- RFC 2867 RADIUS Accounting Modifications for Tunnel Protocol Support
- RFC 2868 RADIUS Attributes for Tunnel Protocol Support
- RFC 2869 RADIUS Extensions
- RFC 2882 Network Access Servers Requirements: Extended RADIUS Practices
- RFC 3162 RADIUS and IPv6
- RFC 3575 IANA Considerations for RADIUS
- RFC 3576 Dynamic Authorization Extensions to RADIUS
- RFC 3579 RADIUS Support for EAP
- RFC 3580 IEEE 802.1X RADIUS Usage Guidelines
- RFC 4014 RADIUS Attributes Suboption for the DHCP Relay Agent Information Option
[modifica] Collegamenti esterni
- (EN) An Analysis of the RADIUS Authentication Protocol
- (EN) List of RADIUS attributes
- (EN) The History of the RADIUS Server
![]() |
|||||||
---|---|---|---|---|---|---|---|
Progetto Informatica | Portale Informatica | BarCode | |||||
Categorie principali
|