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.