Wireless security

Argomento questo che, vista la notevolissima mole di acronimi che spesso hanno il medesimo significato, di guide non del tutto aggiornate, di standard non sempre seguiti alla lettera, mi crea spesso dei dubbi.

Abbiamo 3 possibili sistemi che implementano la sicurezza in una rete wireless, sviluppati nel corso degli anni. La sicurezza si può logicamente dividere in 3 parti: Autenticazione, Crittazione e Gestione delle chiavi

WEP (wired equivalent Privacy) è stata la prima soluzione di sicurezza.
- WEP: WEP authentication, RC4 stream encryption, No key management

WPA (wifi-protected access) è stata la seconda soluzione ad interim mentre l'institute of electrical and electronic engineers (IEEE) stava lavorando a un più robusto standard, 802.11i.
- WPA-Personal: PSK authentication, TKIP/MIC (Message integrity check) encryption (basato su RC4), WPA key management
- WPA-Enterprise: 802.1x/EAP authentication, TKIP/MIC encryption, 802.1x key management

WPA2 è la generazione attuale di wi-fi security e integra tutto ciò che lo standard 802.11i ha introdotto (per cui spesso i 2 termini si usano come sinonimi).
Ci sono 2 modalità di funzionamento di WPA2
- WPA2-Personal: PSK authentication, CCMP encryption (based on AES), CCMP key management.
In questa modalità quindi le PSK fungono sia da autenticazione, sia da seme per creare le chiavi usate per la crittazione.
- WPA2-Enterprise: 802.1x/EAP authentication, CCMP encryption (based on AES), 802.1x key management.
In questa modalità andrai a utilizzare utente/password, oppure un certificato, oppure dei dettagli della macchina per fare l'autentica: Questi dati fungeranno poi da semi per la creazione delle chiavi di crittazione
Alcuni dispositivi a volte supportano anche il "vecchio" TKIP per il WPA2 in quanto AES richiede potenze di calcolo superiori e alcune apparecchiature non ce la fanno.

Ora parliamo di WPA2-Enterprise che è l'argomento che mi interessa maggiormente.

Da specifiche WPA2-Enterprise utilizza lo standard 802.1x per fare l'autenticazione.

Lo standard IEEE 802.1x, che garantisce una robusta autenticazione e uno sofisticato controllo degli accessi, lavora in layer 2 ed era stato pensato per fornire autenticazione port-based su reti cablate switched. L'access point nelle wlan prende il posto dello switch nelle reti wireless. Ovviamente su reti cablate non c'era bisogno di crittazione/autenticazioni così sicure e stringenti in quanto per intercettare i dati c'è bisongo di un qualche accesso al media fisico: Tutto diverso invece nelle reti wi-fi dove devi garantire riservatezza nella trasmissione e certezza d' identità nell'autenticazione per utilizzare le risorse di rete.

Lo standard 802.1x si basa sul IETF's Extensible Authentication Protocol (EAP).

EAP è un framework di autenticazione, non è un protocollo vero e proprio ma definisce solo il formato dei messaggi da scambiarsi per effettuare l'autenticazione. Ciascun protocollo che mi va ad usare EAP deve definire un metodo di incapsulamento di questi messaggi.
EAP inoltre definisce un set standard di funzioni e di metodi per la negoziazione dell'autenticazione chiamati EAP methods. Ce ne sono tantissimi definiti dall' IEFT e ciascun vendor poi può proporne di nuovi. Ciascuno di questi metodi ha i suoi pregi ed i suoi difetti. Da qui in avanti userò le parole eap_methods o eap_types come sinonimi

Solo 5 di questi metodi eap sono standard certificati per funzionare con WPA/WPA2: In origine ce ne era solo 1 (EAP_TLS)

  • EAP-TLS (il primo protocollo certificato)
  • EAP-TTLS/MSCHAPv2
  • PEAPv0/EAP-MSCHAPv2
  • PEAPv1/EAP-GTC (Cisco)
  • EAP-SIM (GSM per l'autentica delle SIM cards)

I più comuni utilizzati nelle reti wireless sono quelli basati su TLS. Su reti cablate puoi anche permetterti metodi tipo EAP_MD5 che non va a creare un tunnel criptato.

Questi metodi basati su tsl, sia che si usi utente/password con PEAP o certificati client side con EAP_TLS, richiedono un certificato nell'authentication server. Il server presenta un certificato al supplicante (il client), il supplicante verifica la validità del certificato e sa di comunicare con un access point certificato.

Questi i 3 protocolli più comunemente usati basati su TLS e certificati per lo standard WPA/WPA2

  • EAP-Transport Layer Security (EAP-TLS)
    Metodi di autenticazione: Certificato del client
    In sostanza si stabilisce una sessione TLS al di sopra di EAP e si verifica poi l'identità di server e client (tramite certificato sia di server che di client firmati dalla stessa ca e quindi c'è una mutua autenticazione)
  • Protected EAP (PEAP) (EAP_PEAP)
    Metodi di autenticazione: CHAP, PAP, MS-CHAP MS-CHAPv2
    2 fase, 1- si stabilisce una sessione TLS fra client e server 2- Scambio di credenziali usando il metodo di autentica scelto
    In sostanza anche qui si stabilisce una sessione TLS al di sopra di EAP ma poi si usa la sessione TLS (gia protetta) per autenticare tramite altri metodi legacy(CHAP,PAP,MSCHAP etc)
  • Tunneled Transport Layer Security (TTLS) (EAP_TTLS)
    Metodi di autenticazione: Scambio della coppia "attributo/valore", oppure CHAP, PAP, MS-CHAP MS-CHAPv2 etc..
    2 fasi. 1- si stabilisce una sessione TLS fra client e server 2- Scambio della coppia "attributo/valore" fra client e server
    Come PEAP ma, al posto di incapsulare i messagi EAP in TLS,  il payload dei messaggi EAP_TTLS consiste in una serie di attributi, che possono essere una CHAP-Password, PAP-Password etc  e quindi fornire gli stessi metodi legacy visti prima

Vediamo in maniera schematica come un client si collega a una rete WPA2-Enterprise con un metodo eap basato su tls

1 - Un client prova a connettersi alla WLAN
2 - Il client manda un richiesta all'access point che la gira al server RADIUS che la può girare al db degli utenti. Questa richiesta può partire in forma anonima mandando una identità anonima in cleartext
3 - Il server radius risponde “Bene, qualcuno vuole connettersi alla mia rete wireless”
4 - Viene creato un tunnel TLS
5- Nel tunnel TLS il client manda user e password (o un certificato o quello che vuoi).
6- Radius gestisce la fase AAA (Authentication, Authorization Accounting)
7- Se l'utente passa l'autenticazione il tunnel TLS viene distrutto e le chiavi vengono utilizzate per creare il canale criptato (AES nel caso di WPA2)
Questo processo può variare anche di molto in quanto ci possono essere molte modalità diverse di autentica tutte permesse dal protocollo che WPA2-enterprise utilizza.
Quindi sia PEAP che TTLS in fase 1 stabiliscono un canale sicuro e, tramite certificato, il server si presenta al client (o, detto in altro modo, il protocollo autentica il server di autenticazione al client con un certificato). In fase 2, una volta stabilito il canale le credenziali di autenticazioni del client vengono scambiate col server

In sostanza, l'autenticazione 802.1x/EAP prova a verificare l'identità del client/utente e autentica sulla base delle credenziali utilizzando EAP come “linguaggio” per comunicare tra client e radius. Sia che il linguaggio sia EAP-TLS, EAP_PEAP (MSCHAPV2), EAP-FAST, EAP-TTLS etc, fino a che il client e radius si intendono, il processo di autenticazione può continuare.
Come nota a margine il Wireless LAN Controller (l'access-point di solito) non si preoccupa di quale linguaggio viene parlato ma si limita a girare i pacchetti fra il client e il serve radius.

Identità anonime (Anonumous Identity)
A volte sul client quando setti EAP_TTLS o EAP_PEAP ti troverai questa voce da settare. Praticamente stai configurando l'identità con la quale il client si associa nelle primissime fasi al server che, per riservatezza è anonima. L'utilità potrebbe essere che, se fornisci una cosa del tipo anonymous@reame1 il server può subito capire che vuoi i servizi associati a reame1 e si comporta di conseguenza. Forse serve quando abbiamo un proxy radius smista le richieste su vari server radius per vari domini (reami).

Qualche nota su PEAP

PEAPv0/EAP-MSCHAPv2 (pronunciato “peep”) è la forma più comune di PEAP in uso e viene comunemente chiamata semplicemente peap. Dopo la EAP-TLS è il secondo standard pù supportato

Il protocollo PEAP (Protected Extensible Authentication Protocol) è un membro della famiglia di protocolli EAP (Extensible Authentication Protocol). Spesso si parla di peap come protocollo a se stante e non come metodo eap: In ogni caso incapsula l'eap con un tunnel tls criptato e autenticato.

MS-CHAP significa Microsoft Challenge Handshake Authentication Protocol.

Il protocollo è più semplice da distribuire rispetto a EAP-TLS, poiché l'autenticazione utente viene eseguita con credenziali basate su password, ovvero nome utente e password, anziché con certificati o smart card.

Il processo di autenticazione PEAP tra client e autenticatore PEAP è costituito da due fasi. La prima consiste nell'impostazione di un canale sicuro tra il client PEAP e il server di autenticazione, la seconda nell'autenticazione EAP tra il client e l'autenticatore EAP.

Nella fase 1 il client autentica il server e usa un TLS handshake per creare un tunnel crittato.

Nella fase 2 il server autentica l'utente (o le credenziali della macchina) utilizzando un protocollo di autenticazione eap. L'autenticazione eap è protetta dal tunnel crittato creato in fase 1. Il tipo di autentica è negoziato durante la fase 2 e può essere ciascun metodo valido, come GTC (Generic Token Card) oppure MS-CHAPv2 o gli altri prima menzionati.

PEAP è frutto degli sforzi di Microsoft e Cisco ed è stato pensato da microsoft con in testa la modalità di login su un dominio windows.

Qualche nota sull'esperienza personale di PEAP (ma anche di EAP_TTLS)

In teoria il certificato del server è obbligatorio, però nella pratica si può configurare una rete wi-fi con WPA2-Enterprise e non utilizzare il certificato del server. Così facendo devi configurare il client in modo che non utilizzi una ca per verificare il certificato del server (che non c'è). Alcuni client si lamenteranno un po' (o anche no, vedi android che non dice nulla) e poi, se fornisci le credenziali buone, tutto funzionerà comunque.

Questo però implica un problema di sicurezza in quanto un malintenzionato potrebbe spacciarsi per un access point con il medesimo SSID di cui ti fidi. Poi ti manda la sua chiave pubblica e, visto che te  non verifichi la firma, userai la sua chiave pubblica per crittare le credenziali (utente e password) che gli mandi. Fatto questo semplicemente ridireziona il traffico al vero access point e poi legge le tue credenziali, che tu credi crittate, (e potenzialmente tutto il traffico) utilizzando la sua chiave privata.

 

Ora dette queste amenità prendiamo un client - un access point/rounter - un server su cui installare radius

In modalità enterprise con 802.1x  ti serve un NAS  (Network Access Server)  che fornisce l'accesso alla rete (di solito l'access-point/router) un server  che implementa AAA, ovvero Autentication, Autorization Accounting, tipo RADIUS  e opzionalmente un database di utenti (tipo ldap) da cui pescare le login.

Sull'access point, che funge da authenticator in questo caso, selezioniamo wpa2-enterprise, tkip/aes, indirizzo ip del server radius. L'access point è chiamato NAS (o RAS) e parla col server radius usando il protocollo RADIUS.

ddwrt-security

 

Quindi la macchina utente manda una richiesta al NAS (RAS) per avere accesso alla rete inviandogli le credenziali. Le credenziali vengono passate al RAS (Authenticator) utilizzando 802.1x/EAP,  protocollo a livello link-layer  (in altri contesti si potrebbe usare anche PPP). Fatto questo il RAS forwarda questi messaggi inserendoli nel protocollo RADIUS verso il server RADIUS. Questa richiesta (RADIUS Access Request message) include le credenziali di accesso che possono appunto essere utente/password o certificato.

Il server radius cerca di capire che schema eap sta richiedendo il client, nel caso guarda nel db locale per autenticare le credenziali (o guarda su un db remoto tipo ldap/sql) e risponde permettendo o meno l'autentica.

Print Friendly, PDF & Email