SSH ENFORCEMENT CON GOOGLE AUTHENTICATOR

EDITORIALIGUIDESISTEMI E RETIWEB & CODING

Alcuni di noi amano creare server domestici per la fruizione da remoto dei propri contenuti (documenti, elementi multimediali, siti web, videochat ed altro).

Questi server generalmente sono amministrati attraverso l’uso del protocollo di accesso sicuro SSH (Secure Shell, appunto). Se decidiamo di gestire questi server da un computer interno alla nostra LAN non sussiste – nella generalità dei casi – alcun problema, poiché la porta SSH non risulta esposta.

Se, al contrario, decidiamo di esibire la porta SSH su Internet attraverso il port forwarding del router le cose cambiano: in questo caso saremo tranquillamente vulnerabili agli scanner di rete, i quali – una volta scoperta la porta – potrebbero tentare attacchi brute-force sul nostro malcapitato server (a meno che non abbiate ovviato al problema attraverso un fail-to-ban, ossia un programma che consente un certo numero di tentativi di accesso nel tempo, salvo poi bannare l’IP qualora questi risultino fallire).

Generalmente, l’accesso ad SSH avviene – appunto – tramite l’uso dello username e della password del nostro utente. Per esperienza, l’essere umano tende ad utilizzare password di semplice memorizzazione o che attengono al proprio vissuto e/o alla propria famiglia (e qui scende in campo la nobile arte del “social engineering”) tuttavia ciò rappresenta un gravissimo pericolo per i nostri dati e sistemi informatici.

E’ vero, sarebbe buona prassi – oltre che cambiare la porta SSH di default – anche implementare un sistema di accesso alternativo alla password come l’uso delle chiavi SSH per l’autenticazione: tuttavia, questo approccio risulta un po’ scomodo qualora si cambi spesso client di accesso al server.

Per questo motivo, potrebbe essere utile utilizzare metodi di rafforzamento della sicurezza più immediati, da affiancare alla tradizionale password di accesso: ed ecco l’oggetto del presente articolo, ossia l’uso di Google Authenticator.

In sommaria sintesi, questo strumento, consente di generare sul proprio telefono un OTP (One-Time Password) il quale, essendo stato previamente associato al server, consente di accedere al medesimo con un sistema di autenticazione a due fattori (2FA), ossia con un codice numerico imprevedibile della validità di pochi secondi.

L’installazione è stata eseguita su una piattaforma Debian-based ma risulta facilmente replicabile anche in distribuzioni diverse come Fedora e Arch Linux.

Per prima cosa verifichiamo che il nostro server abbia installato SSH e che sia attivo il rispettivo servizio (e il suo demone) con i comandi:

sudo apt install openssh-server

sudo systemctl start ssh

sudo systemctl status ssh

sudo systemctl enable ssh

Installiamo adesso Google Authenticator:

sudo apt install libpam-google-authenticator

Avviamo ora Google Authenticator con il comando:

google-authenticator

Il sistema porrà 5 domande in serie a cui dobbiamo rispettivamente rispondere y y y n y.

Esso genererà un QR code che dovrà essere inquadrato attraverso l’App Google Authenticator (disponibile per Android ed iOS) premendo sulla stessa il tasto +.

Inoltre, la shell proporrà una serie di codici (che saranno utili da memorizzare in un luogo sicuro!!) qualora sia necessario sbloccare l’accesso al server via SSH in caso di smarrimento o malfunzionamento del vostro smartphone.

Prima che il nostro nuovo sistema sia effettivamente in funzione è necessario modificare un paio di file riguardanti rispettivamente i metodi di autenticazione PAM (Pluggable Authentication Modules) e SSH.

Per completezza basti sapere che Linux-PAM è una collezione di librerie condivise che permettono all’amministratore del sistema locale di scegliere come le applicazione autenticano gli utenti.

sudo nano /etc/pam.d/sshd

ed aggiungi in fondo la riga auth required pam_google_authenticator.so 

sudo nano /etc/ssh/sshd_config

Trova la riga per ChallengeResponseAuthentication e imposta il suo valore su yes.

Ora riavviamo SSH con il comando:

sudo systemctl restart ssh

e all’esito dell’accesso oltre alla password il sistema richiederà il codice OTP generato dall’App Google Authenticator.

 

La sicurezza prima di tutto! A presto.

 

Credit photo: xmodulo