{"id":107,"date":"2025-05-23T10:21:10","date_gmt":"2025-05-23T08:21:10","guid":{"rendered":"https:\/\/lorzeni.site\/?p=107"},"modified":"2026-05-08T20:32:57","modified_gmt":"2026-05-08T18:32:57","slug":"installare-un-server-freeradius-su-ubuntu-per-permettere-agli-utenti-di-autenticarsi-tramite-google-ldap","status":"publish","type":"post","link":"https:\/\/lorzeni.site\/index.php\/2025\/05\/23\/installare-un-server-freeradius-su-ubuntu-per-permettere-agli-utenti-di-autenticarsi-tramite-google-ldap\/","title":{"rendered":"Installare un server Freeradius su Ubuntu per permettere agli utenti di autenticarsi tramite Google LDAP"},"content":{"rendered":"\n<p class=\"is-style-default\">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\u2019istituto.<\/p>\n\n\n\n<p>Il server FreeRADIUS \u00e8 centralizzato in una sede principale, mentre l\u2019altra sede si collega tramite VPN per usufruire dell\u2019autenticazione centralizzata, garantendo cos\u00ec una gestione semplice e sicura degli accessi Wi-Fi su tutta la rete scolastica.<\/p>\n\n\n\n<p>Ti guider\u00f2 passo passo nella configurazione del server, dall\u2019installazione alla messa a punto, con tutti i dettagli necessari per replicare questo setup in ambienti simili.<\/p>\n\n\n\n<p>Per realizzare l&#8217;integrazione ho seguito <a href=\"https:\/\/www.associazionedschola.it\/blog\/2023\/02\/10\/wireless-con-google-classroom\/\" data-type=\"link\" data-id=\"https:\/\/www.associazionedschola.it\/blog\/2023\/02\/10\/wireless-con-google-classroom\/\">questa utilissima e completa guida<\/a> per la quale ringrazio l&#8217;autore, Dario Zucchini. <\/p>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Pannello Amministrazione Google<\/h2>\n\n\n\n<p><a href=\"https:\/\/admin.google.com\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/admin.google.com<\/a> \u2192 CERCA LA VOCE <strong>LDAP<\/strong> \u2192 AGGIUNGI client LDAP e seguire la procedura guidata, successivamente generare e annotarsi le credenziali. Quelle attuali sono:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Nome utente:<\/strong> utente_copiato<\/li>\n\n\n\n<li><strong>Key:<\/strong> key_copiata<\/li>\n<\/ul>\n\n\n\n<p>Scaricare i certificati generati.<\/p>\n\n\n\n<p>Successivamente, sempre da queste impostazioni, si potranno gestire le unit\u00e0 organizzative ed i gruppi abilitati al Wi-Fi. Ma solo dopo aver concluso le installazioni e un primo periodo di test.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Installazione server radius:<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo -s\napt update &amp;&amp; apt upgrade\napt -y install freeradius freeradius-ldap freeradius-utils\napt install ldap-utils\nreboot\n<\/code><\/pre>\n\n\n\n<p>Ora verifichiamo la versione che \u00e8 stata installata:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cd \/etc\/freeradius\/\nls\n<\/code><\/pre>\n\n\n\n<p><strong>Copiamo i certificati di Google<\/strong><\/p>\n\n\n\n<p>Copiamo i certificati scaricati dal pannello di amministrazione di Google Workspace nella cartella <code>\/etc\/freeradius\/3.0\/certs\/<\/code> rinominandoli in <code>ldap-client.crt<\/code> e <code>ldap-client.key<\/code>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">4. Verifica connessione LDAP Google<\/h3>\n\n\n\n<p>Verifichiamo da terminale se il nostro server riesce a parlare con LDAP di Google con questa riga di comando (da copiare e inserire tutta):<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>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=utenteesistente@vostrodominio.tn.it)\"\n<\/code><\/pre>\n\n\n\n<p>Se il sistema ci risponde con informazioni tipo queste:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># search result\nsearch: 3\nresult: 0 Success\n# numResponses: 1\n<\/code><\/pre>\n\n\n\n<p>la comunicazione con Google \u00e8 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.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">5. Configurazione<\/h3>\n\n\n\n<p>Modifichiamo il file <code>\/etc\/freeradius\/3.0\/clients.conf<\/code> aprendolo direttamente con WinSCP, o se preferite da terminale con:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>nano \/etc\/freeradius\/3.0\/clients.conf\n<\/code><\/pre>\n\n\n\n<p>Alla fine del file inserire:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>client unifi {\n    ipaddr = vostro ip\/subnet (es. 192.168.15.0\/24)\n    secret = vostrasecretimpostta\n}\n<\/code><\/pre>\n\n\n\n<p>Ora modifichiamo questi due file:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>\/etc\/freeradius\/3.0\/sites-enabled\/default<\/code><\/li>\n\n\n\n<li><code>\/etc\/freeradius\/3.0\/sites-enabled\/inner-tunnel<\/code><\/li>\n<\/ul>\n\n\n\n<p>Direttamente con WinSCP o da terminale con:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>nano \/etc\/freeradius\/3.0\/sites-enabled\/default\nnano \/etc\/freeradius\/3.0\/sites-enabled\/inner-tunnel\n<\/code><\/pre>\n\n\n\n<p>Nella sezione <code>authorize<\/code> di ogni file, dopo <code>pap<\/code>, aggiungere:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>if (User-Password) {\n    update control {\n        Auth-Type := ldap\n    }\n}\n<\/code><\/pre>\n\n\n\n<p>Nella sezione <code>authenticate<\/code> correggere cos\u00ec:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>authenticate {\n    Auth-Type PAP {\n        ldap\n    }\n}\n<\/code><\/pre>\n\n\n\n<p>Togliere commento a ldap:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Auth-Type LDAP {\n    ldap\n# }\n<\/code><\/pre>\n\n\n\n<p>Ricordarsi di farlo su entrambi i file!<\/p>\n\n\n\n<p>Modifichiamo questo file <code>\/etc\/freeradius\/3.0\/mods-enabled\/ldap<\/code> aprendolo con WinSCP, o da sterminale con:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>nano \/etc\/freeradius\/3.0\/mods-enabled\/ldap\n<\/code><\/pre>\n\n\n\n<p>Nel file cerchiamo queste righe, le scommentiamo se serve e aggiorniamo le informazioni:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>server = 'ldap:\/\/ldap.google.com'\nport = 636\nidentity = 'utente_copiato'\npassword = 'key_copiata'\nbase_dn = 'dc=vostrodominio, dc=tn, dc=it'\n\n# nella sezione TLS:\nstart_tls = no\ncertificate_file = \/etc\/freeradius\/3.0\/certs\/ldap-client.crt\nprivate_key_file = \/etc\/freeradius\/3.0\/certs\/ldap-client.key\nrequire_cert = 'allow'\n<\/code><\/pre>\n\n\n\n<p>Modifichiamo <code>\/etc\/freeradius\/3.0\/mods-enabled\/eap<\/code><\/p>\n\n\n\n<p>Nella sezione <code>eap<\/code>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>default_eap_type = ttls\n<\/code><\/pre>\n\n\n\n<p>Nella sezione <code>ttls<\/code>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>default_eap_type = gtc\n<\/code><\/pre>\n\n\n\n<p>Infine modifichiamo <code>\/etc\/freeradius\/3.0\/proxy.conf<\/code><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>max_connections = 0\n<\/code><\/pre>\n\n\n\n<p>Alla fine del file aggiungere:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>realm vostrodominio {\n}\n<\/code><\/pre>\n\n\n\n<p>Ora riavviamo e vediamo se riparte:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo systemctl restart freeradius.service\n<\/code><\/pre>\n\n\n\n<p>Per controllare eventuali errori:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>journalctl -xe\n<\/code><\/pre>\n\n\n\n<p>Controlliamo se il nostro radius funziona:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>radtest utente@vostrodominio fakepwd &#91;ip_server_radius] 1645 vostraPassword\n<\/code><\/pre>\n\n\n\n<p>Se risponde qualcosa tipo <em>Expected Access-Accept got Access-Reject<\/em> vuol dire che sta funzionando, il rifiuto deriva dal fatto che la password <code>fakepwd<\/code> \u00e8 volutamente sbagliata e comunque non crittografata.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">6. Certificati<\/h3>\n\n\n\n<p>Modifichiamo il file <code>\/etc\/freeradius\/3.0\/certs\/ca.cnf<\/code><\/p>\n\n\n\n<p>Nella sezione <code>CA_default<\/code> incrementare il numero di giorni prima della scadenza, es 10 anni:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>default_days = 3650\n<\/code><\/pre>\n\n\n\n<p>Nella sezione <code>req<\/code> cambiare <code>input_password<\/code> e <code>output_password<\/code> con una password interna:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>input_password    = vostraPassword\noutput_password   = vostraPassword\n<\/code><\/pre>\n\n\n\n<p>Nella sezione <code>certificate_authority<\/code> mettere le info della scuola:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;certificate_authority]\ncountryName           = IT\nstateOrProvinceName   = Provincia\nlocalityName          = Localt\u00e0\norganizationName      = Nome Orgaizzazione\nemailAddress          = unamaildiassistenza\ncommonName            = \"Nome che si vuole fa apparire\"\n<\/code><\/pre>\n\n\n\n<p>Ora modifichiamo anche il file server con la stessa procedura: <code>\/etc\/freeradius\/3.0\/certs\/server.cnf<\/code><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>input_password    = vostraPassword\noutput_password   = vostraPassword<\/code><\/pre>\n\n\n<p>[server]<\/p>\n\n\n\n<p>countryName = IT stateOrProvinceName = tuaProvincia localityName = TuaCitt\u00e0 organizationName =NomeScuola emailAddress = tecnici@rosabianca.tn.it commonName = &#8220;Certificato Wifi RosaBianca&#8221;<\/p>\n\n\n\n<p>Generiamo i certificati:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo -s\ncd \/etc\/freeradius\/3.0\/certs\/\nmake ca.pem\nmake ca.der\nmake server.pem\nchown freerad:freerad \/etc\/freeradius\/3.0\/certs\/*\n<\/code><\/pre>\n\n\n\n<p>Aggiungiamo i certificati nel file di configurazione: <code>\/etc\/freeradius\/3.0\/mods-enabled\/eap<\/code><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>private_key_password = whateverwifi\nprivate_key_file = \/etc\/freeradius\/3.0\/certs\/server.pem\ncertificate_file = \/etc\/freeradius\/3.0\/certs\/server.pem\nca_file = \/etc\/freeradius\/3.0\/certs\/ca.pem\n<\/code><\/pre>\n\n\n\n<p>Riavviamo il server radius:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>systemctl restart freeradius\n<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>In questo articolo descrivo come ho configurato un server FreeRADIUS per l\u2019autenticazione 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.<\/p>\n","protected":false},"author":1,"featured_media":106,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[11],"tags":[13,17,16,12],"class_list":["post-107","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-google-ldap","tag-google","tag-ldap","tag-linux","tag-wifi"],"_links":{"self":[{"href":"https:\/\/lorzeni.site\/index.php\/wp-json\/wp\/v2\/posts\/107","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/lorzeni.site\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/lorzeni.site\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/lorzeni.site\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/lorzeni.site\/index.php\/wp-json\/wp\/v2\/comments?post=107"}],"version-history":[{"count":6,"href":"https:\/\/lorzeni.site\/index.php\/wp-json\/wp\/v2\/posts\/107\/revisions"}],"predecessor-version":[{"id":500,"href":"https:\/\/lorzeni.site\/index.php\/wp-json\/wp\/v2\/posts\/107\/revisions\/500"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/lorzeni.site\/index.php\/wp-json\/wp\/v2\/media\/106"}],"wp:attachment":[{"href":"https:\/\/lorzeni.site\/index.php\/wp-json\/wp\/v2\/media?parent=107"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/lorzeni.site\/index.php\/wp-json\/wp\/v2\/categories?post=107"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/lorzeni.site\/index.php\/wp-json\/wp\/v2\/tags?post=107"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}