23 diciembre 2013

Configurar Latch para proteger un servidor FTP

La empresa 11Paths ha presentado Latch, una servicio que hace las funciones de lo que han denominado pestillo digital, por el paralelismo al proteger al usuario incluso aunque le hayan robado sus llaves.

El sistema es brillantemente sencillo, se basa en minimizar el tiempo de exposición para lo que permite habilitar y deshabilitar el acceso a una cuenta, sea del tipo que sea, mediante una aplicación móvil.

Imaginamos que yo soy usuario de una página web que requiere usuario y contraseña. Si alguien obtiene esos datos podrá conectar sin problemas haciéndose pasar por mi. Me robará mi información. Latch es un interruptor que deja inactiva la cuenta cuando yo no la uso, además me avisará con una notificación en mi móvil si alguien trata de identificarse con mis credenciales y el acceso esta bloqueado.

Funciona de tal forma que a los sistemas en la nube de Latch nunca le llegarán datos del usuario, ni el nombre de usuario, ni la contraseña. Nada. Tan solo ordenes de activar y desactivar una aplicación.

Si eres un usuario es tan sencillo como descargar la aplicación móvil para iPhone, Android o Windows Phone y registrarte con un usuario y contraseña de Latch. Las webs o servicios que añadan soporte te pedirán que introduzcas un código que se genera desde el móvil para emparejarlos. Una vez hecho, en el móvil se mostrará un interruptor para abrir o cerrar el acceso.

En el caso de que quieras integrarlo en tu pagína web es tan sencillo como llevar a cabo un par de peticiones REST a su API, que está perfectamente documentada en la web desarrolladores de Latch. También hay SDKs para los lenguajes más populares como python, php, java, .NET, ruby o C. Si quieres usarlo en algún blog es aun más fácil, ya que tienen plugins para  los gestores de contenidos más conocidos, como Joomla, Wordpress, Drupal o incluso tiendas online como Prestashop. Tres clicks y está funcionando.

Para probarlo a fondo lo he integrado en el servicio GLFTPD, creando un par de scripts en bash. Los pasos han sido sencillos.

Lo primero fue darme de alta como desarrollador y crear un ApplicationID y Secretkey para mi aplicación. Estos datos son necesarios para hacer llamadas a la API, que tan solo permite tres funciones: emparejar/desemparejar dispositivos y comprobar el estado de un usuario.

Añadir una nueva aplicación.

Para activar el servicio los usuarios deben emparejar sus móviles y mi FTP, para luego poder comprobar si está habilitado o deshabilitado el acceso. Así que para registrarlos cree un script que pide el código que genera el móvil. Con este código del móvil, junto al ApplicationID y el Secret genero una petición HTTP contra el servicio de Latch que devuelve un hash de usuario denominado AccountID y que guardaré en un nuevo fichero con una relación de usuario:hashAccountID



El script de registrar se llamará mediante un comando FTP del tipo "SITE", que más tarde configuraré en el GLFTPD.

El funcionamiento del registro funcionaría tal y como muestra las siguientes imagenes:

Fase de registro en Latch 1.

Fase de registro en Latch completada.

El siguiente paso es comprobar mediante otra petición HTTP si el usuario está habilitado o no justo después de que introduzca la contraseña. Para ello GLFTPD ejecutará un script (status.sh) en el que verificar el AccountID justo después de recibir el comando FTP "PASS". Si el usuario no se ha dado de alta (o no es usuario de Latch) se le deja pasar. Si es usuario y está a "off", se le bloquea el acceso mediante un "sleep" hasta que de timeout. Si está en "on" pues se le deja pasar.



Cuando un usuario tiene desactivado el servicio y trata de conectar, en el móvil se muestra la alerta y se prohíbe el acceso:

Aplicación Latch con bloqueo activado.


MEEEC! El servicio está protegido.

También hay que habilitar un comando "SITE" para aquellos que quieran dejar de usar el servicio (¡seguro que ninguno!). Para ello, otro script.

Y por último, configurar el servidor GLFTPD (glftpd.conf) para que use los scripts. Por supuesto, hará falta hacer que 'wget' funcione dentro del chroot del servidor ftp.




6 comments :

patsi dijo...

Pues a ver si lo van implantando, porque tiene muy buena pinta!

Ahiezer Alvarez dijo...

muy bueno

Slurp dijo...

Slurp Slurp. Chema dejame seguir con esto. Slurp Slurp


Good job Alex

DudaRazonable dijo...

Después de haber leído el artículo tengo una duda al respecto. ¿Qué sentido tiene usar Latch, y por tanto, delegar parte de la gestión del proceso de autenticación en un 3º (con los riesgos que ello implica: el primero de disponibilidad) si existen mecanismos que ofrecen una protección equivalente, como puede ser un 2º factor de autenticación, y no necesita de delegar el proceso a un 3º?

Latch, desde mi modesta opinión, es una vuelta de tuerca al concepto de 2º factor de autenticación; donde además de un token (la app) se ha incluido la necesidad de un proveedor de servicios (11Patchs). Pero, al menos según puedo entender tras leer el post, si el token es comprometido ( el móvil con la app ) la arquitectura no proporciona mayor seguridad que cualquier otro mecanismo de 2 factores de autenticación. Y si el token no es comprometido, la seguridad es equivalente a cualquier mecanismo de 2 factores, como puede ser un token TOTP, usado entre otros por Google, Amazon, Dropbox, ...

Sinceramente, no lo veo.

Chema Alonso dijo...

Hola DudaRazonable,

Latch se ofrece con un 99,5% de SLA, por lo que la disponibilidad es alta. durante ese 0.5 % tendrías que decidir si bloqueas o no permites el acceso. En cualquier caso, asumirías un 0.5% del total de robos de identidad que pudiera tener una empresa.

Utilizar Latch en lugar de un token de segundo factor tiene ventajas porque es una arquitectura abierta que permite que el usuario gestione todas las identidades en un único punto, que se pueda aplicar a servicios en los que no es posible asumir costes altos, y poder tener además autorización de acciones en cualquier punto del servicio por medio de la granularidad.

En cuanto a otros segundos factores, ya traté esos temas en mi artículo, pero te los resumo en que la mayoría solo vale para el login, en que los tokens RSA son caros y la gente los pierde u olvida, los SMS son caros y difíciles de desplegar worldwide (Apple, Facebook o Microsoft no han sido capaces de hacerlo en sus servicios), y lo más importante, no permiten la gestión centralizada de todos.

Latch se ha diseñado desde el momento centrado en dar al usuario lo que el usuario necesita con la mayor de las facilidades, con el objetivo de que lo use. Un servicio que te permite poner y quitar pestillos a tus identidades digitales de una forma tan simple como hacer un clic en la identidad.

Jose dijo...

Hay alguna manera de conectar vsftpd? Ya que mi distribución es Enigma 2 (Usada por un Linux Center en el salón), tengo vsftp instalado en el server y no ejecuta .sh ya que no tiene habilitado el comando esa distro.


Saludos y gracias por el post!