Para los amantes del terminal Unix/Linux tener un gestor de contraseñas desde la línea de comandos es capital y una utilidad sencilla pero que cubre de sobra esta necesidad es pass. Con pass, cada contraseña "vive" dentro de un archivo cifrado gpg cuyo nombre es el título del sitio web o recurso que requiere la contraseña. Estos archivos cifrados pueden organizarse en jerarquías de carpetas, copiarlas de un ordenador a otro y, en general, manipularlas utilizando las herramientas estándar para el regex de archivos.
Pass hace que la administración de estos archivos de contraseñas individuales sea extremadamente fácil. Todas las contraseñas se localizan en ~/.password-store, y pass provee los comandos necesarios para que sea muy fácil agregar, editar, generar y recuperar contraseñas. Vamos a ver cómo instalarlo y las operaciones más comunes aunque os recomiendo echar un vistazo a su correspondiente man aquí o directamente en la consola.
Instalación (Ubuntu/Debian)
$ sudo apt-get install pass
Generar el par de claves GPG
$ gpg --gen-key
gpg: WARNING: unsafe ownership on homedir '/home/vis0r/.gnupg'
gpg (GnuPG) 2.1.15; Copyright (C) 2016 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Note: Use "gpg --full-gen-key" for a full featured key generation dialog.
GnuPG needs to construct a user ID to identify your key.
Real name: vis0r
Email address: hackplayers@ymail.com
You selected this USER-ID:
"vis0r"
Change (N)ame, (E)mail, or (O)kay/(Q)uit? O
We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
gpg: key E812D7261BE40AD9 marked as ultimately trusted
gpg: directory '/home/vis0r/.gnupg/openpgp-revocs.d' created
gpg: revocation certificate stored as '/home/vis0r/.gnupg/openpgp-revocs.d/61C23E3B0AC97802E16E8BAD21237AD48E9097E3.rev'
public and secret key created and signed.
pub rsa2048 2017-06-28 [SC]
61C23E3B0AC97802E16E8BAD21237AD48E9097E3
uid vis0r
sub rsa2048 2017-06-28 [E]
Iniciar el password store
$ pass init vis0r
mkdir: created directory '/home/vis0r/.password-store/'
Password store initialized for vis0r
Confiar en la clave generada
$ gpg --edit-key vis0r
gpg> trust
1 = I don't know or won't say
2 = I do NOT trust
3 = I trust marginally
4 = I trust fully
5 = I trust ultimately
m = back to the main menu
Your decision? 5
Añadir nuevas credenciales
$ pass insert email/hackplayers@ymail.com
Enter password for email/hackplayers@ymail.com:
Retype password for email/hackplayers@ymail.com:
Mostrar las contraseñas almacenadas disponibles
$ pass show
Password Store
└── email
└── hackplayers@ymail.com
Mostrar la contraseña en claro de una cuenta específica
$ pass email/hackplayers@ymail.com
123
Copiar la contraseña al portapapeles
$ pass -c email/hackplayers@ymail.com
Copied email/hackplayers@ymail.com to clipboard. Will clear in 45 seconds.
Borrar una cuenta
$ pass rm email/hackplayers@ymail.com
Are you sure you would like to delete email/hackplayers@ymail.com? [y/N] y
removed '/home/vmotos/.password-store/email/hackplayers@ymail.com.gpg'
Editar una contraseña existente con nano
$ pass edit Email/hackplayers@ymail.com
Generar una contraseñs automáticamente
$ pass generate Email/hackplayers@ymail.com 20
The generated password for Email/hackplayers@ymail.com is:
@JMUZaGM)r='ie/>0{8"
Generar una contraseña automáticamente sin símbolos
$ pass generate Email/hackplayers@ymail.com 20 -n
An entry already exists for Email/hackplayers@ymail.com. Overwrite it? [y/N] y
The generated password for Email/hackplayers@ymail.com is:
zvHKedJVcDYlF50tgsCd
Funcionalidad multilínea
Adicionalmente es posible guardar otra información como URL, pin, teléfono, etc,., Utiliza el siguiente comando:
$ pass insert Email/prueba@gmail.com -m
Enter contents of Email/prueba@gmail.com and press Ctrl+D when finished:
12345
URL: http://www.hackplayers.com
Info: web de hacking
Y no olvides asegurarte de que la primera línea contiene la password ya que es la que será copiada al portapapeles mediante la opción correspondiente.
Sincronización del almacen de contraseñas en otros sitios
Si creamos el password store en un repositorio Git podremos sincronizarlo en distintos sitios para tener disponible siempre las contraseñas.
$ pass git init
$ pass git remote add origin kexec.com:pass-store
Cada modificación creará un git commit asi que podremos sincronizar los cambios mediante pass git push y pass git pull, que llamarán a git-push o git-pull en el almacén.
$ pass git push -u --all
$ pass git pull
Extensiones
Pass soporta también el uso de extensiones. Para usarlas la variable PASSWORD_STORE_ENABLE_EXTENSIONS debe estar configurado a true.
La comunidad ha desarrollado unas cuantas extensiones bastante interesantes:
Clientes compatibles
La comunidad ha reunido también una impresionante lista de clientes e interfaces gráficas para varias plataformas:
Algunos usuarios han contribuido con scripts para ayudar a importar contraseñas de otros programas:
Pass hace que la administración de estos archivos de contraseñas individuales sea extremadamente fácil. Todas las contraseñas se localizan en ~/.password-store, y pass provee los comandos necesarios para que sea muy fácil agregar, editar, generar y recuperar contraseñas. Vamos a ver cómo instalarlo y las operaciones más comunes aunque os recomiendo echar un vistazo a su correspondiente man aquí o directamente en la consola.
Instalación (Ubuntu/Debian)
$ sudo apt-get install pass
Generar el par de claves GPG
$ gpg --gen-key
gpg: WARNING: unsafe ownership on homedir '/home/vis0r/.gnupg'
gpg (GnuPG) 2.1.15; Copyright (C) 2016 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Note: Use "gpg --full-gen-key" for a full featured key generation dialog.
GnuPG needs to construct a user ID to identify your key.
Real name: vis0r
Email address: hackplayers@ymail.com
You selected this USER-ID:
"vis0r
Change (N)ame, (E)mail, or (O)kay/(Q)uit? O
We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
gpg: key E812D7261BE40AD9 marked as ultimately trusted
gpg: directory '/home/vis0r/.gnupg/openpgp-revocs.d' created
gpg: revocation certificate stored as '/home/vis0r/.gnupg/openpgp-revocs.d/61C23E3B0AC97802E16E8BAD21237AD48E9097E3.rev'
public and secret key created and signed.
pub rsa2048 2017-06-28 [SC]
61C23E3B0AC97802E16E8BAD21237AD48E9097E3
uid vis0r
sub rsa2048 2017-06-28 [E]
Iniciar el password store
$ pass init vis0r
mkdir: created directory '/home/vis0r/.password-store/'
Password store initialized for vis0r
Confiar en la clave generada
$ gpg --edit-key vis0r
gpg> trust
1 = I don't know or won't say
2 = I do NOT trust
3 = I trust marginally
4 = I trust fully
5 = I trust ultimately
m = back to the main menu
Your decision? 5
Añadir nuevas credenciales
$ pass insert email/hackplayers@ymail.com
Enter password for email/hackplayers@ymail.com:
Retype password for email/hackplayers@ymail.com:
Mostrar las contraseñas almacenadas disponibles
$ pass show
Password Store
└── hackplayers@ymail.com
Mostrar la contraseña en claro de una cuenta específica
$ pass email/hackplayers@ymail.com
123
Copiar la contraseña al portapapeles
$ pass -c email/hackplayers@ymail.com
Copied email/hackplayers@ymail.com to clipboard. Will clear in 45 seconds.
Borrar una cuenta
$ pass rm email/hackplayers@ymail.com
Are you sure you would like to delete email/hackplayers@ymail.com? [y/N] y
removed '/home/vmotos/.password-store/email/hackplayers@ymail.com.gpg'
Editar una contraseña existente con nano
$ pass edit Email/hackplayers@ymail.com
Generar una contraseñs automáticamente
$ pass generate Email/hackplayers@ymail.com 20
The generated password for Email/hackplayers@ymail.com is:
@JMUZaGM)r='ie/>0{8"
Generar una contraseña automáticamente sin símbolos
$ pass generate Email/hackplayers@ymail.com 20 -n
An entry already exists for Email/hackplayers@ymail.com. Overwrite it? [y/N] y
The generated password for Email/hackplayers@ymail.com is:
zvHKedJVcDYlF50tgsCd
Funcionalidad multilínea
Adicionalmente es posible guardar otra información como URL, pin, teléfono, etc,., Utiliza el siguiente comando:
$ pass insert Email/prueba@gmail.com -m
Enter contents of Email/prueba@gmail.com and press Ctrl+D when finished:
12345
URL: http://www.hackplayers.com
Info: web de hacking
Y no olvides asegurarte de que la primera línea contiene la password ya que es la que será copiada al portapapeles mediante la opción correspondiente.
Sincronización del almacen de contraseñas en otros sitios
Si creamos el password store en un repositorio Git podremos sincronizarlo en distintos sitios para tener disponible siempre las contraseñas.
$ pass git init
$ pass git remote add origin kexec.com:pass-store
Cada modificación creará un git commit asi que podremos sincronizar los cambios mediante pass git push y pass git pull, que llamarán a git-push o git-pull en el almacén.
$ pass git push -u --all
$ pass git pull
Extensiones
Pass soporta también el uso de extensiones. Para usarlas la variable PASSWORD_STORE_ENABLE_EXTENSIONS debe estar configurado a true.
La comunidad ha desarrollado unas cuantas extensiones bastante interesantes:
- pass-tomb: administrar el store en una Tomb
- pass-update: una manera fácil de actualizar las contraseñas
- pass-import: un importador genérico para otros password managers
- pass-extension-tail: una manera fácil de mostrar sólo el 'tail' of a file
- pass-extension-wclip: un plugin que usa wclip sobre Windows
- pass-otp: soporte para tokens one-time-password (OTP)
Clientes compatibles
La comunidad ha reunido también una impresionante lista de clientes e interfaces gráficas para varias plataformas:
- passmenu: script dmenu
- qtpass: cliente GUI multiplataforma
- Android-Password-Store: Android app
- passforios: iOS app
- pass-ios: (older) iOS app
- passff: Firefox plugin
- browserpass: Chrome plugin
- Pass4Win: cliente Windows
- pext_module_pass: módulo para Pext
- gopass: Go GUI app
- upass: consola interactiva UI
- alfred-pass: integración con Alfred
- pass-alfred: integración con Alfred
- simple-pass-alfred: integración con Alfred
- pass.applescript: integración con OS X
- pass-git-helper: integración con git credential
- password-store.el: un paquete emacs
- XMonad.Prompt.Pass: prompt para Xmonad
Algunos usuarios han contribuido con scripts para ayudar a importar contraseñas de otros programas:
- 1password2pass.rb: importa de 1Password txt o 1pi
- keepassx2pass.py: importa de KeepassX XML
- keepass2csv2pass.py: importa de Keepass2 CSV
- keepass2pass.py: importa de Keepass2 XML
- fpm2pass.pl: importa de Figaro's Password Manager XML
- lastpass2pass.rb: importa de Lastpass CSV
- kedpm2pass.py: importa de Ked Password Manager
- revelation2pass.py: importa de Revelation Password Manager
- gorilla2pass.rb: importa de Password Gorilla
- pwsafe2pass.sh: importa de PWSafe
- kwallet2pass.py: importa de KWallet
- roboform2pass.rb: importa de Roboform
- password-exporter2pass.py: importa de password-exporter
- pwsafe2pass.py: importa de pwsafe
- firefox_decrypt: interfaz para Firefox que soporta la exportación a pass
No conocía Tomb. Qué cosa más estupenda.
ResponderEliminarTampoco conocía Pass, pero es que me gusto mucho lo de Tomb.
kpcli es más intuitivo y sencillo, en mi opinión. kpcli es la versión de línea de comandos de Keepass. Sin embargo, la ventaja de passwordstore son las extensiones y clientes.
ResponderEliminar