News: Nuevo plugin de latch para sistemas basados en Unix, Linux y Mac

martes, 23 de septiembre de 2014

El nuevo plugin de latch para Unix permite agrupar la funcionalidad ofrecida por plugins anteriores como el latch-plugin-ssh o latch-plugin-auth-ubuntu, añadiendo además, la posibilidad de proteger servicios como "sudo", "su" y otros que utilicen autenticación PAM.

Hasta ahora, se disponía de un paquete de Latch para Ubuntu y otro para SSH, pero este nuevo plugin trata de ser más genérico. En el paquete del plugin, dentro de la carpeta examples/, se ofrecen ejemplos de cómo configurar diferentes servicios (sudo, ssh, el login...). Están organizados por sistemas en los que se ha probado el plugin: Debian, Ubuntu, CentOS, Fedora y OS X. En cualquier caso, es necesario configurar manualmente algunos ficheros específicos para poder integrar Latch en los servicios. Veamos cómo.

Compilando e instalando el paquete

Para poder compilar e instalar el código fuente del plugin, es necesario utilizar gcc y el make . En muchos sistemas vienen instalados por defecto, pero si no es así, se pueden instalar fácilmente con los siguientes comandos:

Para Debian/Ubuntu y CentOS/Fedora/RedHat respectivamente:

sudo apt-get install gcc make
sudo yum install gcc make

Además, son necesarias tres librerías: libpam-dev, libcurl-dev y libssl-dev. Para Debian/Ubuntu y CentOS/Fedora/RedHat respectivamente:

sudo apt-get install libpam0g-dev libcurl4-openssl-dev libssl-dev
yum install pam-devel libcurl-devel openssl-devel

En el caso de que el gestor de paquetes no encuentre alguna de las librerías y para usar las últimas versiones será conveniente actualizar el listado de paquetes disponibles.

Para Debian/Ubuntu y CentOS, Fedora o RedHat respectivamente:

sudo apt-get update
sudo yum update

Con los prerrequisitos necesarios, ya será posible compilar e instalar el paquete. Desde el directorio raíz del paquete, debemos ejecutar:

./configure && make && sudo make install

Tras esto, se habrá creado una librería dinámica "pam_latch.so" en la ruta  "/usr/local/lib/" que hay que situar en el directorio PAM de nuestro sistema operativo. Este directorio varía en función del sistema, aunque habitualmente se encontrará en "/lib/security/", "/lib64/security/" o "/lib/*/security/". En Mac OS X, el directorio PAM se encuentra en "/usr/lib/pam/".

sudo mv /usr/local/lib/pam_latch.so $PAM_DIR

Listado de librerías dinámicas PAM en Ubuntu 13.10

También hay que mover otros dos archivos binarios (latch y latch-shell), que tras la instalación se encontrarán en /usr/local/bin/. El siguiente paso es modificar los permisos con estos dos comandos:

sudo mv /usr/local/bin/latch /usr/local/bin/latch-shell /usr/bin/
sudo chmod 4755 /usr/bin/latch /usr/bin/latch-shell

Archivos binarios de Latch en /urs/bin/

Y por último, hay que configurar el servicio que se desea proteger. Para ello, nos situamos en la carpeta /etc/pam.d/ (donde se encuentran todos los archivos de configuración PAM), y editamos el fichero de configuración correspondiente. Veamos el ejemplo concreto para Ubuntu, aunque el proceso es similar en el resto de sistemas operativos.

Ejemplo: Login en Ubuntu 13.10

Para proteger el login en Ubuntu 13.10, hay que modificar tres ficheros: lightdm-autologin, lightdm y login. En primer lugar, es recomendable hacer una copia de seguridad de todos los ficheros que vamos a modificar, y así en el caso de querer desinstalar el plugin, será posible restaurar la configuración anterior fácilmente.

Abrimos los ficheros y añadimos nuestro módulo de autenticación de Latch a la configuración. Generalmente, se debe añadir justo después del módulo PAM que autentica:

auth required pam_latch.so config=/etc/latch/latch.conf accounts=/etc/latch/latch.accounts operation=login otp=yes

Es importante destacar que si nos fijamos en la variable "operation", hemos puesto la etiqueta "login". Esta etiqueta es la que utilizaremos cuando configuremos el plugin más adelante.

Fichero de configuración PAM lightdm después de añadir el módulo PAM de Latch

Podemos fijarnos en la carpeta examples/ubuntu/etc/pam.d/ para ver cómo configurar el resto de ficheros.

Configuración del plugin

Una vez completada la instalación, debemos configurar nuestro plugin. Para ello, es necesario en primer lugar obtener el "Application ID", el "Secret" y crear las operaciones necesarias para el plugin. En este caso, únicamente vamos a crear una operación (Login), pero es probable que en el futuro queramos crear más operaciones para así proteger cada uno de los servicios con un cerrojo ("latch") independiente.

Para obtener el "Application ID" y el "Secret" (fundamentales para integrar Latch en una aplicación), es necesario contar con una cuenta de usuario desarrollador en la página de Latch accediendo a la sección "Área de desarrolladores". Activada la cuenta, el usuario ya está en disposición de crear aplicaciones con Latch y acceder a la documentación para desarrolladores, incluyendo los SDKs y los plugins existentes. Para ello el usuario debe iniciar sesión en la página web de Latch y acceder de nuevo a la sección "Área de desarrolladores", desde donde podrá observar sus aplicaciones, a través de la sección "Mis aplicaciones" del menú lateral. Desde el botón "Añadir una nueva aplicación", el usuario indicará el nombre que desea que aparezca en la aplicación móvil.

Al crear la aplicación, se muestran dos datos fundamentales: el "ID de aplicación" y el "Secreto". Además existen otros parámetros adicionales entre los que están el icono de la aplicación que aparecerá en el dispositivo del usuario, si se incluirán operaciones internas (en caso de que se crearan) y si la aplicación va a soportar o no OTP (One Time Password). En este ejemplo añadimos una operación (a la que hemos llamado Login) y establecemos el OTP como opcional. El ID que aparece es el que tendremos que añadir dentro del fichero de configuración "latch.conf".

Detalle de la página donde se añade la nueva aplicación, tras crear la operación "Login"

Una vez finalizada la configuración y guardados los cambios, la nueva aplicación aparecerá en el listado de aplicaciones del usuario. El desarrollador podrá editarla en el momento que desee. El ID de la aplicación aparecerá tachado, pero su valor sigue siendo válido y también debe ser utilizarlo para configurar nuestro plugin.

Detalle de la página que nos permite editar la aplicación que acabamos de crear.

Edición del fichero de configuración "latch.conf"

Una vez que ya tenemos nuestros datos de configuración, abrimos el fichero de configuración "latch.conf" que tras la instalación se  ha creado en /etc/latch/, y lo editamos con los parámetros obtenidos.

Fichero de configuración "latch.conf" tras la instalación del plugin

Para este ejemplo, únicamente será necesario configurar el app_id, el secret_key y la operación que hemos creado (login) con su "OperationId" generado previamente.

Detalle de las operaciones predefinidas por defecto en el fichero de configuración de Latch

Usando el plugin

Para empezar a utilizar latch en nuestro sistema, es necesario en primer lugar parear nuestra cuenta. Necesitamos lógicamente tener descargada la aplicación de Latch en el móvil para Android, iPhone o Windows Phone y después seguir los siguientes pasos:

  • Desde la aplicación móvil de Latch, generamos el código de pareado, presionando previamente sobre "añadir nuevo servicio" en la parte inferior de la aplicación.

Captura que muestra cómo generar un nuevo código de pareado en la aplicación móvil

  • En el equipo, abrimos un terminal y ejecutamos el comando "latch -p ", utilizando el código de pareado generado en el paso anterior. 

Terminal en el que se ejecuta el comando de pareo de cuenta de Latch.

Ahora el usuario ya puede bloquear y desbloquear su login, así como configurar la autenticación con una contraseña de un solo uso, añadiendo una protección extra al acceso a nuestro sistema. 



Pantalla de autenticación en Ubuntu 13.10 con la opción OTP de Latch activada,
tras haber introducido la contraseña correctamente
Para desparear la cuenta, abrir un terminal y ejecutar el comando "latch -u". 


Iván Martín Vedriel
ivan.martin@11paths.com

14 comentarios:

  1. Buenas tardes,

    Estoy usando Ubuntu 14.04 cuando ingreso al directorio /etc/pam.d para buscar los ficheros: lightdm-autologin, lightdm y login. estos no esta.

    Estos son los que me aparecen:

    accountsservice chsh common-session gdm gnome-screensaver passwd su
    atd common-account common-session-noninteractive gdm-autologin login polkit-1 sudo
    chfn common-auth cron gdm-launch-environment newusers ppp xscreensaver
    chpasswd common-password cups-daemon gdm-password other samba

    Agradezco su ayuda,

    ResponderEliminar
    Respuestas
    1. Buenos días!

      Esos ficheros son los correspondientes a todas y cada una de las diferentes operaciones que usted quiera crear en la web de desarrolladores de Latch.
      En función del nombre que le ponga a cada una de ellas, los nombres de los archivos deberían ser iguales.
      Tiene algunos de estos archivos disponibles para Ubuntu en:

      https://github.com/ElevenPaths/latch-plugin-unix/tree/master/examples/ubuntu/etc/pam.d

      Saludos Cordiales!

      Eliminar
  2. Estoy con Ubuntu 14.04. No me establece $PAM_DIR

    ResponderEliminar
  3. Buenos días!

    $PAM_DIR lo entendemos como una ruta relativa que el propio usuario en función de donde tenga instalados los ficheros debe sustituir por el valor real.

    En Ubuntu 14.04 si usted no ha modificado nada tendría que sustituir el $PAM_DIR por la ruta:

    PAM_DIR=/lib/*/security

    Por lo que la línea en concreto quedaría de la siguiente manera:

    sudo mv /usr/local/lib/pam_latch.so /lib/*/security

    Reciba un cordial saludo del equipo de Eleven Paths.

    ResponderEliminar
  4. en centos 6.6 que archivos se deberian modificar para bloquear el acceso por ssh??

    Gracias.

    ResponderEliminar
    Respuestas
    1. En nuestro repositorio GitHub, dispone de ejemplos al respecto de los ficheros que ha de modificar para parear o bloquear cada servicio con Latch:

      https://github.com/ElevenPaths/latch-plugin-unix/tree/master/examples/centos/etc/pam.d

      Concretamente para SSH, debe añadir al directorio /pam.d de su CentOS el fichero "password-auth-sshd-latch" y modificar el fichero "sshd".

      Reciba un cordial saludo del equipo de Eleven Paths.

      Eliminar
  5. Buenos días,
    He instalado y configurado satisfactoriaente Latch para Ubuntu 14.04.
    Donde no he conseguido que funcione es en la pantalla de sesión bloqueada y solo funciona en la pantalla de inicio de sesión (y por supuesto sudo, su y sshd).

    ¿Hay alguna manera de activarlo para el "Lock Screen"?

    Gracias.

    ResponderEliminar
    Respuestas
    1. ¡Buenos días!

      Efectivamente, a día de hoy, ese proceso no es posible de bloquear. Nuestros compañeros de desarrollo están trabajando en la mejora del plugin para que en futuras versiones el bloqueo de dicho proceso sea posible.

      Como sabrá nuestro plugin es de acceso público y si está interesado y puede contribuir al desarrollo del mismo realzando un “Pull Request” sobre nuestro repositorio GitHub:

      https://github.com/ElevenPaths?tab=repositories

      Reciba un cordial saludo del equipo de Eleven Paths.

      Eliminar
  6. Buenas tardes,

    Tengo un Mac OSX Yosemite 10.10.1 y he seguido los pasos para la instalación de latch, concretamente la operación su. Una vez terminado y pareado con el terminal, abra o cierre el cerrojo todo sigue igual, siempre puedo ejecutar el comando.

    - ¿Hay alguna actualización/incompatibilidad con este OSX?
    - ¿Ha cambiado alguna cosa con respecto a cuando se publicó el post?

    Gracias

    ResponderEliminar
    Respuestas
    1. Buenas días!

      Le recomendamos que siga este manual al pie de la letra para descartar que haya cometido algún error en la ubicación de los archivos o en algún otro punto.

      https://latch.elevenpaths.com/www/public/documents/resources/plugin_manuals/es/MacOS.pdf

      Confirmarle que efectivamente es compatible con la versión Yosemite de MaxOS X.

      El problema que está tendiendo puede ser debido a alguna solución de seguridad (firewall o antivirus) que esté cortando la conexiones a Internet del software de Latch instalado en su máquina con el servidor de Latch. Porque damos por hecho que tiene Internet en su máquina MacOS X, ya que en caso de no tenerla conectada a Internet, nunca bloqueará Latch la sesión.

      Reciba un cordial saludo del Equipo de Eleven Paths!

      Eliminar
  7. Buenas tardes,

    He conseguido latchear el 'su' en Ubuntu 14 aunque me encontraba con un error a la hora de parear la aplicación con el movil. En concreto en el momento de usar el comando 'latch -p'.
    He tenido que apuntar manualmente a los ficheros de configuración, dejo el comando por si resulta util:
    latch -f /etc/latch/latch.conf -a /etc/latch/latch.accounts -p 'código de pareado'

    Un saludo y gracias por vuestro trabajo

    ResponderEliminar
    Respuestas
    1. Buenos días!

      Todo apunta a que ha habido una error en la ejecución de esta sentencia que es la que lleva a cabo la instalación del plugin de Latch en su máquina:

      ./configure prefix=/usr sysconfdir=/etc && make && sudo make install

      De cualquier manera y con el fin de poder ayudarle más personalizadamente, le rogamos canalice sus dudas a través del formulario a tal efecto disponible es:

      https://latch.elevenpaths.com/www/contact.html

      Reciba un cordial saludo del equipo de Eleven Paths.

      Eliminar
  8. Buenas, he configurado tal y como indican pero hasta ahora nada. He modificado el archivo sshd del directorio /etc/pam.d y he agregado el archivo password-auth-sshd-latch, incluso copiado los archivos binarios latch y latch-ssh-cmd, pero sigue logueando pese a que esta bloqueado. Que podria estar mal o que podria revisar.

    ResponderEliminar
    Respuestas
    1. Buenos días!

      Le rogamos canalice sus preguntas a través del servicio de soporte de Eleven Paths, donde le podremos ayudar de una forma más personalizada.

      Puede hacerlo enviando su consulta a: latch-help@support.elevenpath.com

      O bien dejándola en nuestro formulario: https://latch.elevenpaths.com/www/contact.html

      Saludos del equipo de Eleven Paths.

      Eliminar