In questo articolo ti spiego come ho implementato un server FreeRADIUS per autenticare gli utenti tramite LDAP di Google Workspace nella mia scuola. La soluzione funziona perfettamente sia con access point Ruckus che UniFi, e copre entrambe le sedi dell’istituto.
Il server FreeRADIUS è centralizzato in una sede principale, mentre l’altra sede si collega tramite VPN per usufruire dell’autenticazione centralizzata, garantendo così una gestione semplice e sicura degli accessi Wi-Fi su tutta la rete scolastica.
Ti guiderò passo passo nella configurazione del server, dall’installazione alla messa a punto, con tutti i dettagli necessari per replicare questo setup in ambienti simili.
Per realizzare l’integrazione ho seguito questa utilissima e completa guida per la quale ringrazio l’autore, Dario Zucchini.
Pannello Amministrazione Google
https://admin.google.com → CERCA LA VOCE LDAP → AGGIUNGI client LDAP e seguire la procedura guidata, successivamente generare e annotarsi le credenziali. Quelle attuali sono:
- Nome utente: utente_copiato
- Key: key_copiata
Scaricare i certificati generati.
Successivamente, sempre da queste impostazioni, si potranno gestire le unità organizzative ed i gruppi abilitati al Wi-Fi. Ma solo dopo aver concluso le installazioni e un primo periodo di test.
Installazione server radius:
sudo -s
apt update && apt upgrade
apt -y install freeradius freeradius-ldap freeradius-utils
apt install ldap-utils
reboot
Ora verifichiamo la versione che è stata installata:
cd /etc/freeradius/
ls
Copiamo i certificati di Google
Copiamo i certificati scaricati dal pannello di amministrazione di Google Workspace nella cartella /etc/freeradius/3.0/certs/
rinominandoli in ldap-client.crt
e ldap-client.key
.
4. Verifica connessione LDAP Google
Verifichiamo da terminale se il nostro server riesce a parlare con LDAP di Google con questa riga di comando (da copiare e inserire tutta):
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=rosabianca,dc=tn,dc=it" "([email protected])"
Se il sistema ci risponde con informazioni tipo queste:
# search result
search: 3
result: 0 Success
# numResponses: 1
la comunicazione con Google è OK e possiamo proseguire. Se invece ci dice che non riesce a contattare il server LDAP controlliamo il firewall (aprire in uscita la porta 636) e i certificati.
5. Configurazione
Modifichiamo il file /etc/freeradius/3.0/clients.conf
aprendolo direttamente con WinSCP, o se preferite da terminale con:
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 = vostrasecretimpostta
}
Ora modifichiamo questi due file:
/etc/freeradius/3.0/sites-enabled/default
/etc/freeradius/3.0/sites-enabled/inner-tunnel
Direttamente con WinSCP o da terminale con:
nano /etc/freeradius/3.0/sites-enabled/default
nano /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 commento a ldap:
# Auth-Type LDAP {
ldap
# }
Ricordarsi di farlo su entrambi i file!
Modifichiamo questo file /etc/freeradius/3.0/mods-enabled/ldap
aprendolo con WinSCP, o da sterminale con:
nano /etc/freeradius/3.0/mods-enabled/ldap
Nel file cerchiamo queste righe, le scommentiamo se serve e aggiorniamo le informazioni:
server = 'ldap://ldap.google.com'
port = 636
identity = 'utente_copiato'
password = 'key_copiata'
base_dn = 'dc=rosabianca, dc=tn, 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'
Modifichiamo /etc/freeradius/3.0/mods-enabled/eap
Nella sezione eap
:
default_eap_type = ttls
Nella sezione ttls
:
default_eap_type = gtc
Infine modifichiamo /etc/freeradius/3.0/proxy.conf
max_connections = 0
Alla fine del file aggiungere:
realm rosabianca.tn.it {
}
Ora riavviamo e vediamo se riparte:
sudo systemctl restart freeradius.service
Per controllare eventuali errori:
journalctl -xe
Controlliamo se il nostro radius funziona:
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.
6. Certificati
Modifichiamo il file /etc/freeradius/3.0/certs/ca.cnf
Nella sezione CA_default
incrementare il numero di giorni prima della scadenza, es 10 anni:
default_days = 3650
Nella sezione req
cambiare input_password
e output_password
con una password interna:
input_password = vostraPassword
output_password = vostraPassword
Nella sezione certificate_authority
mettere le info della scuola:
[certificate_authority]
countryName = IT
stateOrProvinceName = Trento
localityName = Cavalese
organizationName = II La Rosa Bianca
emailAddress = [email protected]
commonName = "Certificato Wifi Rosabianca"
Ora modifichiamo anche il file server con la stessa procedura: /etc/freeradius/3.0/certs/server.cnf
input_password = vostraPassword
output_password = vostraPassword
[server]
countryName = IT stateOrProvinceName = tuaProvincia localityName = TuaCittà organizationName =NomeScuola emailAddress = [email protected] commonName = “Certificato Wifi RosaBianca”
Generiamo 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/*
Aggiungiamo i certificati nel file di configurazione: /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
Riavviamo il server radius:
systemctl restart freeradius