Información
Actualidad
Aquí encontraras noticias de actualidad sobre Gnu Linux y Open Source.

Además de información sobre la comunidad LiGNUx.
Distribuciones y entornos
Información ordenada sobre los diferenes sistema operativos Gnu Linux y las diferentes opciones de entornos gráficos.
Tutoriales y guías
Todos los pasos e informaciones que puedes desear para tu día a día.
Tutoriales
Tutoriales
Programación
Programación
About Us
Get to know the people behind the code and the mission behind the work
how we handle data
Privacy
Security
Legal

Guía completa del gestor de contraseñas pass

24 octubre, 2020

Hoy os voy a presentar un tutorial en profundidad del administrador de contraseñas seguro y libre que llevo utilizan desde hace un par de años. El administrador en cuestión se llama pass. Es un interesante herramienta que funciona tanto desde línea de comandos como desde interfaz gráfica.  Asimismo, gracias a la comunidad entorno a ella, podemos integrarlo con GNU/Linux, Firefox, Android, etc.

¿Qué vamos a hacer?

En este tutorial crearemos nuestro gestor de contraseñas. Administraremos y sincronizaremos las contraseñas entre nuestro dispositivo Android y dos ordenadores GNU/Linux mediante la integración con git que nos ofrece pass.

Diagrama sincronización password-store by:wakutiteo

¿Qué es pass?

pass, the standard unix password manager

pass es un gestor de contraseñas muy simple que guarda las contraseñas en archivos cifrados con gpg2 utilizando claves asimétricas. Este gestor nos permite añadir, eliminar, editar, sincronizar, generar y editar nuestras contraseñas. Para más información acerca de pass podéis consultar este artículo.

Instalación y configuración

Instalación

Instalamos nuestro nuevo gestor de contraseñas pass, y git para sincronizar las contraseñas.

Configuración

Creamos una clave GPG que utilizaremos para cifrar y descifrar las contraseñas:

Vamos introduciendo los siguientes valores:

  • Su elección: 1
  • ¿De qué tamaño quiere la clave? (3072) 4096
  • ¿Validez de la clave (0)? 0
  • ¿Es correcto? (s/n) s
  • Nombre y apellidos: John Doe
  • Dirección de correo electrónico: johndoe@email.com
  • Comentario:
  • ¿Cambia (N)ombre, (C)omentario, (D)irección o (V)ale/(S)alir? V

Acto seguido nos pedirá cuál queremos que sea nuestra contraseña maestra para la clave. La contraseña debe ser segura dado que con ella, podremos acceder a todas las contraseñas que guardaremos en pass.

Generando clave gpg para password-store

Tras introducir la contraseña, se nos generará la clave gpg. Obtenemos el key id de nuestra clave haciendo este sencillo paso. La reemplazamos por el siguiente <KEY_ID>:

Obtener hash para password-store init

A partir de aquí ya podemos añadir, modificar y eliminar contraseñas. Por ejemplo, para agregar una contraseña de la web lignux.com:

Añadir contraseñas con pass password-store

Más adelante explicaré como gestionar las contraseñas en profundidad.

Obtener el KEY_ID de nuestra clave GPG

Mostramos las claves gpg guardadas en nuestro sistema:

Obtenemos las claves GPG

Buscamos el bloque de la clave que corresponde a pass. En mi caso solo tengo una clave, pero si tenéis más de una, la podéis identificar por la fecha, nombre o correo electrónico.

Dentro del bloque de clave identificada, nuestra key id es el código alfanumérico mostrado después del cifrado (rsa4096) que utilizamos en nuestra clave. En mi caso, mi key id es: 81F0CD4B06C52998.

 

Migración a pass

En caso de que ya tengamos un gestor de contraseñas y queramos importar todas nuestras contraseñas a pass, la comunidad de pass nos lo facilita la tarea con una serie de scripts. En el momento de escribir este artículo, hay scripts «aceptados/oficiales» para importar contraseñas desde los siguientes administradores de contraseñas:

  • 1Password
  • KeepassX
  • Keepass2
  • Figaro's Password Manager
  • Lastpass
  • Ked Password Manager
  • Revelation Password Manager
  • Password Gorilla
  • PWSafe
  • KWallet
  • Roboform
  • pwsafe
  • Firefox (su administrador de contraseñas integrado)

Podemos consultar todos estos scripts aquí.

Administración contraseñas

Listar todas las cuentas/contraseñas:

Mostrar una contraseña en concreto:

Con el parámetro -c copiamos la contraseña al portapapeles:

Buscar contraseñas por texto, en esta caso «wakutiteo» que listará todas las cuentas con ese nombre de usuario:

Añadir contraseña:

Generar un contraseña segura de 15 caracteres de longitud para nuestro usuario de Wikipedia:

Eliminar contraseña:

Administración de contraseñas con interfaz gráfica

Si preferimos utilizar una interfaz gráfica, tenemos el programa multiplataforma QtPass licenciado bajo la GPLv3. Como el propio nombre indica, es una interfaz escrita en Qt, por lo que tendrá mejor integración en los entornos de escritorio KDE Plamas, LXQt, etc. Pero lo podremos utilizar con cualquier DE. Procedemos a instalarlo:

Me gustaría señalar que este programa integra, una opción para hacer git pull y git push de manera automática. Os invito a investigar más acerca de QtPass en su página web.

QtPass

Organización de datos

pass no nos impone ninguna esquema o manera de organizas nuestras contraseñas en particular, de hecho, por defecto, cuando creamos una nueva contraseña con pass insert solo contiene la contraseña. Sin embargo, en la mayoría de los casos no es suficiente. A menudo, además de la contraseña, también queremos guardar el nombre de usuario, la URL de la web, preguntas secretas/de verificación, observaciones/notas, etc.

Para editar, o si todavía no existe, crear, una contraseña:

Esto, nos abre un editor de texto en el que podemos escribir nuestra propia estructura sin ningun tipo de limitación. No obstante, desde el proyecto pass nos recomiendan la siguiente:

Paso a explicaros la estructura de los datos de esta contraseña:

  1. Contraseña.
  2. Dirección de la página. También puede ser, como en este caso, una expresión regular de la dirección, para incluir por ejemplo, los subdominios que pueda tener.
  3. Nombre de usuario o correo electrónico.
  4. Pregunta de verificación que nos hacen después de iniciar sesión para dar aún más seguridad al servicio.
  5. PIN de soporte telefónico.

Notas:

  • El único campo obligatorio es el de la contraseña.
  • Más adelante integraremos pass con Firefox, por lo que debemos prestar especial atención al campo URL. Puesto que Firefox nos permitirá auto-rellenar los formularios de sesión con unas contraseñas u otras en función de la página web en la que nos encontremos basándose en el campo URL de las contraseñas.

Carpetas

Para un organización mayor, podemos utilizar carpetas. Yo os recomiendo la estructura Servicio/usuario porque si tenemos más de un usuario en ese Servicio podemos añadir otro en Servicio/usuario2. Así, si queremos buscar nuestros usuario de Servicio simplemente, sabemos que tenemos que acceder a Servicio y dentro tendremos todos sus usuarios.

Un ejemplo de la organización de la cual os hablo podría ser este:

Donde tendríamos dos cuentas de usuario en el correo electrónico de Disroot, un usuario en LiGNUx y otro en Wikipedia.

Sincronización

En cada dispositivo nuevo que queramos añadir a la sincronización, debemos importar la clave privada GPG y clonar el repositorio git con nuestras contraseñas. El flujo de trabajo cuando hay alguna modificación en las contraseñas es el siguiente:

  1. Modificamos, creamos o eliminamos una contraseña desde uno de los dispositivos.
  2. Desde el mismo dispositivo, subimos los cambios al repositorio git.
  3. Desde el resto dispositivos, bajamos los cambios del repositorio git.

Nota: Todo esto se hace manualmente. La subida y bajada de datos no es automática.

Diagrama sincronización password-store

Para  poder explicarme de manera más precisa, puntualizaré lo que haremos con cada uno de los dispositivo:

  • Ordenador de sobremesa Debian (izquierda): aquí es donde acabamos de inicializar nuestro gestor de contraseñas pass. Subiremos las contraseñas con el repositorio de git. Porque más adelante las descargaremos desde los otros dispositivos para sincronizarlas con el servidor.
  • Móvil Android (centro): Configurar e instalar pass, sincronizar las contraseñas con el repositorio.
  • Ordenador portátil Linux Mint (derecha): Configurar e instalar pass, sincronizar las contraseñas con el repositorio.
  • Servidor git (centro superior): aquí subiremos nuestras contraseñas cifradas.

Sincronización entre Debian, Android y Linux Mint

1. Configuración previa

Para poder sincronizar las contraseñas con git, primero tenemos que crear un repositorio en algún servidor como GitLab, GitHub, un servidor propio, etc. Yo utilizaré GitLab. Para ello primero nos tenemos que crear una cuenta si no tenemos ya una. Después crearemos un repositorio privado:

Hacemos clic en «New project».

Seleccionamos «Create blank project».

Creamos un nuevo proyecto, dándole un nombre a nuestro repositorio y muy importante seleccionar privado para que solo podamos acceder nosotros al repositorio.

Con el repositorio listo, pasamos a configurarlo y clonarlo en Debian.

2. Configuración del ordenador Debian

  1. Inicializamos el repositorio git en pass:

2. Definimos el origin de nuestro repositorio. Reemplazamos la URL por la nuestra propia:

Podemos obtener nuestra URL desde Clone > Clone with HTTPS en nuestro repositorio:

3. Subimos las contraseñas/cambios al repositorio (nos pedirá el usuario y la contraseña de nuestro usuario de git):

Si todo ha ido bien, al recargar la página del repositorio git veremos que ya tenemos nuestras contraseñas en el repositorio con la extensión .gpg.

3. Instalación y configuración en el ordenador Linux Mint

Instalación

Al igual que en el ordenador Debian, instalamos pass y git:

Configuración

Clonamos nuestro repositorio, reemplazad la URL por la de vuestro repositorio:

Esto nos crea una carpeta con el nombre del repositorio, en mi caso «pass». Renombramos esta carpeta por «~/.password-store»:

Hacemos esto porque pass, por defecto, busca las contraseñas  en esa ruta. Comprobamos que nos detecte las cuentas:

Pero si intentamos ver la contraseña de alguna cuenta en concreto...:

Nos salta el error gpg descifrado fallido: No tenemos la clave secreta.

Es por ello que, ahora tenemos que volver al ordenador Debian para obtener la clave privada que nos servirá para descifrar nuestras contraseñas que están cifradas con nuestra clave pública. Esto es así porque utilizamos cifrado asimétrico.

4. Exportación de la clave privada desde el equipo Debian

Exportamos clave privada. Reemplazamos <KEY_ID> por la nuestra.

Con la clave privada exportada, la copiamos a nuestro equipo con Linux Mint y seguimos con su configuración. Muy importante mantener segura nuestra clave privada, si alguien consiguiese nuestra clave privada podría descifrar todas nuestras contraseñas.

5. Importación de la clave privada al equipo Linux Mint

Antes de nada, debemos tener copiada la clave privada que acabamos de exportar en nuestro equipo Linux Mint. A continuación, entramos con la terminal al directorio en el cual hemos copiado la clave.

Importamos la clave privada copiada del equipo Debian:

Nos preguntará por la contraseña maestra, o lo que es lo mismo, la contraseña de la clave privada, es la misma que hemos definimos en la sección de Instalación y configuración para generar la clave GPG. Nos la pide por seguridad: si alguien se hiciese con nuestra clave privada, además necesitaría saber nuestra contraseña.

Si ahora intentamos obtener la contraseña Lignux/wakutiteo como hemos hecho hace un rato, ahora sí que nos lo permitirá dado que, hemos importado la clave privada que nos hacía falta para descifrar las contraseñas.

Nos pedirá de nuevo la contraseña. Y como podéis observar, ya podemos acceder a las contraseñas.

6. Instalación y configuración en Android

Instalación

Para empezar, necesitamos instalar dos aplicaciones:

  1. Password Store: es el administrador de contraseñas con mayor compatibilidad con pass en Android. F-Droid | Play Store
  2. OpenKeychain: Password Store necesita OpenKeychain para cifrar y descifrar las contraseñas. F-Droid | Play Store

Configuración

Copiamos también aquí, en nuestro móvil Android, clave privada que hemos generado antes en el ordenador Debian para el ordenador Linux Mint para descifrar las contraseñas.

Abrimos OpenKeychain, y en la pantalla de bienvenida damos en «Importar clave desde fichero». Buscamos y seleccionamos la clave privada copiada en nuestro almacenamiento interno del paso anterior. Hacemos clic en «Importar»:

Abrimos Password Store, en la pantalla de bienvenida hacemos clic en «Clonar desde servidor». En el dialogo emergente «Ubicación del repositorio», seleccionamos «Oculto (recomendado)». Rellenamos los campos con nuestros los nuestros:

Damos a «¡Clonar!» y escribimos la contraseña de nuestro usuario git. Automáticamente, nos dirige a la pantalla principal en la cual se nos listan todas las contraseñas:

Si intentamos acceder a una de nuestras contraseñas, nos saltará un mensaje (toast) en la parte inferior:

«¡No se ha seleccionado ningún proveedor OpenGPG!»

Para solucionarlo vamos a Ajustes > Cifrado (sección) > Selecciona un proveedor OpenPGP y seleccionamos «OpenKeychain».

  1. A continuación, clicamos en la siguiente opción «Selecciona la llave OpenPGP» y en el dialogo «¿Permitir el acceso a OpenKeychain?», permitimos el acceso.
  2. Se nos abrirá una nueva ventana con las claves importada en OpenKeychain, seleccionamos la que necesitamos para descifrar las contraseñas de pass y damos en «De acuerdo»:

Ahora si intentamos acceder de nuevo a nuestras contraseñas, nos saltará el mensaje «¿Permitir el acceso a su clave?» que permitiremos y luego nos pedirá la contraseña maestra.

Finalmente, tenemos pass funcionando en nuestro Android.

Solucionar: dialogo «Selecciona dónde almacenar tus contraseñas»

Mientras usamos la aplicación puede que nos salte este mensaje.

Para solucionarlo:

  1. Damos a «Cancelar»
  2. Desmarcamos la opción «Repositorio externo» de Git en los ajustes.

Uso de la aplicación

El uso de la aplicación Password Store es sencillo. En la pantalla principal se nos listan todas nuestras contraseñas y en parte inferior derecha nos permite añadir nuevas contraseñas. Si accedemos a una de las contraseñas, se nos copia automáticamente la contraseña en cuestión al portapapeles. Además, desde ahí podemos compartir, editar y copiar la contraseña.

Si realizamos algún cambio en las contraseñas o si queremos obtener las modificaciones hechas desde nuestros otros dispositivos, debemos sincronizar los cambios con el repositorio git. Para ello:

  • Vamos a la pantalla principal > Menú de opciones > «Sincronizar con el servidor»

Sincronización de las contraseñas con git

Si estamos utilizando la sincronización de contraseñas con git, cada vez que hacemos un cambio se hace un git commit del cambio automáticamente. Para subir los cambios locales a nuestro repositorio escribimos:

Y si desde otro dispositivo hemos realizado cambios y los hemos subido al repositorio con un pass git push, y queremos obtener/actualizar esos cambios en nuestro ordenador actual, hacemos:

De esta manera podemos mantener actualizadas las contraseñas entre nuestros dispositivos.

Integración de Firefox con pass

Para integrar pass con Firefox, primero debemos tenerlo configurado tal y como hemos hecho en los pasos anteriores.

La integración la haremos con la extensión passff. Para que la extensión se pueda comunicar con pass, necesitamos instalar passff-host que funciona como intercomunicador:

Nos aseguramos de tener instalado un pinentry (dialogo gráfico que nos pregunta por las contraseñas). Si utilizamos un entorno GTK+ (GNOME, Xfce, LXDE, Cinnamon, etc.):

O si utilizamos un entorno QT (KDE Plasma o LXQt):

Para finalizar con la integración, instalamos la extensión para Firefox passff desde aquí.

Si todo ha ido bien, al acceder a uno de los dominios de nuestras contraseñas, en el inicio de sesión nos aparecerá un «botón» en el campo de texto de usuario y contraseña con el cual nos auto-rellenará los campos (pidiéndonos antes la contraseña maestra).

Completado de contraseñas con zsh

Si utilizamos zsh como intérprete de comandos, podemos activar su plugin para que nos ayude a completar y buscar entre todas nuestras contraseñas. También se podría implementar el completado en bash y en fish.

Editamos el archivo de configuración de zsh:

Dentro del archivo buscamos plugins=(...). Y añadimos «pass» separándolo con un espacio o con una nueva línea:

Solución de errores

Error: gpg: No hay seguridad de que esta clave pertenezca realmente
al usuario que se nombra

Este error nos puede aparecer cuando intentamos insertar una nueva contraseña desde un ordenador del cual hemos clonado las contraseñas con un git clone. En nuestro caso sería el ordenador con Linux Mint.

El error también nos puede aparecer en ingles:

El error nos indica que la clave no tiene «confianza». Si nos fijamos, al listar las claves GPG del sistema, nos indica que la «confianza» de la clave es desconocida:

La solución, es dar confianza a la clave:

Entraremos en la consola de gpg e introducimos el comando:

Indicamos confianza «absoluta» con el número «5» y lo confirmamos:

Para salir de la consola de gpg escribimos:

Si ahora intentamos insertar una contraseña podemos observar que ya no nos salta ese error.

Conclusión

Como habréis podido observar, es un tutorial paso a paso bastante detallado. Sin embargo, no tiene mucha complejidad siguiendo estos pasos. En cuanto al pass, no es un administrador de contraseñas cualquiera, no. Es un administrador de contraseñas al estilo Unix. Sí que es cierto que lleva un rato configurarlo e instalarlo en todos nuestros dispositivos y que al principio nos puede parecer un poco confuso, pero a cambio, nos ofrece un control absoluto sobre nuestras contraseñas.

Como os suelo decir si tenéis alguna duda preguntad por los comentarios o por el grupo de Telegram de LiGNUx @liGNUx.

Espero que os haya sido útil 🙂

¡Nos leemos!

Escrito por wakutiteo

Suscribirse
Notificarme las
guest
8 Comentarios
Los más recientes
Los más antiguos Más votados
Feedbacks en línea
Ver todos los comentarios
LiGNUx trabaja sobre una licencia de Creative Commons Reconocimiento 4.0 Internacional.
cloudflagpaperclipprinterfile-emptyfilm-playcamera-videopicturelaptop-phonebriefcasecrossmenu
linkedin facebook pinterest youtube rss twitter instagram facebook-blank rss-blank linkedin-blank pinterest youtube twitter instagram