
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.crtldap-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.
