free radius 201106

29
Università degli Studi di Trieste Mercoledì 8 giugno 2011 copyleft 2011 – Daniele Albrizio [email protected] FreeRADIUS il protocollo e il daemon per autenticare sulla rete Daniele Albrizio - [email protected]

Upload: daniele-albrizio

Post on 29-Jan-2018

64 views

Category:

Internet


0 download

TRANSCRIPT

Università degli Studi di TriesteMercoledì 8 giugno 2011

copyleft 2011 – Daniele [email protected]

FreeRADIUSil protocollo e il daemonper autenticare sulla rete

Daniele Albrizio - [email protected]

Università degli Studi di TriesteMercoledì 8 giugno 2011

copyleft 2011 – Daniele [email protected]

Parleremo di RADIUS

● Cosa è.● Perché RADIUS.● Come funziona.● Sulla rete cosa succede● Gli Attributi● Estensioni recenti e CoA

Università degli Studi di TriesteMercoledì 8 giugno 2011

copyleft 2011 – Daniele [email protected]

Parleremo di FreeRADIUS

● Caratteristiche del server● Esempi di configurazione avanzata● Tool di debug

Università degli Studi di TriesteMercoledì 8 giugno 2011

copyleft 2011 – Daniele [email protected]

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.

Università degli Studi di TriesteMercoledì 8 giugno 2011

copyleft 2011 – Daniele [email protected]

Dove si colloca

Università degli Studi di TriesteMercoledì 8 giugno 2011

copyleft 2011 – Daniele [email protected]

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.

Università degli Studi di TriesteMercoledì 8 giugno 2011

copyleft 2011 – Daniele [email protected]

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.

Università degli Studi di TriesteMercoledì 8 giugno 2011

copyleft 2011 – Daniele [email protected]

Architettura e nomenclatura

Author Kgrr - Creative Commons Attribution-Share Alike 3.0 Unported

CLIENT SERVERPROXYsupplicant policy

enforcement pointpolicy

decision point

Università degli Studi di TriesteMercoledì 8 giugno 2011

copyleft 2011 – Daniele [email protected]

AAA

● Radius viene spesso appellato “AAA server”– Authorization

– Authentication

– Accounting

● Fa parte dell'AAI (authorization and authentication infrastructure)

Università degli Studi di TriesteMercoledì 8 giugno 2011

copyleft 2011 – Daniele [email protected]

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.

Università degli Studi di TriesteMercoledì 8 giugno 2011

copyleft 2011 – Daniele [email protected]

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

Università degli Studi di TriesteMercoledì 8 giugno 2011

copyleft 2011 – Daniele [email protected]

Access-Request

● Sun Jun 5 16:59:26 2011– Packet-Type = Access-Request

– User-Name = "[email protected]"

– User-Password = "lamiapassword"

– Service-Type = Login-User

– NAS-IP-Address = 111.103.38.15

– Huntgroup-Name = "VPN"

– Realm = "DEFAULT"

Università degli Studi di TriesteMercoledì 8 giugno 2011

copyleft 2011 – Daniele [email protected]

Access-Request EAP (no password)

● Sun Jun 5 16:59:26 2011– Packet-Type = Access-Request

– User-Name = "[email protected]"

– Framed-MTU = 1400

– Called-Station-Id = "0014.23e5.2c23"

– Calling-Station-Id = "40a6.3fff4.3ef5"

– Cisco-AVPair = "ssid=eduroam"

– Service-Type = Login-User

– Message-Authenticator = 0x418ce9da259c587451ad707c7949c89f

– EAP-Message = 0x02010017017330303030304064732e756e6974732e6974

– NAS-Port-Type = Wireless-802.11

– NAS-Port = 450406

– NAS-Port-Id = "450406"

– NAS-IP-Address = 172.140.32.20

– NAS-Identifier = "WDSC1"

– Huntgroup-Name = "WDS-AP-Routers"

Università degli Studi di TriesteMercoledì 8 giugno 2011

copyleft 2011 – Daniele [email protected]

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

Università degli Studi di TriesteMercoledì 8 giugno 2011

copyleft 2011 – Daniele [email protected]

Access-Reject

● Sat Jun 4 16:51:51 2011 – Reply from radius proxy for user

[email protected] 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?"

Università degli Studi di TriesteMercoledì 8 giugno 2011

copyleft 2011 – Daniele [email protected]

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"

Università degli Studi di TriesteMercoledì 8 giugno 2011

copyleft 2011 – Daniele [email protected]

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

Università degli Studi di TriesteMercoledì 8 giugno 2011

copyleft 2011 – Daniele [email protected]

Attributi e file users

# program Exec# Network admission control (better said repression)DEFAULT Huntgroup­Name == "Captive"        Exec­Program = "/etc/adminscripts/nac/trigger.sh",        Fall­Through = Yes

Università degli Studi di TriesteMercoledì 8 giugno 2011

copyleft 2011 – Daniele [email protected]

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

Università degli Studi di TriesteMercoledì 8 giugno 2011

copyleft 2011 – Daniele [email protected]

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

Università degli Studi di TriesteMercoledì 8 giugno 2011

copyleft 2011 – Daniele [email protected]

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

Università degli Studi di TriesteMercoledì 8 giugno 2011

copyleft 2011 – Daniele [email protected]

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

Università degli Studi di TriesteMercoledì 8 giugno 2011

copyleft 2011 – Daniele [email protected]

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

Università degli Studi di TriesteMercoledì 8 giugno 2011

copyleft 2011 – Daniele [email protected]

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 Eduroamhome_server_pool garreduroam {    type = fail­over    home_server = garreduroam1    home_server = garreduroam2} 

realm DEFAULT {    pool = garreduroam    nostrip}

Università degli Studi di TriesteMercoledì 8 giugno 2011

copyleft 2011 – Daniele [email protected]

Instanziare dinamicamente i moduli con Unlang

# EAP certificate selection depending on SSID# Cisco­AVPair = "ssid=eduroam­units"  if ("%{request:Cisco­AVPair}" == "ssid=eduroam") {    eap_TCS {      ok = return    }  }# 3Com Called­Station­Id = "ec­44­76­81­87­f0:eduroam­units"  elsif ("%{request:Called­Station­Id}" =~ "/eduroam$/" {    eap_TCS {      ok = return    }  }  else {    eap_rapidssl {      ok = return    }   }

Università degli Studi di TriesteMercoledì 8 giugno 2011

copyleft 2011 – Daniele [email protected]

Gestire account a tempo

# Set the Current­Time value for further comparison# It is important that this is set before the module that does the effective comparisonauthorize {  update request {     My­Request­Date = "%D"  }}

# My­Request­Date in a dictionary file.# Request date attribute filled with %D value (YYYYMMDD)# Used to do date based authorizationATTRIBUTE      My­Request­Date        3002    integer

Università degli Studi di TriesteMercoledì 8 giugno 2011

copyleft 2011 – Daniele [email protected]

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

Università degli Studi di TriesteMercoledì 8 giugno 2011

copyleft 2011 – Daniele [email protected]

Links e Riferimenti

● Wikipedia in inglese su Radius e EAP● FreeRADIUS http://www.freeradius.org/

Università degli Studi di TriesteMercoledì 8 giugno 2011

copyleft 2011 – Daniele [email protected]

Licenza d'usodi 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.