«Shell sicura» SSH è un protocollo di rete per stabilire una connessione sicura tra host, normalmente sulla porta 22 (che è meglio cambiare). I client e i server SSH sono disponibili per la maggior parte dei sistemi operativi. All'interno di SSH può funzionare praticamente qualsiasi altro protocollo di rete, il che significa che è possibile lavorare remotamente su un altro computer, trasmettere flussi audio o video attraverso un canale crittografato, ecc. Inoltre, è possibile collegarsi ad altri host già a nome di questo host remoto.
L'autenticazione avviene tramite password, ma gli sviluppatori e gli amministratori di sistema utilizzano tradizionalmente le chiavi SSH. Il problema è che la chiave segreta potrebbe essere rubata. L'aggiunta di una frase d'ordine protegge teoricamente dalla sottrazione della chiave segreta, ma nella pratica, durante il forwarding e la memorizzazione nella cache delle chiavi, possono . L'autenticazione a due fattori risolve questo problema.
Come implementare l'autenticazione a due fattori
Gli sviluppatori dell'azienda Honeycomb hanno recentemente pubblicato , su come implementare l'infrastruttura corrispondente sul client e sul server.
La guida presuppone che tu abbia un host di base, accessibile da internet (bastione). Vuoi collegarti a questo host da laptop o computer attraverso internet e avere accesso a tutti gli altri dispositivi che si trovano dietro di esso. 2FA garantisce che un aggressore non possa fare lo stesso, anche se riesce ad accedere al tuo laptop, ad esempio installando malware.
La prima opzione è l'OTP
L'OTP sono password digitali monouso che in questo caso verranno utilizzate per l'autenticazione SSH insieme alla chiave. Gli sviluppatori scrivono che questa non è un'opzione ideale, perché un aggressore potrebbe creare un falso bastione, intercettare il tuo OTP e utilizzarlo. Ma è meglio di niente.
In questo caso, sul lato server, vengono scritte le seguenti righe nel file di configurazione Chef:
metadata.rbattributes/default.rb(daattributes.rb)files/sshdrecipes/default.rb(copia direcipe.rb)templates/default/users.oath.erb
Sul lato client, viene installata qualsiasi applicazione OTP: Google Authenticator, Authy, Duo, Lastpass, viene installato brew install oath-toolkit o apt install oathtool openssl, poi viene generata una stringa casuale in base16 (chiave). Questa viene convertita nel formato Base32, utilizzato dagli autenticatori mobili, e importata direttamente nell'applicazione.
Di conseguenza, puoi connetterti al bastione e verificare che ora richiede non solo la frase di accesso, ma anche un codice OTP per l'autenticazione:
➜ ssh -A bastion
Inserisci la frase di accesso per la chiave '[snip]':
Codice monouso (OATH) per '[user]':
Benvenuto in Ubuntu 18.04.1 LTS...La seconda opzione è l'autenticazione hardware
In questo caso, non è richiesto all'utente di inserire ogni volta il codice OTP, poiché il secondo fattore diventa un dispositivo hardware o la biometria.
Qui la configurazione di Chef è un po' più complessa e la configurazione dei client dipende dal sistema operativo. Tuttavia, dopo aver completato tutte le operazioni, i client su MacOS possono confermare l'autenticazione in SSH tramite frase di accesso e appoggiando il dito al sensore (secondo fattore).
I possessori di iOS e Android confermano l'accesso . Si tratta di una tecnologia speciale di Krypt.co, che è persino più sicura dell'OTP.
Su Linux/ChromeOS c'è una possibilità di lavorare con i token USB YubiKey. Certamente, un malintenzionato potrebbe rubare il tuo token, ma non conoscerà comunque la frase di accesso.
Fonte: habr.com
