Usuario y clave con One Time Password (Google Authenticator o Latch OTP)
En esta parte del manual, vamos a autenticarnos con el usuario/contrase帽a de siempre, pero adem谩s, deberemos usar un OTP con Google Authenticator o Latch OTP para entrar en la sesi贸n. Es decir, dotaremos al servidor SSH de verificaci贸n en dos pasos.
Lo primero que debemos hacer es instalar una serie de dependencias necesarias para poder configurar la doble autenticaci贸n en nuestro servidor SSH. Para ello abriremos un terminal y teclearemos:
<span class="has-inline-color has-black-color">$ sudo apt install libpam0g-dev make gcc wget ssh</span>
Una vez que las dependencias est谩n instaladas en nuestro sistema ya podemos descargar el software para la doble autenticaci贸n.
$ sudo apt install libpam-google-authenticator
Ya tenemos instalado Google Authenticator en nuestro sistema operativo. Los siguientes pasos a seguir son la configuraci贸n de la herramienta para poderla utilizar en nuestro SSH.
Para comenzar con la configuraci贸n de Google Authenticator simplemente debemos teclear en el terminal:
$ <span class="has-inline-color has-black-color">google-authenticator</span>
NOTA: Ejecutarlo sin permisos de root (sudo), es decir, ejecutarlo como usuario 芦normal禄. Si lo ejecutas como root, ese Google Auth solo estar谩 disponible en el propio root, y al deshabilitarlo en el propio SSH no har谩 nada.
A continuaci贸n veremos un sencillo asistente desde el terminal. Lo primero que nos preguntar谩 es si queremos que nuestros tokens de acceso est茅n basados en el tiempo. A continuaci贸n veremos la clave privada, la clave de verificaci贸n y los c贸digos de emergencia si no tenemos nuestro m贸vil a mano. Debemos guardar todos estos datos de forma segura de manera que podamos recuperar el acceso en caso de p茅rdida de la clave de autenticaci贸n.
Despu茅s le decimos que guarde los cambios en el archivo de nuestra carpeta /home y nos preguntar谩 si queremos que cada token sea utilizado una 煤nica vez, aunque eso limite a un inicio de sesi贸n cada 30 segundos. Para protegernos frente a posibles ataques MITM seleccionamos que s铆. Por 煤ltimo, nos preguntar谩 si queremos ampliar el periodo de validez de cada c贸digo en lugar de solo 1 minuto y 30 segundos (para evitar problemas de sincronizaci贸n de tiempo). Para evitar ataques de fuerza bruta tambi茅n podemos limitar las conexiones a 3 por cada 30 segundos.
El escaneo del c贸digo QR o la introducci贸n manualmente de c贸digo se puede realizar en programas como Google Authenticator, Authy, Latch y un largo etc茅tera. Recomendamos el uso de Google Authenticator o Latch.
El siguiente paso que debemos hacer es abrir el fichero de configuraci贸n de 芦sshd禄 para indicarle que utilice este m贸dulo para el inicio de sesi贸n. Para ello podemos teclear:
$ <span class="has-inline-color has-black-color">sudo nano /etc/pam.d/sshd</span>
Y a帽adiremos al final del fichero la siguiente l铆nea:
<span class="has-inline-color has-black-color">auth required pam_google_authenticator.so</span>
Guardamos los cambios y abrimos el fichero聽sshd_config con el siguiente comando:
$ <span class="has-inline-color has-black-color">sudo nano /etc/ssh/sshd_config</span>
Y cambiamos la l铆nea 芦ChallengeResponseAuthentication no禄 por 芦ChallengeResponseAuthentication yes禄.
Reiniciamos el servidor con 芦sudo /etc/init.d/ssh restart禄 y una vez que vuelva a arrancar, ya tendremos la autenticaci贸n en dos pasos habilitada.
Una vez hecho, con el inicio de sesi贸n tambi茅n nos pedir谩 una clave de un solo uso, el c贸digo generado por nuestra aplicaci贸n m贸vil.
Clave p煤blica SSH con One Time Password (Google Authenticator o Latch OTP)
La configuraci贸n a nivel de clave p煤blica debe ser exactamente igual que antes, y a nivel de instalaci贸n y configuraci贸n del Google Authenticator tambi茅n. La 煤nica diferencia es que en el fichero聽sshd_config聽deberemos tener algo as铆:
<span class="has-inline-color has-black-color">PasswordAuthentication no<br>ChallengeResponseAuthentication yes<br>PubKeyAuthentication yes<br>UsePAM yes<br>AuthenticationMethods publickey,keyboard-interactive</span>
Y en el fichero /etc/pam.d/sshd debemos tener algo como esto:
<span class="has-inline-color has-black-color">#@include common-auth<br>auth required pam_google_authenticator.so</span>
Muy importante poner una almohadilla (#) para comentar el @include, de esta forma, nos autenticaremos correctamente con clave p煤blica m谩s el c贸digo OTP generado por el m贸vil. De esta forma, estaremos dici茅ndole al servidor que acepte autenticaci贸n con clave p煤blica 煤nicamente.
