← Torna al Blog

Autenticazione alla rete WiFi utilizzando Google LDAP

In questo articolo descrivo come ho configurato un server FreeRADIUS per l’autenticazione Wi-Fi tramite LDAP di Google Workspace nella mia scuola. La soluzione supporta access point Ruckus e UniFi in due sedi collegate via VPN, garantendo un accesso centralizzato e sicuro alla rete wireless.

Come ho implementato un server centralizzato Ubuntu-FreeRADIUS per permettere agli utenti di autenticarsi alla rete WIFi scolastica utilizzando le stesse credenziali del proprio indirizzo e-mail

Pannello Amministrazione Google

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

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=vostrodominio,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=vostrodominio, 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 vostrodominio {
}

Ora riavviamo e vediamo se riparte:

sudo systemctl restart freeradius.service

Per controllare eventuali errori:

journalctl -xe

Controlliamo se il nostro radius funziona:

radtest utente@vostrodominio 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   = Provincia
localityName          = Localtà
organizationName      = Nome Orgaizzazione
emailAddress          = unamaildiassistenza
commonName            = "Nome che si vuole fa apparire"

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

Altri articoli del Blog

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