Jacopo's Lair


Introduzione

Spesso si ha la necessità di proteggere rapidamente un server Web da accessi non autorizzati e la soluzione che si sceglie più frequentemente è la cosiddetta autenticazione Basic, con le password salvate in apposito file .htpasswd o similare.

Questa non è una soluzione ideale, da una parte perché il file potrebbe essere compromesso se non adeguatamente protetto/configurato; dall'altra perché è necessario creare una serie di utenti e di password che va poi mantenuta e tenuta aggiornata, altrimenti si crea un'altra password da ricordare con ovvi disagi per gli utenti e carico aggiuntivo per l'amministratore.

Potenziale soluzione

Molti dei contesti che necessitano l'utilizzo dell'autenticazione Basic hanno tuttavia già a disposizione un server RADIUS, magari adoperato per l'autenticazione centralizzata tramite 802.1x.

La soluzione più naturale che ci sia in tal caso è quella di utilizzare il server RADIUS per l'autenticazione sul server Web, in modo da centralizzare la gestione di utenti e password in un solo posto.

Configurazione

Prima di tutto sarà opportuno configurare il server RADIUS per consentire al server di comunicare correttamente. Su Zeroshell basterà andare in RADIUS → Authorized Clients e creare un nuovo Client scegliendo un segreto.

Recandosi quindi sul server da proteggere, sarà necessario installare o compilare il modulo auth_radius di Apache. Su Ubuntu, Debian e derivate si può installare con il pacchetto libapache2-mod-auth-radius.

Aprire quindi il file del Virtual Host da proteggere e inserire queste righe per abilitare e configurare l'autenticazione:

<IfModule radius_auth_module>
    AddRadiusAuth IP_RADIUS:1812 SEGRETO 5:3
    AddRadiusCookieValid 5 #minuti
</IfModule>

Inserire quindi in una direttiva Directory o Location a seconda di cosa si vuole proteggere queste linee:

AuthType Basic
AuthBasicProvider radius
AuthName "Autenticazione SSO RADIUS"
AuthBasicAuthoritative Off
AuthRadiusAuthoritative On
AuthRadiusActive On
AuthRadiusCookieValid 60 # minuti
require valid-user

Riavviare Apache e controllare il risultato, dovrebbe essere richiesta l'autenticazione e nei log del server RADIUS dovrebbe comparire la richiesta.