SSH: Autenticación en dos pasos

Hace ya tiempo Google sacó un sistema novedoso, la autenticación en 2 pasos para todo su sistema. Para aquellos que no lo conozcáis, no es más que un extra se seguridad a tu contraseña basado en un código temporal que deberás de introducir cada vez que quieras iniciar sesión en Google. Puesto que el código es aleatorio y se cambia cada 30 segundos, es extremadamente complicado que alguien que esté a la escucha (ataque made in the middle) pueda capturar la contraseña y aprovecharse de ello. Ya no digamos, adivinarla directamente.
Recientemente encontré un proyecto, Google Authenticator que lleva la misma filosofía a nuestro servidor SSH, permitiendo así tener un segundo paso de autenticación. Imaginaros un servidor SSH expuesto a Internet, pues nunca está demás tener un extra de seguridad, así que esta autenticación en dos pasos, es muy interesante.
En este post vamos a ver cómo configurar este nuevo software con nuestro servidor SSH y cómo poder enlazarlo en nuestro móvil (Android, iPhone o Blackberry). Para ello, vamos a seguir unos sencillos pasos.
  1. Descargar la aplicación Google Authenticator
    Está disponible en los market's de vuestro sistema. Por lo menos en Google Play, como "Google Authenticator". También necesitamos tener instalado un lector de códigos QR, para hacer los pasos más sencillos. Yo os recomiendo Barcode Scanner.
  2. Instalar el software necesario en el servidor GNU/Linux
    Si estás empleando Ubuntu, puedes añadir directamente el repositorio,
    shell> add-apt-repository ppa:failshell/stable
    shell> apt-get update
    shell> apt-get install libpam-google-authenticator
    
    En caso de emplear otra distribución, puedes descargar el código desde aquí y compilarlo.
    Una vez tengas el software instalado, sólo quedará por realizar los pequeños cambios en los ficheros de configuración oportunos.
    1. /etc/pam.d/sshd
      auth required pam_google_authenticator.so
      ...
      ...
      
    2. /etc/ssh/sshd_config
      ChallengeResponseAuthentication yes
      
    3. Reiniciar el servidor ssh
      shell> service ssh restart
      
  3. Generar la clave para el usuario
    Ahora que ya el administrador hizo todo su trabajo, sólo queda generar una nueva clave. Para ello habrá que ejecutar el comando 'google-authenticator' como usuario, lo que generará un código QR que será el que tengamos que leer con nuestro teléfono. A mayores, nos ofrece un 5 códigos de emergencia, los cuales debería de ser guardados en un lugar seguro y también una clave secreta, por si no tienes un lector de códigos QR, poder crear la nueva cuenta en la aplicación móvil.
    shell> google-authenticator 
    
    
    
    
    
    
    
    
    
    
    
    
    
    Your new secret key is: GSDRTAHDMEHZ5545
    Your verification code is 785634
    Your emergency scratch codes are:
      62294539
      67649794
      80559805
      17028096
      57642341
    
    Do you want me to update your "~/.google_authenticator" file (y/n) y
    ...
    ...
  4. Añadirla en el teléfono
    Antes de cerrar la consola, necesitamos abrir la aplicación Authenticator de nuestro móvil y configurar una nueva cuenta. Ahí nos permite añadirla desde un código QR o desde un clave manual. Elegimos la primera opción y escaneamos el código que obtuvimos. Automáticamente se nos añadirá la cuenta a la aplicación y como veréis hay un pequeño reloj en la parte derecha que indica el tiempo de validez de la contraseña. Una vez termina, se genera una nueva clave.
  5. Acceder al sistema
    Si todo está correcto, la próxima vez que se intente acceder al sistema recién configurado veremos que para hacer efectivo el acceso será necesario la verificación en dos pasos. La contraseña y la clave aleatoria.
    javier@local> ssh remote_host
    Verification code: 
    Password: 
    Welcome to Ubuntu 12.10 (GNU/Linux 3.5.0-18-generic i686)
    
     * Documentation:  https://help.ubuntu.com/
    
    
    javier@remote> 
    
    En caso de que alguna de las dos no sea correcta, el sistema no permitirá el acceso.
Sin duda es una forma muy útil de tener un extra se seguridad a muy bajo precio y aparte del software aquí comentado, lo único que se necesita es que ambos equipos (móvil y equipo) estén con la hora sincronizada (NTP), para que la clave generada - clave esperada coincidan.
Más información en, www.howtogeek.com y en Google-authenticator wiki

La entrada SSH en dos pasos la puedes leer en Puppet Linux.


No hay comentarios :

Publicar un comentario

Formulario de contacto

Nombre

Correo electrónico *

Mensaje *

Últimos comentarios