Con il numero crescente di violazioni e compromissioni delle password, abbiamo bisogno del maggior numero possibile di livelli di sicurezza.
Un modo per ottenere una maggiore sicurezza è aggiungere un ulteriore livello di autenticazione. Autenticazione a più fattori (MFA) è un metodo per richiedere più di una credenziale per provare la tua identità.
Cos'è l'AMF?
Di solito, quando accedi a un account o dispositivo, ti vengono richiesti un nome utente e una password. Quando esegui SSH in una macchina Linux, ti potrebbe essere richiesta una coppia di chiavi SSH. L'autenticazione a più fattori richiede agli utenti di fornire più di un'informazione per autenticarsi correttamente su un account o host Linux. Le informazioni aggiuntive possono essere una password monouso (OTP) inviata al tuo cellulare tramite SMS o credenziali da un'app come Google Authenticator, Twilio Authy o FreeOTP.
I Pluggable Authentication Modules (PAM) sono il meccanismo di autenticazione utilizzato in Linux. In questo articolo, utilizziamo il modulo Google PAM per abilitare l'autenticazione a più fattori in modo che gli utenti possano accedere utilizzando codici TOTP (One Time Password) basati sul tempo.
Implementare il modulo di autenticazione di Google
Innanzitutto, installa il modulo di autenticazione di Google su una macchina Linux. Per farlo, apri una finestra di Terminale ed esegui il seguente comando:
# sudo dnf install google-authenticator -y
Quindi, configura google-authenticator
per generare codici OTP. Esegui il comando seguente per iniziare il processo di configurazione:
# google-authenticator
Questo strumento pone una serie di domande. Per la maggior parte di queste domande, rispondi sì (y ), a meno che tu non abbia bisogno di qualcosa di diverso da quello predefinito.
Do you want authentication tokens to be time-based (y/n) y
Questo genera un codice QR sullo schermo, una chiave segreta e codici di ripristino. Utilizzando un'app di autenticazione come Google Authenticator su uno smartphone, scansiona il codice QR generato dal comando sopra. Rispondi alle altre domande per completare il processo.
Do you want me to update your "/home/user/.google_authenticator" file? (y/n) y
Do you want to disallow multiple uses of the same authentication token? This restricts you to one login about every 30s, but it increases your chances to notice or even prevent man-in-the-middle attacks (y/n) y
By default, a new token is generated every 30 seconds by the mobile app. In order to compensate for possible time-skew between the client and the server, we allow an extra token before and after the current time. This allows for a time skew of up to 30 seconds between authentication server and client. If you experience problems with poor time synchronization, you can increase the window from its default size of 3 permitted codes (one previous code, the current code, the next code) to 17 permitted codes (the 8 previous codes, the current code, and the 8 next codes). This will permit for a time skew of up to 4 minutes between client and server.
Do you want to do so? (y/n) y
If the computer that you are logging into isn't hardened against brute-force login attempts, you can enable rate-limiting for the authentication module. By default, this limits attackers to no more than three login attempts every 30s.
Do you want to enable rate-limiting? (y/n) y
Configura SSH per richiedere il codice OTP
Modifica un paio di file di configurazione SSH per richiedere un codice OTP come autenticazione di secondo fattore.
Utilizzando il tuo editor di testo preferito, apri /etc/pam.d/sshd
per la modifica:
# sudo vi /etc/pam.d/sshd
Aggiungi le seguenti righe di configurazione:
auth required pam_google_authenticator.so nullok
Questa linea di configurazione consente a PAM di utilizzare il modulo PAM di Google Authenticator, che abbiamo installato nel passaggio precedente.
Con il nullok
voce sulla linea, SSH non richiederà un codice OTP per gli utenti sulla macchina che non sono configurati per MFA. Rimuovere completamente questa opzione per obbligare ogni utente a utilizzare l'autenticazione a più fattori su questo sistema.
Quindi, commenta la seguente riga per disabilitare l'autenticazione della password per gli accessi:
#auth substack password-auth
Salva e chiudi il file.
Nel passaggio successivo, modifica la configurazione SSH per visualizzare la richiesta del codice OTP dopo l'avvenuta autenticazione della coppia di chiavi SSH.
Usando il tuo editor di testo preferito apri /etc/ssh/sshd_config
per la modifica:
# sudo vi /etc/ssh/sshd_config
Trova e commenta la riga ChallengeResponseAuthentication no e aggiungi una nuova riga di configurazione ChallengeResponseAuthentication sì . Questa riga consente a SSH di chiedere una Risposta alla sfida . Nel nostro caso, la risposta è un codice OTP dopo un'autenticazione basata su chiave SSH riuscita. Ecco la riga:
#ChallengeResponseAuthentication no
ChallengeResponseAuthentication yes
Infine, fai sapere a SSH di chiedere entrambi una chiave SSH e un codice di verifica per autenticarci. SSH verifica la presenza di una coppia di chiavi SSH (publickey ) e poi il codice OTP (keyboard-interactive ). In fondo al file, aggiungi:
AuthenticationMethods publickey,keyboard-interactive
Per abilitare la coppia di chiavi SSH e l'autenticazione OTP solo per un utente specifico, aggiungi invece qualcosa di simile a questo:
Match user <username>
AuthenticationMethods publickey,keyboard-interactive
Salva il file ed esci. Riavvia il servizio SSH per rendere effettive le modifiche:
# sudo systemctl restart sshd
Verifica la configurazione
Proviamo la nostra configurazione. Apri una finestra Terminale e SSH nell'host Linux. Ti viene richiesto un codice OTP dall'app di autenticazione.
Per richiedere una password insieme a una coppia di chiavi SSH e un codice OTP, quindi aprire il /etc/pam.d/ssd
file per la modifica e decommenta questa riga:
auth substack password-auth
Quindi, apri /etc/ssh/sshd_config
file per la modifica e aggiungere un altro metodo di autenticazione:
AuthenticationMethods publickey,password publickay,keyboard-interactive
Non dimenticare di riavviare SSH dopo aver apportato queste modifiche.
Concludi
Con MFA, aggiungiamo un altro livello di autenticazione, rendendo i nostri sistemi più sicuri. Oltre alla tradizionale autenticazione basata su nome utente e password, utilizziamo metodi più sicuri come una coppia di chiavi SSH e TOTP (Google Authenticator) per accedere al sistema. Implementando queste misure, miglioriamo la sicurezza del sistema e rendiamo più difficile violare i dispositivi Linux.
[ Vuoi saperne di più sulla sicurezza? Consulta la checklist di sicurezza e conformità IT. ]