La rivincita di Linux: da MS Windows TS ai client Linux embedded e xrdp. - Ro...
free radius 201106
1. Università degli Studi di Trieste
Mercoledì 8 giugno 2011
copyleft 2011 – Daniele Albrizio
albrizio@units.it
FreeRADIUS
il protocollo e il daemon
per autenticare sulla rete
Daniele Albrizio - albrizio@units.it
2. Università degli Studi di Trieste
Mercoledì 8 giugno 2011
copyleft 2011 – Daniele Albrizio
albrizio@units.it
Parleremo di RADIUS
● Cosa è.
● Perché RADIUS.
● Come funziona.
● Sulla rete cosa succede
● Gli Attributi
● Estensioni recenti e CoA
3. Università degli Studi di Trieste
Mercoledì 8 giugno 2011
copyleft 2011 – Daniele Albrizio
albrizio@units.it
Parleremo di FreeRADIUS
● Caratteristiche del server
● Esempi di configurazione avanzata
● Tool di debug
4. Università degli Studi di Trieste
Mercoledì 8 giugno 2011
copyleft 2011 – Daniele Albrizio
albrizio@units.it
Cos'è RADIUS?
● Remote Authentication Dial In User Service
(RADIUS)
● standard de-facto per l’autenticazione remota
● è un protocollo ampiamente utilizzato negli
ambienti distribuiti.
● è comunemente usato per dispositivi di rete
integrati come router, server modem, switch
ecc.
5. Università degli Studi di Trieste
Mercoledì 8 giugno 2011
copyleft 2011 – Daniele Albrizio
albrizio@units.it
Dove si colloca
6. Università degli Studi di Trieste
Mercoledì 8 giugno 2011
copyleft 2011 – Daniele Albrizio
albrizio@units.it
Perché RADIUS?
● I sistemi integrati sono generalmente limitati
nel numero di utenti autenticabili
(memoria/cpu)
● ISP hanno 10k...10M utenti, aggiunti e
cancellati di continuo, le informazioni di
autenticazione cambiano costantemente.
L’amministrazione centralizzata degli utenti è
un requisito operativo.
7. Università degli Studi di Trieste
Mercoledì 8 giugno 2011
copyleft 2011 – Daniele Albrizio
albrizio@units.it
Perché RADIUS?
● RADIUS fornisce alcuni livelli di protezione
contro attacchi attivi e di sniffing. Altri
protocolli meno.
● Il supporto RADIUS è quasi onnipresente sui
dispositivi di accesso e non solo.
8. Università degli Studi di Trieste
Mercoledì 8 giugno 2011
copyleft 2011 – Daniele Albrizio
albrizio@units.it
Architettura e nomenclatura
Author Kgrr - Creative Commons Attribution-Share Alike 3.0 Unported
CLIENT SERVERPROXY
supplicant policy
enforcement point
policy
decision point
9. Università degli Studi di Trieste
Mercoledì 8 giugno 2011
copyleft 2011 – Daniele Albrizio
albrizio@units.it
AAA
● Radius viene spesso appellato “AAA server”
– Authorization
– Authentication
– Accounting
● Fa parte dell'AAI (authorization and
authentication infrastructure)
10. Università degli Studi di Trieste
Mercoledì 8 giugno 2011
copyleft 2011 – Daniele Albrizio
albrizio@units.it
RADIUS sulla rete
● Pacchetti UDP autenticati tramite shared
secret (port 1812 autz+auth, 1813
accounting)
● Richieste numerate
● Password hashed (rivelabile da un rogue
client modificato)
● EAP: estensione a plug-in che permette il
tunnelling criptato dell'autenticazione,
l'autenticazione a doppia chiave, one-time-
password (OTP), SIM, PEAP, LEAP, ecc.
11. Università degli Studi di Trieste
Mercoledì 8 giugno 2011
copyleft 2011 – Daniele Albrizio
albrizio@units.it
Autenticazione RADIUS
● Pacchetti di autenticazione
– 1 = Access-Request
– 2 = Access-Accept
– 3 = Access-Reject
– 11 = Access-Challenge
● Access-Accept porta anche attributi di
configurazione
● Access-Reject può portare anche un
messaggio di testo, ma nessun altro attributo
● Access-Challenge è usato principalmente
da CHAP e EAP
12. Università degli Studi di Trieste
Mercoledì 8 giugno 2011
copyleft 2011 – Daniele Albrizio
albrizio@units.it
Access-Request
● Sun Jun 5 16:59:26 2011
– Packet-Type = Access-Request
– User-Name = "ginopi@ds.units.it"
– User-Password = "lamiapassword"
– Service-Type = Login-User
– NAS-IP-Address = 111.103.38.15
– Huntgroup-Name = "VPN"
– Realm = "DEFAULT"
14. Università degli Studi di Trieste
Mercoledì 8 giugno 2011
copyleft 2011 – Daniele Albrizio
albrizio@units.it
Access-Challenge
● Una sessione EAP è composta da
– Un pacchetto Access-Request da client a server
– Seguito da un sacco di (ad es. 10-30) pacchetti
Access-Challange alternati da e verso il server
– Seguito da un pacchetto Access-Accept o
Access-Reject da server a client
15. Università degli Studi di Trieste
Mercoledì 8 giugno 2011
copyleft 2011 – Daniele Albrizio
albrizio@units.it
Access-Reject
● Sat Jun 4 16:51:51 2011
– Reply from radius proxy for user
s4322342342342@dsunits.it on NAS
172.11.55.14:15095 3Com 00-22-57-F4-5C-
11:eduroam-erdisu cli 00-26-5E-1F-72-61
– Packet-Type = Access-Reject
– Proxy-State = 0x313332
– Reply-Message = "Realm non valido! Appartiene
ad Eduroam?"
16. Università degli Studi di Trieste
Mercoledì 8 giugno 2011
copyleft 2011 – Daniele Albrizio
albrizio@units.it
Access-Accept
● Sat Jun 4 16:51:51 2011
– Packet-Type = Access-Accept
– Exec-Program = "/nac/trigger.sh"
– Idle-Timeout = 1800
– Session-Timeout = 7200
– Reply-Message = "Durata massima sessione 2
ore. Logout per inattività dopo 30 minuti"
17. Università degli Studi di Trieste
Mercoledì 8 giugno 2011
copyleft 2011 – Daniele Albrizio
albrizio@units.it
Attributi
● Possono essere di 3 tipi:
– Request attributes
– Reply attributes
– Internal attributes (freeRADIUS only)
● Sono definiti nei dizionari tramite tipo e
numero identificativo
● In FreeRADIUS ne viene fatto un largo uso e
quindi vanno filtrati in uscita (reply) con
l'apposito modulo attr-filter
18. Università degli Studi di Trieste
Mercoledì 8 giugno 2011
copyleft 2011 – Daniele Albrizio
albrizio@units.it
Attributi e file users
# program Exec
# Network admission control (better said
repression)
DEFAULT HuntgroupName == "Captive"
ExecProgram =
"/etc/adminscripts/nac/trigger.sh",
FallThrough = Yes
19. Università degli Studi di Trieste
Mercoledì 8 giugno 2011
copyleft 2011 – Daniele Albrizio
albrizio@units.it
Users file
gianni Huntgroup-Name =~ "VPN", Cleartext-
Password = "fwerfwe"
Framed-IP-Address := 172.30.225.65,
Framed-IP-Netmask := 255.255.255.255,
Service-Type := Framed-User,
Framed-Protocol := PPP,
Fall-Through = No
20. Università degli Studi di Trieste
Mercoledì 8 giugno 2011
copyleft 2011 – Daniele Albrizio
albrizio@units.it
CoA
● Change of Authorization (rfc5716)
● Permette la rinegoziazione push (dal radius
server verso il client) dei parametri di
connessione utente.
● Di solito è prevista anche la disconnessione
dell'utente
● Pochi apparati lo supportano, ma
rappresenta un elemento di scelta nell'IT
21. Università degli Studi di Trieste
Mercoledì 8 giugno 2011
copyleft 2011 – Daniele Albrizio
albrizio@units.it
FreeRADIUS: caratteristiche
● Il più usato (in termini di autenticazioni)
● Modulare (anche troppo)
– PAP, CHAP, MS-CHAP, MS-CHAPv2, SIP Digest
– EAP: AKA, FAST, GPSK, IKEv2 (experimental),
Cisco LEAP, PAX, PSK, SAKE, GTC, SIM, TLS,
MD5-Challenge, MSCHAPv2, TNC
– EAP-PEAPv0 e 1: MSCHAPv2, GPSK, GTC,
MD5-Challenge, PAX, PSK, SAKE
– EAP-PEAPv0-TLS
– EAP-TTLS: PAP, CHAP, MS-CHAP, MS-CHAPv2,
GPSK, GTC, MD5-Challenge, PAX, PSK, SAKE,
TLS
22. Università degli Studi di Trieste
Mercoledì 8 giugno 2011
copyleft 2011 – Daniele Albrizio
albrizio@units.it
FreeRADIUS: caratteristiche
● Policy di autorizzazione in fase pre-
autenticazione e post-autenticazione.
● Policy in file di testo, db, perl java python
scripts
● Filtri degli attributi, riscrittura degli stessi,
attributi interni e personalizzabili.
● Esempi funzionanti per molti backend e una
collezione completa di dizionari per i client.
● Backend su db, testo, ldap
● Accounting su db e testo
23. Università degli Studi di Trieste
Mercoledì 8 giugno 2011
copyleft 2011 – Daniele Albrizio
albrizio@units.it
FreeRADIUS: caratteristiche
● Failover e load balancing configurabili per le
funzionalità di:
– Proxying
– Backend di autenticazione, autorizzazione e
accounting
– Configurazione
● Configurazione annidabile tramite l'uso di
server freeRADIUS virtuali
● Unlang conditional language nell
configurazione, genera configurazioni
dinamiche
24. Università degli Studi di Trieste
Mercoledì 8 giugno 2011
copyleft 2011 – Daniele Albrizio
albrizio@units.it
Esempio di failover proxying
home_server garreduroam1 {
type = auth+acct
ipaddr = 194.44.1.1
port = 1812
secret = 4523vjhtu67
nostrip
}
home_server garreduroam2 {
type = auth+acct
ipaddr = 133.36.12.12
port = 1812
secret = fw34480125
nostrip
}
# Failover Pool Eduroam
home_server_pool garreduroam {
type = failover
home_server = garreduroam1
home_server = garreduroam2
}
realm DEFAULT {
pool = garreduroam
nostrip
}
25. Università degli Studi di Trieste
Mercoledì 8 giugno 2011
copyleft 2011 – Daniele Albrizio
albrizio@units.it
Instanziare dinamicamente i moduli
con Unlang
# EAP certificate selection depending on SSID
# CiscoAVPair = "ssid=eduroamunits"
if ("%{request:CiscoAVPair}" == "ssid=eduroam") {
eap_TCS {
ok = return
}
}
# 3Com CalledStationId = "ec44768187f0:eduroamunits"
elsif ("%{request:CalledStationId}" =~ "/eduroam$/" {
eap_TCS {
ok = return
}
}
else {
eap_rapidssl {
ok = return
}
}
26. Università degli Studi di Trieste
Mercoledì 8 giugno 2011
copyleft 2011 – Daniele Albrizio
albrizio@units.it
Gestire account a tempo
# Set the CurrentTime value for further comparison
# It is important that this is set before the module
that does the effective comparison
authorize {
update request {
MyRequestDate = "%D"
}
}
# MyRequestDate in a dictionary file.
# Request date attribute filled with %D value (YYYYMMDD)
# Used to do date based authorization
ATTRIBUTE MyRequestDate 3002 integer
27. Università degli Studi di Trieste
Mercoledì 8 giugno 2011
copyleft 2011 – Daniele Albrizio
albrizio@units.it
Tool di debug e pianificazione
● eapol_test
● wpasupplicant lato client
● radmin
● radclient
– radclient -x -f radiuspacjetfile SERVER:1812 auth
secret
● radsniff
– radsniff -d /usr/local/share/freeradius -i eth0 -x
● wireshark
● tcpdump
● mindmap
28. Università degli Studi di Trieste
Mercoledì 8 giugno 2011
copyleft 2011 – Daniele Albrizio
albrizio@units.it
Links e Riferimenti
● Wikipedia in inglese su Radius e EAP
● FreeRADIUS http://www.freeradius.org/
29. Università degli Studi di Trieste
Mercoledì 8 giugno 2011
copyleft 2011 – Daniele Albrizio
albrizio@units.it
Licenza d'uso
di questo documento
Quest'opera è stata rilasciata sotto la licenza Creative Commons
Attribuzione-Condividi allo stesso modo 2.5.
Per leggere una copia della licenza visita il sito web
http://creativecommons.org/licenses/publicdomain/ o spedisci una
lettera a Creative Commons, 559 Nathan Abbott Way, Stanford,
California 94305, USA.