Guida alle tecnologie

Proteggere SSH su CentOS 7 con l'autenticazione a due fattori WiKID

7 min read Sicurezza Aggiornato 03 Oct 2025
Proteggere SSH su CentOS 7 con WiKID 2FA
Proteggere SSH su CentOS 7 con WiKID 2FA

Perché questo articolo

SSH è il canale principale per l’amministrazione remota dei server. Per soddisfare requisiti normativi (es. PCI-DSS) o di controllo interno, serve un controllo più rigoroso sull’autenticazione: gestione di chi può usare chiavi pubbliche, rotazione/expirazione delle chiavi e introduzione di due fattori. WiKID è una soluzione di autenticazione a due fattori che può essere usata con RADIUS per rafforzare SSH.

Sommario rapido

  • Installare pam_radius su CentOS 7
  • Configurare un dominio e client RADIUS su WiKID
  • Integrare pam_radius con PAM/SSH
  • Test, rollback e checklist per il deployment in produzione

Destinatari

  • Amministratori di sistema (Linux)
  • Ingegneri DevOps
  • Auditor e responsabili sicurezza

Prerequisiti

  • Server CentOS 7 aggiornato e accessibile
  • Server WiKID disponibile e raggiungibile dalla macchina CentOS
  • Privilegi root sul server CentOS
  • Conoscenza di base di PAM, SSH e RADIUS

Aggiungere un dominio al server WiKID

Schermata della console WiKID per aggiungere un dominio con campo Domain Server Code

Nota: il Domain Server Code deve essere l’indirizzo IP esterno con zeri a sinistra. Esempio: se l’IP è 54.83.0.181, il codice diventa 054083000181.

Buone pratiche

  • Usare nomi di dominio che riflettano il gruppo di server (es. hr-ssh, prod-ssh)
  • Documentare il Domain Server Code e conservarne una copia sicura

Creare un client di rete su WiKID

Nella console WiKID, aprire la scheda Client di rete e cliccare Crea nuovo client di rete. Inserire il nome del client e l’indirizzo IP del gateway SSH o del server che invierà richieste RADIUS. Selezionare il protocollo RADIUS e il dominio creato in precedenza.

Schermata WiKID per la creazione di un client di rete con selezione Radius

Cliccare Aggiungi e impostare lo shared secret RADIUS:

Schermata WiKID per l'inserimento dello shared secret per il client Radius

Ripetere per ogni server/gruppo di server che dovrà usare WiKID.

Configurare SSH su CentOS 7 (installazione pam_radius)

Nota: ciascuna distribuzione Linux gestisce PAM in modo leggermente diverso. Questa guida è focalizzata su CentOS 7/Red Hat.

  1. Scaricare il sorgente pam_radius (versione usata nell’esempio: 1.3.17):
wget ftp://ftp.freeradius.org/pub/radius/pam_radius-1.3.17.tar.gz
  1. Estrarre l’archivio:
tar -xzvf pam_radius-1.3.17.tar.gz
  1. Installare i pacchetti necessari (pam-devel):
sudo yum install -y pam-devel
  1. Compilare nella directory creata:
cd pam_radius-1.3.17
make

Se la libreria condivisa viene costruita correttamente (.so), procedere. In caso di errori di compilazione, controllare i pacchetti di sviluppo e i log di make.

  1. Copiare la libreria nella posizione corretta in base all’architettura:

Per sistemi 32-bit:

sudo cp pam_radius_auth.so /lib/security/

Per sistemi 64-bit:

sudo cp pam_radius_auth.so /usr/lib64/security/

Configurare SSH e PAM per usare RADIUS

Prima di modificare SSH, eseguire un backup del file di configurazione:

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

Assicurarsi che SSH usi PAM (di default su CentOS 7):

# /etc/ssh/sshd_config
UsePAM yes
ChallengeResponseAuthentication no
PasswordAuthentication yes

Per integrare pam_radius, aggiungere o modificare la configurazione PAM per sshd. Aprire /etc/pam.d/sshd e inserire (come riga principale per autenticazione RADIUS):

auth    sufficient    /lib/security/pam_radius_auth.so
  • ‘sufficient’ permette l’autenticazione RADIUS ma lascia fallback alle password locali/LDAP. Cambiare in ‘required’ per forzare solo RADIUS dopo aver testato a fondo.

Configurare il file dei server RADIUS

Creare o modificare il file di configurazione del client RADIUS normalmente in /etc/pam_radius_auth.conf (alcune distribuzioni usano /etc/raddb/server o equivalente). Esempio di riga:

other-server   other-secret   3

Sostituire other-server con l’IP o hostname del server WiKID (o del proxy RADIUS) e other-secret con lo shared secret impostato nel client di rete su WiKID.

Esempio completo:

# /etc/pam_radius_auth.conf
# formato: server    shared_secret    timeout
192.0.2.10   S3cr3tSharedKey   3

Testare la configurazione

  1. Tenere aperto un terminale con i log di sicurezza:
tail -f /var/log/secure
  1. Avviare una nuova sessione SSH da un host di prova e osservare le richieste RADIUS e le risposte nei log.
  2. Se qualcosa non funziona, ripristinare la configurazione dal backup e indagare i log.

Nota: gli account utenti devono esistere localmente o via LDAP/AD. RADIUS qui è usato per l’autenticazione (verifica del PIN + token), l’autorizzazione può continuare a utilizzare LDAP/AD.

Snippets utili

Esempio di riga pam per forzare solo RADIUS (usare con cautela):

# /etc/pam.d/sshd
auth    required    /lib/security/pam_radius_auth.so
account required    pam_unix.so

Esempio di configurazione sshd_config consigliata durante il test:

UsePAM yes
PermitRootLogin yes
PasswordAuthentication yes
ChallengeResponseAuthentication no

Dopo test, per aumentare la sicurezza:

PermitRootLogin no
PasswordAuthentication no
ChallengeResponseAuthentication no

Checklist di rollout (operativa)

  • Backup di /etc/ssh/sshd_config e /etc/pam.d/sshd
  • Backup della macchina o snapshot se possibile
  • Registrar il Domain Server Code su WiKID
  • Creare client di rete su WiKID e fissare shared secret in un vault sicuro
  • Installare e testare pam_radius su un server di staging
  • Eseguire test di accesso con account di prova
  • Monitorare i log (/var/log/secure) per almeno 24 ore
  • Pianificare rollback window e contatti di emergenza

Criteri di accettazione e casi di test

  • Login SSH con utente valido senza token WiKID deve fallire se la policy richiede RADIUS obbligatorio
  • Login SSH con utente valido + token WiKID deve avere successo
  • Disabilitare un token su WiKID deve bloccare l’accesso in pochi secondi/minuti
  • I log devono riportare gli eventi di autenticazione per auditing

Quando questa soluzione fallisce: controesempi e limiti

  • Nessuna connettività di rete tra server CentOS e WiKID => autenticazione fallisce (prevedere fail-open vs fail-closed)
  • Server WiKID non ridondato => single point of failure; considerare clustering o proxy RADIUS
  • Utenti senza account locale/LDAP non potranno eseguire il login anche con token valido

Alternative e approcci comparativi

  • Google Authenticator (TOTP) + PAM: open-source, non richiede server RADIUS, ma la gestione centralizzata dei token è meno granulare
  • Duo Security: servizio commerciale con integrazioni preconfezionate e gestione centralizzata
  • SSH certificate authorities + 2FA: più complesso ma offre controllo centralizzato delle chiavi

Modello decisionale rapido (heuristic)

  • Se hai già infrastruttura RADIUS/AD: integra WiKID via RADIUS
  • Se vuoi soluzione cloud gestita: valuta provider SaaS (Duo, Okta)
  • Se vuoi minimizzare dipendenze: TOTP locale (Google Authenticator) per diversi team

Ruoli e responsabilità (checklist per team)

  • Amministratore sistema: installazione, backup, test, rollback
  • Security/Compliance: verifica criteri, logging, conservazione delle prove
  • Operazioni: monitoraggio, escalation in caso di failure
  • Applicazioni/Dev: test di integrazione se l’accesso automatizzato è coinvolto (CI/CD)

Note su sicurezza e conformità

  • Conservare lo shared secret RADIUS in un vault sicuro (es. HashiCorp Vault)
  • Abilitare logging centrale (SIEM) per raccogliere /var/log/secure e i log di WiKID per audit
  • Disabilitare l’accesso SSH con password per ridurre il rischio di attacchi brute-force dopo il rollout

Privacy / GDPR (se applicabile)

  • L’autenticazione a due fattori aumenta la sicurezza dei dati personali
  • Conservare i log di autenticazione secondo la policy aziendale e la normativa locale
  • Limitare l’accesso ai dati di autenticazione ai soli ruoli autorizzati

Esempio di procedura di rollback rapida

  1. Ripristinare /etc/ssh/sshd_config.bak
  2. Ripristinare /etc/pam.d/sshd dal backup
  3. Riavviare il servizio sshd:
sudo systemctl restart sshd
  1. Verificare accesso e log

Domande frequenti (FAQ breve)

  • Posso usare WiKID per sudo e su? Sì: creare un dominio separato e modificare /etc/pam.d/su o /etc/pam.d/sudo come richiesto.
  • Devo avere account locali per gli utenti? Sì, a meno che non usi PAM con LDAP/AD per la gestione degli account.
  • Cosa succede se lo shared secret viene compromesso? Rotare immediatamente lo shared secret sia sul server WiKID che nei file di configurazione dei client.

Risorse utili

Riepilogo

L’integrazione di WiKID via RADIUS con pam_radius su CentOS 7 offre un miglioramento significativo della sicurezza SSH, soddisfacendo requisiti di audit e permettendo un controllo centralizzato dei token. Testare in staging, mantenere backup e piani di rollback e integrare logging centralizzato per conformità e tracciabilità.

Importante: pianificare sempre una finestra di maintenance e un piano di rollback quando si modifica l’autenticazione remota su server di produzione.

Autore
Redazione

Materiali simili

Proteggere server Debian/Ubuntu dall'attacco Logjam
Sicurezza

Proteggere server Debian/Ubuntu dall'attacco Logjam

Dark Sky: previsioni iperlocali e avvisi
Meteo

Dark Sky: previsioni iperlocali e avvisi

Proteggere SSH su CentOS 7 con WiKID 2FA
Sicurezza

Proteggere SSH su CentOS 7 con WiKID 2FA

Bloccare aggiornamenti Windows 10
Windows

Bloccare aggiornamenti Windows 10

Assumere Stay Dry Roofing Indianapolis: guida in 5 passaggi
Casa & Ristrutturazione

Assumere Stay Dry Roofing Indianapolis: guida in 5 passaggi

Risolvi DNS Server Non Risponde su Windows 11
Windows 11

Risolvi DNS Server Non Risponde su Windows 11