¡Hola! En este segundo tutorial del año voy a enseñar a proteger el acceso a un usuario de Ubuntu con la gran herramienta de ElevenPaths (la división de ciber-seguridad de Telefónica) llamada Latch.
Este tutorial es un paso a paso acerca de cómo aplicar Latch para proteger el login, y lo hice porque ninguno de los tutoriales que encontré está tan bien detallado.
Comencemos.
¿Qué es Latch?
En caso de que no sepas qué es Latch (y lo útil que puede ser), comparto el video institucional en español que se encuentra en YouTube:
Latch es un servicio móvil que permite agregar un nivel extra de seguridad a las cuentas y servicios online. Proporciona al usuario la capacidad de desconectar sus cuentas con un solo toque cuando no las esté utilizando, para ayudar a evitar usos no autorizado.
¿Cómo proteger el login con Latch?
Notas iniciales:
Este tutorial se realizó usando Ubuntu 16.04 (desktop amd64) recién instalado sobre una máquina virtual. Al instalar el S.O. elegí que me pida la contraseña al loguearme.
Es importante destacar que necesitamos descargar la app para teléfonos que nos provee Latch. Actualmente está disponible para:
- Android
- iPhone
- Blackberry
- Firefox OS
- Windows Phone
Crear la app y obtener el plugin:
Lo primero que debemos hacer es crear la aplicación que vamos a usar. Para esto, debemos acceder al área de desarrolladores de Latch, y registrar una cuenta (o acceder en caso de que ya dispongamos de una).
Una vez logueados, creamos una aplicación. A tener en cuenta, usando el plan gratuito solo podemos tener dos aplicaciones creadas con 50 usuarios.
En este caso, la voy a llamar «Ubuntu MMV».
Ahora debemos crear una operación para el login. Una operación se describe de la siguiente manera:
Las operaciones son el medio por el que puedes conseguir que tus usuarios protejan y desprotejan distintas funciones de tu servicio. Por ejemplo, si fuese un servicio bancario online, podrías tener una operación asociada al proceso de autenticación, otra asociada a realizar transferencias internacionales y una tercera para transferencias superiores a un determinado límite. Tus usuarios verían tres entradas bajo tu nombre de servicio en sus apps móviles que podrían proteger de modo independiente.
Fuente: F.A.Q.
Esta operación se puede crear desde la misma pantalla en la cual creamos la aplicación, justo debajo del panel principal. Yo la llamaré «login».
Si deseamos usar una OTP (one-time password, contraseña de un solo uso) solo tenemos que desplegar el primer select de la operación y seleccionar «OTP – Mandatory». Esto nos pedirá un código (el cual nos entregará la app de Latch) cada vez que ingresemos a nuestra cuenta.
Una vez esté lista la operación, hacemos click en «Añadir» y quedará configurada en nuestra app. Nos dará un token que usaremos más adelante.
A continuación debemos descargar el plugin para UNIX que provee Latch. Esto se hace desde el menú lateral, en «Documentación y SDKs > Plugins y SDKs».
Bajamos hasta encontrar el plugin y clickeamos en «Descargar».
Ese botón nos lleva al repositorio de GitHub de ElevenPaths. Allí, debemos hacer click en «Clonar o descargar» y después click en «Descargar ZIP».
Por defecto Firefox guarda las descargas en la carpeta «Descargas», ahí encontraremos el archivo ZIP.
El cual podemos extraer en la misma carpeta de Descargas.
Instalar el plugin:
Lo primero que necesitamos es actualizar el sistema. Para eso, usamos el clásico:
sudo apt-get update
Ahora instalaremos un compilador de C++ (gcc).
sudo apt-get install gcc make
Por último obtendremos las librerías libpam-dev, libcurl-dev y libssl-dev.
sudo apt-get install libpam0g-dev libcurl4-openssl-dev libssl-dev
Ahora, debemos acceder a la carpeta master del plugin, y haciendo click derecho en cualquier espacio vacío, clickeamos en «Abrir en la Terminal«. De esta manera tendremos acceso a esa carpeta desde la consola.
Ahora ejecutamos el siguiente comando para iniciar la instalación del plugin.
./configure prefix=/usr sysconfdir=/etc && make && sudo make install
En un punto nos pedirá la confirmación de sudo. Simplemente ingresamos nuestra contraseña y pulsamos Enter.
Cuando haya finalizado la instalación, accedemos a la carpeta /etc
, la cual se encuentra en la raíz. Podemos acceder desde la ventana de carpetas haciendo click en «Computer» (creo que en español es «Equipo»). Dentro deberíamos encontrar una carpeta llamada «latch».
Si ingresamos a esa carpeta, encontraremos dos archivos: «latch.accounts» y «latch.conf».
Ambos archivos están configurados como solo lectura. Únicamente nos interesa el archivo de configuración, así que lo abriremos con gedit (algo así como el Notepad de Windows o el TextEdit de Mac) a través de la Terminal. Para ello, abrimos esa carpeta con la Terminal y ejecutamos:
sudo gedit latch.conf
Entonces se nos abrirá la siguiente ventana:
Ahora debemos obtener los siguientes datos desde el panel de aplicación de Latch:
- Application ID
- Secrey key
- Operation ID
Y pegarlos en la sección correspondiente del documento de configuración. Una vez hecho esto, click en «Guardar» y cerramos el programa (gedit).
A continuación debemos mover el archivo de PAM (Pluggable Authentication Modules) llamado «pam_latch.so» al directorio correspondiente. El archivo se encuentra, tras la instalación, en /usr/lib
.
En el caso de Ubuntu, el directorio de PAMs está en /lib/x86_64-linux-gnu/security
.
sudo mv /usr/lib/pam_latch.so /lib/x86_64-linux-gnu/security
Una vez hecho esto, debemos acceder a los archivos de gestión de sesiones (LightDm en Ubuntu). Estos se encuentran en la carpeta /etc/pam.d
, la cual debemos abrir en el terminal.
El primer archivo que vamos a editar no es de LightDm, pero también contribuye al login. Precisamente así se llama: «login».
sudo gedit login
Una vez se haya abierto gedit, buscamos (Ctrl + F) lo siguiente: CONSOLE_GROUPS.
Esto nos servirá de guía, aunque es básicamente ir a la columna 30 (aproximadamente) e introducir el siguiente comando de autorización:
auth required pam_latch.so config=/etc/latch/latch.conf accounts=/etc/latch/latch.accounts operation=login otp=yes
En caso de no haber seleccionado el OTP en la operación «login» desde el panel de Latch, debería estar configurado como otp=no
Lo mismo haremos en los archivos «lightdm» y «lightdm-autologin». Este último también controla el acceso cuando un usuario cierra la sesión, así que si no queremos que nos pida la OTP cada vez que se ponga «en reposo» (a.k.a «hibernación»), podemos establecer otp=no
Parear el sistema:
Para conocer las opciones que provee el plugin, podemos simplemente escribir «latch» en la Terminal, y nos aparecerá información al respecto.
Para empezar el pareado, debemos abrir nuestra app móvil de Latch (en mi caso, Android) y añadir un nuevo servicio.
Hacemos click en «Parear con Latch».
Y generamos un nuevo código.
Entonces nos dará el código que debemos ingresar en la Terminal:
Esto se hace de la siguiente manera:
latch -p CÓDIGO
Una vez hecho esto, la app nos avisará que se ha pareado con éxito.
Entonces nos va a aparecer la imagen y nombre de la aplicación en el inicio de la app:
¡Y listo! El pareado está hecho.
Ahora, para comprobar el estado del servicio Latch-Usuario ingresamos:
latch -s
Como podemos ver, no está bloqueado el sistema en general. Para ver el estado de las operaciones (en esta caso solo tenemos el login, pero podríamos restringir el acceso a los comandos «su» y «sudo», y al SSH, lo cual implicaría crear otras operaciones y modificar otros archivos del sistema), podemos usar el siguiente comando:
latch -o NOMBRE_OPERACION
Como se puede apreciar, la operación de login no está bloqueada:
Prueba del servicio:
Para esto podemos sencillamente cerrar la sesión del usuario…
… bloquear la operación de login desde la app…
… y al intentar acceder con la contraseña correcta…
… nos indicará que no es válida…
… y la app nos avisará de un intento de acceso:
Si desbloqueamos el servicio e ingresamos la contraseña correcta, la app nos enviará una OTP (tal y como lo configuramos).
La cual debemos ingresar en el nuevo campo…
… para poder iniciar sesión 🙂
Y listo. Ya tenemos nuestro Ubuntu protegido con un segundo factor de autenticación y OTP.
Agradecimientos:
- A todo el equipo de ElevenPaths que trabaja diariamente para ofrecer mejoras de ciber-seguridad, algunas de las cuales se encuentran como OpenSource.
- A la Universidad Nacional de Córdoba por proveer mirrors para la descarga de Ubuntu en Argentina.
Conclusión:
Bastante sencillo, pero definitivamente algunos requerimos un paso a paso para entenderlo.
Espero que el tutorial haya sido de utilidad. Nos leemos, ¡saludos!