
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
