"Secure shell" SSH è un protocollo di rete per stabilire una connessione sicura tra host, normalmente tramite la porta 22 (che è meglio cambiare). Client SSH e server SSH sono disponibili per la maggior parte dei sistemi operativi. Quasi tutti gli altri protocolli di rete funzionano all'interno di SSH, ovvero puoi lavorare in remoto su un altro computer, trasmettere un flusso audio o video su un canale crittografato, ecc. Oltretutto,
L'autenticazione avviene tramite password, ma gli sviluppatori e gli amministratori di sistema utilizzano tradizionalmente le chiavi SSH. Il problema è che la chiave privata può essere rubata. L'aggiunta di una passphrase teoricamente protegge dal furto della chiave privata, ma in pratica, durante l'inoltro e la memorizzazione nella cache delle chiavi,
Come implementare l'autenticazione a due fattori
Gli sviluppatori di Honeycomb hanno recentemente pubblicato
Le istruzioni presuppongono che tu abbia un determinato host di base aperto a Internet (bastione). Vuoi connetterti a questo host da laptop o computer tramite Internet e accedere a tutti gli altri dispositivi che si trovano dietro di esso. 2FA garantisce che un utente malintenzionato non possa fare lo stesso anche se riesce ad accedere al tuo laptop, ad esempio installando malware.
La prima opzione è OTP
OTP: 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 utente malintenzionato potrebbe innalzare un falso bastione, intercettare la tua OTP e utilizzarla. Ma è meglio di niente.
In questo caso, lato server, nella configurazione di Chef vengono scritte le seguenti righe:
metadata.rb
attributes/default.rb
(daattributes.rb
)files/sshd
recipes/default.rb
(copia darecipe.rb
)templates/default/users.oath.erb
Qualsiasi applicazione OTP è installata sul lato client: Google Authenticator, Authy, Duo, Lastpass, installati brew install oath-toolkit
o apt install oathtool openssl
, viene generata una stringa (chiave) base16 casuale. Viene convertito nel formato Base32 utilizzato dagli autenticatori mobili e importato direttamente nell'applicazione.
Di conseguenza, puoi connetterti a Bastion e vedere che ora richiede non solo una passphrase, ma anche un codice OTP per l'autenticazione:
➜ ssh -A bastion
Enter passphrase for key '[snip]':
One-time password (OATH) for '[user]':
Welcome to Ubuntu 18.04.1 LTS...
La seconda opzione è l'autenticazione hardware
In questo caso l'utente non è obbligato a inserire ogni volta il codice OTP, poiché il secondo fattore diventa il dispositivo hardware o la biometria.
Qui la configurazione di Chef è un po' più complicata e la configurazione del client dipende dal sistema operativo. Ma dopo aver completato tutti i passaggi, i client su MacOS possono confermare l'autenticazione in SSH utilizzando una passphrase e posizionando un dito sul sensore (secondo fattore).
I proprietari di iOS e Android confermano l'accesso
Su Linux/ChromeOS c'è un'opzione per lavorare con i token USB YubiKey. Naturalmente, un utente malintenzionato può rubare il tuo token, ma non conosce ancora la passphrase.
Fonte: habr.com