Autenticazione · 6 min read · Dec 28, 2025

Configurare SSH per utilizzare Freeradius e WiKID per l'autenticazione a due fattori

Configurare SSH per utilizzare Freeradius e WiKID per l’autenticazione a due fattori

Radius è un ottimo standard. È abbastanza potente da realizzare molto e abbastanza semplice da gestire. Freeradius è un eccellente server radius open source che viene fornito con molte varianti di Linux. È ben documentato e ben supportato. Il server di autenticazione forte WiKID è un sistema commerciale/open source di autenticazione a due fattori che utilizza la crittografia a chiave pubblica per trasmettere PIN e codici di accesso usa e getta in modo sicuro a token software in esecuzione su Blackberries, telefoni cellulari, Palms, PocketPC o, utilizzando il client J2SE, Linux, Mac e PC Windows. Puoi pensare a WiKID come ai certificati, ma senza i problemi delle liste bianche/nere e più sicuro - perché il PIN è convalidato sul server, prevenendo attacchi di forza bruta offline.

Le aziende che devono soddisfare requisiti, come PCI-DSS o HIPAA, potrebbero dover proteggere le proprie reti con autenticazione a due fattori e accesso strettamente controllato. Combinare Freeradius e WiKID è un modo altamente conveniente per raggiungere questo obiettivo.

In questo esempio, installerò Freeradius su Fedora Core 7 e utilizzerò i pacchetti 3.0RC2 di WiKID su Centos5 (tuttavia, le stesse istruzioni funzioneranno per la versione 2.0 di WiKID.) Testeremo con SSH, tuttavia, la stessa configurazione dovrebbe funzionare per Apache, WebDAV, OpenVPN e qualsiasi altra applicazione che supporti PAM.

Installazione e configurazione di Freeradius

Non importa quale variante di Linux stai utilizzando, probabilmente esiste un pacchetto per Freeradius. Per Fedora, l’installazione tramite Yum è semplice:

yum install freeradius

Configurare Freeradius è abbastanza semplice. Ci sono molte opzioni, però. La chiave è cambiare solo gli elementi minimi che comprendi. Le impostazioni predefinite funzionano, quindi apporta piccole modifiche e testale. Modificheremo tre file. Il file /etc/raddb/clients.conf indica a Freeradius quali client accettare. Il file proxy.conf indica a Freeradius di inviare i pacchetti di autenticazione al server WiKID e il file radiusd.conf configura il server Freeradius principale.

Per prima cosa, modifica il file /etc/raddb/clients.conf:

vi /etc/raddb/clients.conf

client 127.0.0.1 {
        secret          = shared_secret
        shortname       = localhost
        nastype     = other
}

Tutto ciò che devi cambiare per ora è il segreto condiviso poiché accederemo al server Freeradius tramite SSH come nostro test.

Successivamente, verifica che le richieste possano essere proxy nel file radiusd.conf. Questo era il caso su Fedora:

vi /etc/raddb/radiusd.conf

proxy_requests  = yes
$INCLUDE  ${confdir}/proxy.conf

Infine, aggiungi il server di autenticazione forte WiKID come proxy valido in proxy.conf:

vi /etc/raddb/proxy.conf

#  Questo dominio è per richieste che non hanno un prefisso o suffisso esplicito.
#  I nomi utente come "bob" corrisponderanno a questo.
#
realm NULL {
        type            = radius
        authhost        = WIKIDSERVER_IP:1812
#       accthost        = WIKIDSERVER_IP:1813
        secret          = shared_secret
}

Non è necessario dire, cambia WIKIDSERVER_IP e shared_secret con l’IP del tuo server WiKID e il segreto condiviso. Probabilmente dovrebbe essere diverso dal segreto condiviso utilizzato per il client.

Per ulteriore sicurezza, dovresti limitare la proprietà di questi file:

chmod a-rwx,u+r /etc/raddb/proxy.conf

chmod a-rwx,u+r /etc/raddb/clients.conf

Ora avvia Freeradius:

service radiusd start

Configurazione PAM SSH

Per prima cosa, devi installare PAM Radius. Ci sono ottime documentazioni su questo nella home page di PAM Radius. A seconda della tua distribuzione, potresti anche essere in grado di trovare un binario adatto. Non ho avuto problemi a compilarlo su Fedora 7:

Modifica /etc/pam.d/sshd per consentire l’autenticazione Radius:

vi /etc/pam.d/sshd

Vai alla seconda riga del file, premi il tasto Inserisci o il tasto i e inserisci questa riga:

auth     sufficient   /lib/security/pam_radius_auth.so 

proprio sopra questa riga:

auth     required     pam_stack.so service=system-auth

Il tag “sufficient” indica che se l’autenticazione Radius ha successo, non sarà necessaria ulteriore autenticazione. Tuttavia, se l’autenticazione Radius fallisce, funzionerà un nome utente e una password dal sistema. Usa “Required” per richiedere un’autenticazione forte. Poiché stiamo modificando solo il file sshd, non influenzerà i log-in del terminale. PAM può essere molto diverso su diverse varianti di Linux. Consulta la documentazione specifica per il tuo sistema operativo.

Modifica o crea il tuo file /etc/raddb/server:

vi /etc/raddb/server

Sotto la riga:

127.0.0.1   secret        1

Aggiungi questa riga:

localhost   shared_secret     1

Infine, ho assicurato che l’autenticazione PublicKey fosse disattivata in /etc/sshd/sshd_config:

PubkeyAuthentication no

Configurazione del server WiKID

Ora, configureremo il server WiKID per elaborare le password usa e getta da Freeradius. Supponiamo che tu debba anche impostare un nuovo dominio WiKID. Se ne hai già uno, puoi saltare questa parte. Ulteriore documentazione sull’installazione di WiKID è disponibile qui.

Accedi al server WiKID e fai clic sulla scheda Domini.

Fai clic su Crea un nuovo dominio.

Inserisci le informazioni richieste. Il codice del server di dominio è l’indirizzo IP del server WiKID con zeri iniziali. Quindi, se l’indirizzo IP esterno è 216.239.51.99, il codice del server WiKID sarebbe 216239051099. Fai clic su “Crea”. (Ovviamente, se hai già un dominio configurato, puoi saltare questo passaggio.)

Fai clic sulla scheda Client di rete e su “Crea un nuovo client di rete”.

Inserisci le informazioni richieste. Per l’indirizzo IP, utilizza l’indirizzo IP del server Freeradius. Seleziona Radius e il dominio che hai appena creato. Fai clic su “Aggiungi” quando hai finito.

Nella pagina successiva, inserisci il segreto condiviso che hai inserito nel file /etc/raddb/proxy.conf del server Freeradius. Non è necessario inserire alcuna informazione sotto “Attributi di ritorno”.

Importante: Dalla terminale WiKID o tramite SSH, dovrai eseguire “wikidctl stop” e poi “wikidcl start” per caricare la nuova configurazione nel server Radius WiKID. (Gli utenti di WiKID 2.0 devono solo eseguire “stop” e “start”.)

Testare Freeradius con password usa e getta

Scarica e installa un client token WiKID. Puoi convalidarti manualmente come utente dall’interfaccia web di WiKIDAdmin. Una volta convalidato, seleziona il dominio associato alla risorsa Freeradius:

token1.jpg

Inserisci il PIN:

token2.jpg

E riceverai indietro il codice di accesso usa e getta. L’OTP è limitato nel tempo, ma il tempo può essere impostato sul server WiKID come desideri:

token3.jpg

Ora, ssh nel tuo server Freeradius:

ssh user@freeradius_server

Quando richiesto, inserisci la password usa e getta WiKID - dovrebbe essere stata automaticamente copiata negli appunti, quindi ctrl-c o shift-ins dovrebbero funzionare. Dovresti ottenere accesso. Se non lo fai, ci sono diversi log da consultare. Prima di tutto, controlla /var/log/secure sul tuo server Freeradius per vedere perché l’utente è stato rifiutato. Se vedi “Tutti i server RADIUS hanno fallito nel rispondere.” assicurati che radiusd sia in esecuzione sulla porta 1812. Controlla i log di Freeradius in /var/log/radius/radius.log e il log radius di WiKID in /opt/WiKID/log/radius.log sul server WiKID.

Una configurazione alternativa: Freeradius come backup

Uno dei vantaggi dell’utilizzo di PAM Radius è che i server possono essere concatenati nel file /etc/raddb/server. Se i server principali non rispondono, il server successivo proverà ad autenticare l’utente. Per chiarire: se il primo server risponde con un errore di autenticazione, l’utente viene rifiutato. Solo se non c’è risposta verrà controllato il secondo server radius. Questa capacità di backup può essere particolarmente utile se il tuo server WiKID si trova in un datacenter remoto. Configurando PAM per comunicare direttamente con WiKID e tornando a Freeradius, crei una soluzione di failover in caso di guasto hardware.

Per prima cosa, modifica il file /etc/raddb/server per puntare prima al server WiKID, poi al server Freeradius in esecuzione su localhost:

# server[:port] shared_secret      timeout (s)
127.0.0.1:1812        shared_secret        1
WIKIDSERVER_IP:1812   shared_secret      3
localhost:1812        shared_secret          2

Ho dovuto apportare alcune piccole modifiche per far funzionare Freeradius con /etc/passwd. Prima di tutto, ho dovuto cambiare il gruppo di radiusd in /etc/raddb/radiusd.conf in shadow:

user = radiusd
group = shadow

Poi ho dovuto dare permessi shadow per /etc/passwd:

chgrp shadow /etc/shadow

chmod g+r /etc/shadow

Ora, se il server WiKID fallisce per qualche motivo, hai un fallback automatico al tuo file /etc/passwd.

Conclusione

Radius è un eccellente standard per l’autenticazione degli utenti remoti. Combinare Freeradius con WiKID Strong Authentication crea una soluzione potente, flessibile e sicura.

Share: X/Twitter LinkedIn

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.