Dec 282013
 

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.

code_ga

Apriamo l’applicazione G.A. sul nostro dispositivo mobile, andiamo su “Menu” -> “Configura Account

gapp

Successivamente andiamo su “Leggi codice a barre

gapp2

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):

gapp3

 

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:

sshok

 

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:

Flattr this!

  One Response to “SSH con 2 passaggi su Linux grazie a Google Authenticator”

  1. I love the idea behind this tutorial. Hopefully will get to play with it at some stage 🙂

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(required)

(required)

*