Articolo di Alessio Bash, già pubblicato sul suo ottimo blog
Molte policy di sicurezza prevedono di cambiare il numero della porta del servizio SSH per garantire una maggiore sicurezza in un sistema Linux. Situazione ormai ovvia in tutto il mondo IT e utilizzata maggiormente dagli utenti che possiedono un proprio server privato. Oggi voglio farvi vedere come aggiungere un’altra policy di sicurezza al servizio SSH senza dover cambiare porta. Si tratta di inglobare il famosissimo Google Authenticator al servizio ssh, in modo tale da avere una sicurezza a due passaggi, ovvero, inserendo la propria password più la combinazione data dall’applicazione G.A. Vediamo dunque come fare tutto questo…
Il primo passo da fare è configurare l’NTP sul nostro OS Linux per avere un orario allineato con il server di Google.
Successivamente scaricare sul proprio dispositivo mobile l’applicazione Google Authenticator:
Prepariamo dunque l’installazione sul nostro sistema Linux.
Installiamo le dipendenze per poter far funzionare correttamente il prodotto:
Per Debian/Ubuntu
# apt-get install build-essential libpam0g-dev libpam0g make
Per CentOS\RHEL (aver abilitato i repo EPEL come descritto QUI)
# yum --enablerepo=epel install gcc gcc++ pam-devel subversion python-devel git
Per ArchLinux (se necessario)
# pacman -Sy pam wget
Completata l’installazione delle dipendenze procediamo con la compilazione della libreria necessaria. Scarichiamo la libreria con il comando:
# wget https://google-authenticator.googlecode.com/files/libpam-google-authenticator-1.0-source.tar.bz2 -O googleauth.tar.bz2
estraiamo il contenuto:
# tar -xf googleauth.tar.bz2
entriamo nella directory:
# cd libpam-google-authenticator-1.0/
Modifichiamo il MakeFile con il nostro editor preferito:
# nano Makefile
Aggiungiamo, subito dopo la direttiva “VERSION := 1.0“, la riga “LDFLAGS=”-lpam“”:
...
VERSION := 1.0
LDFLAGS="-lpam"
...
A questo punto salviamo il file e lanciamo i comandi di compilazione:
# make && make install
Se l’installazione è andata a buon termine eliminiamo i file scaricati con i comandi:
# cd ..
# rm -rf googleauth.tar.bz2 libpam-google-authenticator-1.0/
a questo punto possiamo lanciare il comando per la prima configurazione:
# google-authenticator
una volta lanciato ci verrà chiesto:
Do you want authentication tokens to be time-based (y/n)
rispondiamo “y” e diamo invio.
a questo punto apparirà un output del genere:
https://www.google.com/chart?chs=200x200&chld=M|0&cht=qr&chl=otpauth://totp/root@myserver%3Fsecret%3D3LXXXXXXXXXXXX Your new secret key is: 3LOXXXXXXXXXXXX Your verification code is 722511 Your emergency scratch codes are: 83222658 89225401 50442214 61802255 22629775 Do you want me to update your "/root/.google_authenticator" file (y/n)
copiamo il link: https://www.google.com/chart?chs=200×200&….e incolliamolo nella barra degli indirizzi del nostro browser, facendo apparire il qrcode.
Apriamo l’applicazione G.A. sul nostro dispositivo mobile, andiamo su “Menu” -> “Configura Account”
Successivamente andiamo su “Leggi codice a barre”
Posizioniamo lo smartphone sullo schermo per leggere il codice a barre e generare i codici di accesso.
Apparirà subito dopo la voce relativa al vostro server (es: root@hostname):
A questo punto l’applicazione è pronta, ritorniamo sul nostro sistema Linux e continuiamo la configurazione. Eravamo rimasti alla domanda:
Do you want me to update your "/root/.google_authenticator" file (y/n)
diamo nuovamente si “y” anche altre domande.
A questo punto non rimane altro da fare che editare il file di configurazione di pam con il nostro editor preferito:
# nano /etc/pam.d/sshd
e aggiungere alla fine del file:
auth required pam_google_authenticator.so
salvate e modificate il file di configurazione sshd_config con il vostro editor preferito:
# nano /etc/ssh/sshd_config
modificando la voce da:
ChallengeResponseAuthentication no
a
ChallengeResponseAuthentication yes
salvate e riavviate il servizio sshd con il comando:
Per Debian/Ubuntu
# service ssh restart
Per RHEL/CentOS
# service sshd restart
Per ArchLinux
# systemctl restart sshd
A questo punto, se tutto è andato bene, proviamolo connettendoci al server in ssh:
Per abilitare lo stesso codice su altri utenti di sistema basta copiare il file /root/.google_authenticator nella home del proprio utente. Mentre se si vuole un Token a utente basta rilanciare il comando google-authenticator con l’utente desiderato.
Popular Posts:
- None Found
I love the idea behind this tutorial. Hopefully will get to play with it at some stage 🙂