Configurar l'autenticació de doble factor en iniciar sessió per SSH ens permet verificar la identitat de la connexió per dues vies diferents. Així, amb uns passos senzills afegirem una capa addicional de seguretat, ja que es requerirà la contrasenya de l'usuari i un codi de verificació extern que es renova periòdicament per iniciar sessió.
Requisits per configurar 2FA
- Tenir instal·lada l'aplicació Google Authenticator al telèfon intel·ligent (Android o iOS).
- Ubuntu 16.04 LTS o superior
Enllaços de descàrrega de l'aplicació Google Authenticator
Instal·lació i configuració de 2FA amb Google Authenticator
El primer pas és instal·lar el mòdul PAM. Per fer-ho, accedirem per SSH i executarem l'ordre següent:
# sudo apt install libpam-google-authenticator
Editarem el fitxer de configuració de PAM per a SSH:
# vi /etc/pam.d/sshdAfegirem la línia següent al final del fitxer i el desarem:
auth required pam_google_authenticator.soReiniciarem el servei SSH per aplicar els canvis:
# sudo systemctl restart sshd.serviceEditarem el fitxer de configuració del servei SSH:
# vi /etc/ssh/sshd_configCanviarem el valor de "ChallengeResponseAuthentication" de "no" a "yes" i comentarem la variable "PasswordAuthentication":
ChallengeResponseAuthentication yes
#PasswordAuthentication yesL'últim pas al servidor és configurar Google Authenticator per poder afegir la clau secreta a l'aplicació del telèfon intel·ligent. Per fer-ho, executarem l'ordre següent:
# google-authenticatorS'iniciarà un procés que ens farà diverses preguntes. Primer ens preguntarà si volem que els testimonis d'autenticació es basin en el temps i li indicarem que sí amb "y".
Do you want authentication tokens to be time-based (y/n) yEn respondre que sí, apareixerà un codi QR que haurem d'escanejar amb l'aplicació Google Authenticator per obtenir els codis basats en el temps i poder iniciar sessió.
També ens facilitarà la clau secreta amb la qual podrem configurar l'aplicació Google Authenticator si no podem escanejar el codi QR, i ens proporcionarà uns codis d'emergència. És important desar aquesta informació en un lloc segur.
Your new secret key is: CWCWJXGREVUEPOGSA4IIBOP4MQ
Your verification code is 188690
Your emergency scratch codes are:
40269362
85310855
22210098
58507831
63668065A continuació ens farà tres preguntes més i respondrem tal com es mostra a l'exemple següent:
Do you want me to update your "/root/.google_authenticator" file? (y/n) y
Do you want to disallow multiple uses of the same authentication token? This restricts you to one login bout 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) n
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 3 login attempts every 30s.
Do you want to enable rate-limiting? (y/n) yTornarem a reiniciar el servei SSH perquè l'autenticació de doble factor ja estigui habilitada en el pròxim inici de sessió.
# sudo systemctl restart sshd.serviceConfiguració de l'aplicació Google Authenticator al telèfon intel·ligent
Tal com indicàvem al principi, haurem d'accedir a Google Play o a l'App Store per descarregar l'aplicació Google Authenticator i, un cop instal·lada, obrir-la per afegir el primer servidor.
La primera vegada que obrim l'aplicació, com que no hi ha cap compte configurat, ens demana que configurem el primer compte. Tocarem "Escanear código QR" si disposem del codi QR, o bé "Introduce una llave" i introduirem la clau CWCWJXGREVUEPOGSA4IIBOP4MQ que se'ns ha proporcionat abans.
Un cop l'aplicació hagi reconegut les dades, a la pantalla principal apareixerà el compte configurat amb el codi 471 797 (en aquest exemple). Aquest codi va canviant a mesura que passa el temps.
Connexió per SSH amb el codi de Google Authenticator
Ens connectarem per SSH i veurem que primer ens demana la contrasenya de l'usuari. Un cop introduïda correctament, ens demanarà el "verification code", que podrem consultar a l'aplicació instal·lada.
# ssh root@46.183.118.200
Password:
Verification code:
Amb aquests passos senzills hem vist com afegir una capa addicional de seguretat a l'accés per SSH i impedir que els intrusos accedeixin al servidor.