← Torna al Blog

Autenticazione alla rete WiFi utilizzando Google LDAP

Come configurare l’autenticazione WiFi centralizzata con FreeRADIUS e Google Workspace LDAP. Guida passo-passo dall’installazione del server RADIUS alla securizzazione della rete scolastica.

Introduzione

Se vuoi che i tuoi utenti si connettano al WiFi usando le loro credenziali Google, senza gestire separatamente password WiFi diverse, questo articolo fa per te.

FreeRADIUS è un server RADIUS open source che gestisce l’autenticazione di rete. RADIUS (Remote Authentication Dial In User Service) è il protocollo standard che router, access point e switch usano per verificare chi si sta connettendo. Collegando FreeRADIUS a Google Workspace via LDAP, puoi: – Autenticazione unica: stessi username e password Google per WiFi, cloud e tutto il resto – Gestione centralizzata: crei/disattivi utenti da Google Admin, automaticamente propagato – Sicurezza: autenticazione enterprise-grade, crittografia TLS – Scalabilità: funziona per una scuola piccola o con 1500+ utenti Questo tutorial spiega come installare e configurare il tutto step-by-step.

Per realizzare l’integrazione ho seguito questa utilissima e completa guida per la quale ringrazio l’autore, Dario Zucchini.

Pannello Amministrazione Google

Accedere a https://admin.google.com e cercare la voce LDAP, quindi aggiungere un client LDAP seguendo la procedura guidata. Successivamente generare e annotarsi le credenziali.

Credenziali LDAP di esempio:

  • Nome utente: utente_copiato
  • Key: key_copiata

Scaricare anche i certificati generati. Successivamente, sempre da queste impostazioni, si potranno gestire le unità organizzative e i gruppi abilitati al Wi-Fi. Ma solo dopo aver concluso le installazioni e un primo periodo di test.

Installazione Server RADIUS

Eseguire i seguenti comandi per installare FreeRADIUS e le dipendenze necessarie:

sudo -s
apt update && apt upgrade
apt -y install freeradius freeradius-ldap freeradius-utils
apt install ldap-utils
reboot

Verificare la versione installata:

cd /etc/freeradius/
ls

Copia dei Certificati Google

Copiare i certificati scaricati dal pannello di amministrazione di Google Workspace nella cartella /etc/freeradius/3.0/certs/ rinominandoli in:

  • ldap-client.crt
  • ldap-client.key

Verifica Connessione LDAP Google

Verificare da terminale se il server riesce a comunicare con LDAP di Google:

LDAPTLS_CERT=/etc/freeradius/3.0/certs/ldap-client.crt LDAPTLS_KEY=/etc/freeradius/3.0/certs/ldap-client.key ldapsearch -H ldaps://ldap.google.com:636 -b "dc=vostrodominio,dc=tn,dc=it" "(mail=*@vostrodominio.it)"

Se il sistema risponde con informazioni simili a queste:

# search result
search: 3
result: 0 Success
# numResponses: 1

La comunicazione con Google è OK e si può proseguire. Se il sistema non riesce a contattare il server LDAP, controllare:

  • Il firewall (aprire in uscita la porta 636)
  • I certificati

Configurazione FreeRADIUS

File: clients.conf

Modificare il file /etc/freeradius/3.0/clients.conf con WinSCP o da terminale:

nano /etc/freeradius/3.0/clients.conf

Alla fine del file inserire:

client unifi {
    ipaddr = vostro ip/subnet (es. 192.168.15.0/24)
    secret = vostrasecretimpoststa
}

File: default e inner-tunnel

Modificare questi due file:

  • /etc/freeradius/3.0/sites-enabled/default
  • /etc/freeradius/3.0/sites-enabled/inner-tunnel

Nella sezione authorize di ogni file, dopo pap, aggiungere:

if (User-Password) {
    update control {
        Auth-Type := ldap
    }
}

Nella sezione authenticate correggere così:

authenticate {
    Auth-Type PAP {
        ldap
    }
}

Togliere il commento a ldap:

# Auth-Type LDAP {
    ldap
# }

Importante: ricordarsi di fare queste modifiche su entrambi i file!

File: ldap (mods-enabled)

Modificare il file /etc/freeradius/3.0/mods-enabled/ldap:

nano /etc/freeradius/3.0/mods-enabled/ldap

Cercare e aggiornare/scommentare queste righe:

server = 'ldap://ldap.google.com'
port = 636
identity = 'utente_copiato'
password = 'key_copiata'
base_dn = 'dc=vostrodominio, dc=it'

# nella sezione TLS:
start_tls = no
certificate_file = /etc/freeradius/3.0/certs/ldap-client.crt
private_key_file = /etc/freeradius/3.0/certs/ldap-client.key
require_cert = 'allow'

File: eap (mods-enabled)

Modificare il file /etc/freeradius/3.0/mods-enabled/eap

Nella sezione eap:

default_eap_type = ttls

Nella sezione ttls:

default_eap_type = gtc

File: proxy.conf

Modificare il file /etc/freeradius/3.0/proxy.conf:

max_connections = 0

Alla fine del file aggiungere:

realm vostrodominio {
}

Verifica e Test

Riavviare il servizio FreeRADIUS:

sudo systemctl restart freeradius.service

Controllare eventuali errori:

journalctl -xe

Testare il server RADIUS:

radtest [email protected] fakepwd [ip_server_radius] 1645 vostraPassword

Se risponde qualcosa tipo “Expected Access-Accept got Access-Reject”, vuol dire che sta funzionando. Il rifiuto deriva dal fatto che la password fakepwd è volutamente sbagliata e comunque non crittografata.

Generazione Certificati

Modificare il file /etc/freeradius/3.0/certs/ca.cnf

Nella sezione CA_default incrementare il numero di giorni prima della scadenza (ad es. 10 anni):

default_days = 3650

Nella sezione req cambiare input_password e output_password:

input_password    = vostraPassword
output_password   = vostraPassword

Nella sezione certificate_authority inserire le informazioni della scuola:

[certificate_authority]
countryName           = IT
stateOrProvinceName   = Provincia
localityName          = Località
organizationName      = Nome Organizzazione
emailAddress          = unamaildiassistenza
commonName            = "Nome che si vuole far apparire"

Configurazione Server Certificate

Modificare il file /etc/freeradius/3.0/certs/server.cnf con la stessa procedura:

input_password    = vostraPassword
output_password   = vostraPassword

[server]
countryName = IT
stateOrProvinceName = tuaProvincia
localityName = TuaCittà
organizationName = NomeScuola
emailAddress = [email protected]
commonName = "Certificato Wifi Miascuola"

Generazione Certificati

Generare i certificati:

sudo -s
cd /etc/freeradius/3.0/certs/
make ca.pem
make ca.der
make server.pem
chown freerad:freerad /etc/freeradius/3.0/certs/*

Aggiungere i certificati nel file di configurazione EAP (/etc/freeradius/3.0/mods-enabled/eap):

private_key_password = whateverwifi
private_key_file = /etc/freeradius/3.0/certs/server.pem
certificate_file = /etc/freeradius/3.0/certs/server.pem
ca_file = /etc/freeradius/3.0/certs/ca.pem

Riavviare il server RADIUS:

systemctl restart freeradius

Evoluzione: FreeRADIUS con Docker

Da quando è stato scritto questo articolo, ho deciso di spostare tutta la configurazione di FreeRADIUS su Docker, ospitato su un server Ubuntu dove coesistono altri container come NGINX, DaloRadius e Portainer. Questo approccio elimina lo spreco di risorse dovuto al provisioning di macchine virtuali dedicate. Se partite da zero e avete dimestichezza con Docker il consiglio è di utilizzare da subito questa soluzione.

Vantaggi della containerizzazione:

  • Efficienza risorse: Tutti i servizi su un’unica VM Ubuntu
  • Isolamento: Ogni servizio in un container indipendente
  • Portabilità: Container facilmente replicabili tra ambienti
  • Gestione centralizzata: Portainer fornisce dashboard per monitoraggio

Il server Ubuntu con Docker è installato su una delle due sedi collegate in VPN, garantendo continuità operativa e ridondanza.

Alternativa: FreeRADIUS su Cloud per Organizzazioni Multi-plesso

Per scuole o organizzazioni distribuite su più plessi senza collegamenti VPN dedicati, esiste un’alternativa valida: configurare FreeRADIUS su una macchina virtuale nel cloud. Google Cloud Platform mette a disposizione una macchina virtuale gratuita (con limiti di utilizzo) che ha risorse sufficienti per gestire l’autenticazione RADIUS di una scuola di medie dimensioni. L’alternativa, come consigliato anche nell’articolo linkato in introduzione, è acquistare una VPS a pochi euro al mese ed appoggiarsi a quella, con tutte le implicazioni in termini di sicurezza che ha lo scambio di credenziali dalla vostra sede ad una VPS online se non si implementa VPN Site-to-site ad hoc.

Scenario Cloud:

  • Host: VM gratuita Google Cloud (e2-micro o simile)
  • Sistema operativo: Linux (Ubuntu LTS consigliato)
  • Deployment: Docker o installazione diretta di FreeRADIUS
  • Vantaggi: Nessuna infrastruttura locale, accesso da qualsiasi sede via Internet
  • Considerazioni: Verificare la latenza di rete e la larghezza di banda, ma soprattutto la modalità di scambio delle credenziali tra la sede e la macchina in Cloud, anche in questo caso è fortemente consigliata l’implementazione di una VPN Site-To-Site tra sede e VM.

Questo approccio è ideale per organizzazioni senza server fisico on-premise o per chi vuole evitare investimenti in infrastruttura IT locale.

Tuttavia, per una questione di sicurezza e dato che il servizio Freeradius è molto leggero e una VPN (per esempio Wireguard) la si può implementare sostanzialmente senza spese o hardware costoso, personalmente valuterei bene se non sia il caso di utilizzare una vecchia macchina o un semplice Raspberry Pi on site prima di considerare soluzioni in cloud.

Da alcuni test effettuati non in produzione ho visto comunque che la soluzione funziona, e per qualcuno potrebbe essere la via migliore.

Altri articoli del Blog

Continua la lettura con le ultime novità e guide pubblicate.