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

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
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.
Cliccare Aggiungi e impostare lo shared secret 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.
- 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
- Estrarre l’archivio:
tar -xzvf pam_radius-1.3.17.tar.gz
- Installare i pacchetti necessari (pam-devel):
sudo yum install -y pam-devel
- 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.
- 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
- Tenere aperto un terminale con i log di sicurezza:
tail -f /var/log/secure
- Avviare una nuova sessione SSH da un host di prova e osservare le richieste RADIUS e le risposte nei log.
- 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
- Ripristinare /etc/ssh/sshd_config.bak
- Ripristinare /etc/pam.d/sshd dal backup
- Riavviare il servizio sshd:
sudo systemctl restart sshd
- 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
- CentOS: http://www.centos.org
- PAM RADIUS: http://freeradius.org/pam_radius_auth/
- WiKID Two-factor authentication: https://www.wikidsystems.com
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.
Materiali simili
Proteggere server Debian/Ubuntu dall'attacco Logjam

Dark Sky: previsioni iperlocali e avvisi

Proteggere SSH su CentOS 7 con WiKID 2FA

Bloccare aggiornamenti Windows 10

Assumere Stay Dry Roofing Indianapolis: guida in 5 passaggi
