Gestione Accessi SSH con Smallstep CA Interna: Oltre le Chiavi Statiche

In quante aziende la gestione degli accessi ai server Linux di produzione si basa ancora sulla copia manuale delle chiavi pubbliche nel file ~/.ssh/authorized_keys di ogni singola macchina?
Questo modello, nato negli anni ’90 con la prima specifica di SSH, diventa insostenibile e pericoloso appena il team cresce oltre i 2-3 sviluppatori:
- Chiavi orfane e mai revocate: Quando un collaboratore o fornitore lascia l’azienda, è quasi impossibile avere la certezza di aver eliminato la sua chiave pubblica da tutti i server e container.
- Assenza di scadenza: Una chiave SSH statica generata dieci anni fa rimane valida per sempre fino a quando non viene rimossa a mano.
- Zero integrazione con l’Identity Provider (IdP): Nessuna correlazione con MFA aziendale, SSO o disattivazione centralizzata degli account.
Per risolvere alla radice questi problemi, in Protezione Cloud abbiamo implementato un’architettura di autenticazione SSH basata su Certificati SSH a breve durata (Short-Lived Certificates) emessi da una Certificate Authority (CA) interna Smallstep (step-ca).
1. Come Funzionano i Certificati SSH (OpenSSH Native)
Molti sistemisti ignorano che OpenSSH supporta nativamente i certificati digitali senza richiedere agenti proprietari o demoni pesanti sui server:
- La CA interna: Viene generata una coppia di chiavi crittografiche (CA Keypair) custodita in modo blindato.
- Fiducia sui Server (Host Trust): Tutti i server Linux dell’infrastruttura vengono configurati per considerare attendibile la CA pubblica tramite una singola riga in
/etc/ssh/sshd_config:TrustedUserCAKeys /etc/ssh/ssh_user_ca.pub - Emissione Certificato Utente: L’utente non distribuisce più la propria chiave pubblica sui server. Quando deve lavorare, chiede alla CA di firmare la sua chiave pubblica, ricevendo un certificato temporaneo (
id_ecdsa-cert.pub) valido ad esempio per 8 o 16 ore. - Accesso Diretto: Quando l’utente si connette via SSH, il server verifica la firma della CA e la data di validità del certificato. Se il certificato è valido e contiene il principal corretto (es.
ubuntu,admin,devops), l’accesso è consentito istantaneamente.
2. L’Ecosistema Smallstep (step-ca & step-cli)
Smallstep è una piattaforma open-source per la gestione di infrastrutture a chiave pubblica (PKI) e zero-trust identity.
L’architettura implementata prevede:
+-------------------+ 1. Login OIDC (Google/IdP) +-------------------+
| Sviluppatore / | ----------------------------------> | Smallstep CA |
| Sistemista | <---------------------------------- | (step-ca) |
+-------------------+ 2. Certificato SSH (8h TTL) +-------------------+
|
| 3. Connessione SSH con Certificato Effimero
v
+-----------------------------------------------------------------------------+
| Server Linux Produzione (Verifica firma CA con TrustedUserCAKeys) |
+-----------------------------------------------------------------------------+
3. Esperienza Utente: Rinnovo a 1-Click con Single Sign-On (SSO)
Dalla prospettiva del tecnico o dello sviluppatore, il flusso è totalmente integrato con l’identità aziendale:
- All’inizio della giornata lavorativa, l’utente lancia il comando di login:
step ssh certificate enzo.carlettini@azienda.it ~/.ssh/id_ecdsa - Si apre automaticamente la finestra del browser con l’autenticazione Google Workspace / Microsoft Entra ID protetta da MFA (FIDO2 / TOTP).
- Una volta completato il login, la CLI scarica il certificato firmato
~/.ssh/id_ecdsa-cert.pubcon validità di 8 ore. - L’utente accede a qualsiasi server dell’infrastruttura senza inserire password e senza che i server debbano conoscere in anticipo la sua chiave!
Alla scadenza delle 8 ore, il certificato cessa di esistere: nessun rischio di chiavi dimenticate su vecchi portatili o backup non protetti.
4. Vantaggi Operativi & Compliance SecOps
- Revoca Istantanea & Offboarding a Costo Zero: Quando un dipendente lascia l’azienda, è sufficiente sospendere il suo account Google/Microsoft per revocare all’istante l’accesso a tutti i server dell’infrastruttura, senza toccare una sola riga di configurazione sui server.
- Audit Log Veritieri: Ogni certificato include come metadato l’indirizzo email aziendale univoco dell’utente, consentendo nei log di sistema (
/var/log/auth.log) di tracciare con assoluta certezza chi ha eseguito ciascuna sessione SSH. - Organizzazione degli Host (
~/.ssh/conf.d/): La configurazione client viene standardizzata suddividendo gli host per cliente e ambiente con alias dedicati.
Conclusioni
Passare dalle chiavi statiche authorized_keys ai certificati SSH con Smallstep CA è uno dei passi più efficaci per elevare la postura di sicurezza dell’infrastruttura aziendale verso un modello Zero-Trust reale e verificabile.