KeePass: Administrador de Contraseñas

Si eres como yo, que llevan navegando por Internet más de 20 años, y en todos estos años has seguido cometiendo el mismo pecado capital: usar las mismas contraseñas en diferentes sitios por comodidad, tal y como refleja esta viñeta https://xkcd.com/792/. Por otro lado, no hay forma de saber cómo protegen tus contraseñas estos sitios, tal vez las almacenen tal cual o codificadas con una baja encriptación, lo cual hace que sean fáciles de descifrar con tablas rainbox, o simplemente la depuración de mensajes revela las contraseñas dentro de los registros logs del servidor.

Recientes Revelaciones han puesto de manifiesto que incluso las grandes compañías como Yahoo, Apple y LinkedIn han sufrido violaciones de datos y les han robado contraseñas. La lista notoriamente larga la puedes encontrar aquí, https://en.m.wikipedia.org/wiki/List_of_data_breaches. La única protección que tienes es la de recurrir a los frecuentes cambios de contraseña y evitar la reutilización de las mismas, de modo que una cuenta comprometida no se convierta en una identidad comprometida.

Como ya sabes, los seres humanos somos notoriamente malos a la hora de elegir y recordar muchas y diferentes contraseñas; las más frecuentes las puedes encontrar aquí,  https://en.m.wikipedia.org/wiki/List_of_the_most_common_passwords. De modo que, necesitamos la ayuda del ordenador para recordar y generar todas las contraseñas y nos hace falta una contraseña maestra muy robusta para proteger el resto. En resumen, necesitamos un administrador de contraseñas. Existen muchos administradores de contraseñas, pero yo me voy a centrar en un programa de código abierto bien fundamentado llamado, https://keepass.info, que tiene un back-end para muchos sistemas operativos.

Cliente (GUI) Linux

KeePass es originalmente una aplicación Mono, escrita en .NET, pero debido al soporte inesperado de Microsoft, Mono puede funcionar bastante bien en sistemas Linux, incluso en armhf/arm64. Puede instalar KeePass2 directamente desde apt en tu dispositivo ODROID:

$ sudo apt-get install keepass2
Una vez iniciado, deberás crear una nueva base de datos para almacenar tus contraseñas (Archivo -> Nuevo ...). Selecciona un nombre adecuado, yo usé 'NewDatabase.kdbx', se te pedirá que definas una Contraseña maestra segura y, opcionalmente, una clave para desbloquear la base de datos. Si usas una clave, puede crearla desde el cuadro de diálogo moviendo el ratón, o con dd, desde /dev/random. En nuestro caso, no vamos a usar una clave, solo una contraseña maestra, así que asegúrate de poner una que sea difícil de adivinar, aquí tienes una sugerencia: https://security.stackexchange.com/questions/62832/is-the-oft-cited-xkcd-scheme-no-longer-good-advice. Yo voy a usar "odroid", simplemente como contraseña de ejemplo 🙂

Figure 1 - Database creation - use a strong password!
Figura 1 - Creación de la base de datos: usa una contraseña segura

En el segundo paso, se te pedirá un nombre para la base de datos (por ejemplo, "cosas personales"), un nombre de usuario por defecto, algoritmo de cifrado, AES es el utilizado por defecto y el número de ciclos de transformación. Esto significa cuántas veces se debe volver a cifrar la contraseña maestra para generar la clave real. Cuanto mayor sea el número, más difícil lo tendrá los ataques de fuerza bruta, pero también te llevará más tiempo abrir o guardar tu base de datos. La GUI ofrece una opción de "demora de 1 segundo" que calcula el número de ciclos basándose en el PC actual, para un ODROID-C1 es de 78,000, mientras que para un Intel alcanza las decenas de millones. Si seleccionas un número demasiado alto, te llevará más tiempo abrir la base de datos en dispositivos más lentos, 100.000 debería estar bien. Siempre puedes ajustar este número más tarde o cambiar la contraseña maestra. Asegúrate de guardar la base de datos una vez abierta.

Figure 2 - Main window
Figura 2 - Ventana principal

Desde la ventana principal puedes usar la barra de herramientas para crear una nueva entrada, buscar entradas existentes y abrir las entradas. También puede agrupar entradas en carpetas. La típica entrada suele tener un título, un nombre de usuario, una contraseña, la URL y algunas notas. También puede añadir archivos y KeePass mantiene un historial de todas las modificaciones realizadas a una entrada, por ejemplo, contraseñas antiguas, que puede ser útil.

Para usar una contraseña guardada, tiene varias opciones. Utilizar CTRL + B para copiar el nombre de usuario y CTRL + C para copiar la contraseña (o hacer doble clic en la entrada de usuario/contraseña) y pégarlos en la aplicación/formulario deseado, o usar la opción de autocompletar (CTRL + V) como esta:

  • Navega hasta el recurso deseado, por ejemplo https://forum.odroid.com/ucp.php?mode=login
  • Cambia el objetivo a KeePass2 y seleccione la entrada deseada y pulsa CTRL + V
  • KeePass volverá a la aplicación anterior y pegará el nombre de usuario, usa el tabulador para navegar al siguiente campo y pega la contraseña, presiona Intro. La secuencia se puede cambiar por entrada o por grupo en el caso de que necesites usar otra tecla para la secuencia de inicio de sesión.

Ten en cuenta que, por razones de seguridad, tus datos copiados se guardan en el portapapeles solo durante 12 segundos y luego serán reemplazados por "--" con el fin de mantener tus contraseñas en secreto. Puede cambiar esto en Herramientas -> Opciones -> Tiempo para la limpieza automática del portapapeles. Si la aplicación no es de tu gusto y te recuerda demasiado a Windows, también puedes usar otros clientes GUI para Linux, como KeePassX, pero no tendrás tantos complementos/opciones de importación como en el caso de KeePass2:

$ sudo apt-get install keepassx
Figure 3 - KeePassX on ODROID-C1
Figura 3 - KeePassX en ODROID-C1

Cliente Web

KeeWeb es una aplicación web escrita en JavaScript con la que puedes administrar tus contraseñas en un navegador, además de poder ejecutarse sin conexión. La idea es que puedas alojarlo en tu ODROID, almacenar el archivo de contraseñas en ODROID y conectarte a la aplicación cada vez que necesites administrar sus contraseñas, sin tener que utilizar otros clientes, https://github.com/keeweb/keeweb/wiki/FAQ. Puedes obtener la última versión desde Github: https://github.com/keeweb/keeweb/releases. Necesitaras ejecutar Apache o NGINX, para trabajar con archivos estáticos:

$ sudo apt-get install apache
$ cd /var/www/html
$ sudo wget https://github.com/keeweb/keeweb/archive/gh-pages.zip
$ sudo unzip gh-pages.zip
$ sudo mv keeweb-gh-pages/ keeweb/
$ sudo service apache2 start
$ sudo systemctl enable apache2
Llegado a este punto, puedes navegar a https://odroid-ip/keeweb y, tras aceptar el certificado autofirmado, aparecerá en pantalla­ la página de la figura 4. Aquí puede cargar, solo se carga en el navegador, un archivo KeePass local y puedes verlo.

Figure 4 - KeeWeb initial view
Figura 4 - Vista inicial de KeeWeb

Si quieremos realizar cambios, necesitamos alojar el archivo en el servidor y habilitar WebDAV. WebDAV es un estándar para administrar archivos en un servidor web. Primero crearemos un directorio para almacenar tu base de datos de contraseñas en el servidor y luego la copiaremos allí:

$ cd /var/www/html
$ sudo mkdir kppassword
$ sudo cp /path/to/NewDatabase.kdbx /var/www/html/kppassword
$ sudo chown -R www-data /var/www/html/kppassword
Asegúrate de introducir la ruta correcta de tu archivo de contraseñas. Además, si añades archivos nuevos despues, asegúrate de que el directorio kppassword y todos los archivos kdbx que contenga sean propiedad del usuario www-data, para que apache pueda guardar los cambios. A continuación, crearemos una cuenta de autentificación HTTP a la que se le permitirá acceder a este archivo mientras esté cifrado. Asegúrate de proporcionar el nombre de usuario y la contraseña requeridos, y que ésta ultima no coincidan con la contraseña maestra, ya que estas credenciales suelen almacenarse en caché de un modo poco seguro:
$ sudo htpasswd -c /etc/apache2/kppassword.access adrianp
Ahora podemos habilitar WebDAV para el directorio web de kppassword creando /etc/apache2/conf-available/keeweb.conf y activando algunos módulos de apache. Tiene más detalles aquí: https://github.com/keeweb/keeweb/wiki/WebDAV-Config:
$ sudo vi /etc/apache2/conf-available/keeweb.conf
RewriteEngine on
RewriteCond %{REQUEST_METHOD} OPTIONS
RewriteRule ^(.*)$ blank.html [R=200,L,E=HTTP_ORIGIN:%{HTTP:ORIGIN}]

< Directory "/var/www/html/kppassword" >
AuthType "Basic"
AuthName "Password Manager"
AuthBasicProvider file
AuthUserFile "/etc/apache2/kppassword.access"
Require valid-user

DAV On
Options Indexes
Header always set Access-Control-Allow-Origin "*"
Header always set Access-Control-Allow-Headers "origin, content-type, cache-control, accept, authorization, if-match, destination, overwrite"
Header always set Access-Control-Expose-Headers "ETag"
Header always set Access-Control-Allow-Methods "GET, HEAD, POST, PUT, OPTIONS, MOVE, DELETE, COPY, LOCK, UNLOCK"
Header always set Access-Control-Allow-Credentials "true"
< /Directory >

$ sudo a2enconf keeweb
$ sudo a2enmod dav
$ sudo a2enmod dav_fs
$ sudo service apache2 restart
Ahora, si tuvieras que volver a cargar KeeWeb en tu navegador, puedes presionar el botón "More" y seleccionar WebDAV. Debes introducir lo siguiente:

Figure 5 - Loading the database from the server
Figura 5 - Cargando la base de datos desde el servidor

Ahora deberías poder hacer cambios y guardarlos, cuando haya cambios sin guardar, aparece un punto azul al lado del nombre de la base de datos. Haz clic en él y se te pedirá que guardes los cambios, el estado cambiará a guardado. Si realizas cambios simultáneos en la misma base de datos desde varios clientes, debes tener en cuenta que el archivo se sobrescribirá, de modo que es posible que se pierdan los cambios realizados desde los diferentes clientes. Además, es posible que quieras cerrar y reiniciar KeeWeb de vez en cuando para asegurarte de que se carga la última versión del archivo y no una versión anterior de caché. También es obligatorio hacer copias de seguridad periódicas en un lugar distinto al del sitio en el que almacenas tu archivo de contraseñas.

Figure 6 - Accessing an entity
Figura 6 – Accediendo a una entrada

Eso es todo: ahora puede acceder y administrar tus contraseñas desde cualquier navegador con Javascript habilitado. Aunque tal vez estés buscando algo con base terminal...

Cliente CLI

En ocasiones, es posible que sólo tengas acceso por el interprete de comandos - shell y necesites acceder a tus contraseñas. En este caso puedes usar kpcli:

$ sudo apt-get install kpcli
Puedes conectarte a tu base de datos de contraseñas, como si fura un archivo, y navegar dentro del mismo usando comandos similares a los de Linux, como ls, cd, show.
$ kpcli --kdb myPasswordDB.kdbx
Please provide the master password: *************************
kpcli:/> ls
=== Groups ===
NewDatabase/
kpcli:/> cd NewDatabase/
kpcli:/NewDatabase> ls
=== Groups ===
eMail/
General/
Homebanking/
Internet/
Network/
Windows/
=== Entries ===
0. Sample Entry keepass.info
1. Sample Entry #2 keepass.info/help/kb/testform.
kpcli:/NewDatabase> show -f 0

Title: Sample Entry
Uname: User Name
Pass: Password
URL: https://keepass.info/
Notes: Notes
Puedes encontrás mas ejemplos aquí: https://www.digitalocean.com/community/tutorials/how-to-use-kpcli-to-manage-keepass2-password-files-on-an-ubuntu-14-04-server

Clientes KeePass de Android

También tiene una amplia selección de clientes Android/iO, https://keepass.info/download.html, y aunque no he probado muchos, me ha gustado bastante KeePass2Android, disponible en https://play.google.com/store/apps/details?id=keepass2android.keepass2android, por las siguientes características:

  • Código abierto
  • Permite desbloquear rápidamente una base de datos previamente desbloqueada con tan sólo los 3 últimos caracteres de la contraseña maestra
  • Soporte WebDAV
  • Base de datos offline con sincronización automática cuando esté online
  • Inicio de sesión automático en sitios a través de la función "compartir"

Puedes instalar el cliente desde Play Store y seleccionar Open file -> HTTPS (WebDAV). Introduce la URL y el usuario/contraseña que definiste al instalar keeweb y se te solicitará la contraseña maestra.

Figure 7 - KeePass2Android
Figura 7 - KeePass2Android

Una vez desbloqueado, puede buscar o administrar tus contraseñas con normalidad. Cuando naveges por una página donde necesites iniciar sesión, puedes seguir estos pasos:

  • Comparte la página desde el navegador a KeePass2Android: Buscar. A continuación, aparecerá una lista de todas las cuentas guardadas para ese sitio
  • Selecciona la cuenta deseada y vuelve al navegador. El nombre de usuario/contraseña estará disponible por un tiempo, ya sea a modo de notificación o como botones en el teclado KP2A. Puede usar estos botones para copiar las credenciales y pegarlas en el navegador.

Importar contraseñas desde Firefox

Si está usando Firefox, posiblemente en muchos sistemas, sin sincronización, puedes exportar las contraseñas guardadas en tu administrador de contraseñas usando este script: https://github.com/unode/firefox_decrypt. Solía haber varias extensiones que te permitian hacerlo desde Firefox, pero desde que se mudaron a Quantum, las extensiones perdieron la capacidad de leer las contraseñas, lo cual debería ser algo bueno. Firefox también se está moviendo a un nuevo administrador de contraseñas llamado Lockbox, https://www.bleepingcomputer.com/news/software/firefox-to-get-a-better-password-manager/. Así que este método podría no funcionar cuando se produzca este cambio.

$ git clone https://github.com/unode/firefox_decrypt.git
$ cd firefox_decrypt
$ ./firefox_decrypt.py -f csv -d , > /dev/shm/firefox-passwords.csv
Se te preguntará qué perfil desea exportar y también cuál es la contraseña maestra (presiona Intro si no). También puede seleccionar una ruta personalizada para tu perfil, por ejemplo, si está importando contraseñas guardadas en un sistema Windows o desde un recurso remoto. Tus contraseñas se escribirán en un disco RAM, /dev/shm, para evitar dejar rastros en el sistema de archivos.

Antes de importar nada, necesitamos mejorar un poco los datos que vamos a importar. El problema es que los datos exportados solo tienen la URL, el usuario y la contraseña, y carece de un título. Además, la URL no contiene subdirectorios, por ejemplo www.domain.com/example, por lo que nos faltará información que debe ser solventada manualmente más adelante. Vamos a intentar visitar todos los sitios de la lista y coger el título de la página y agregarlos a una nueva lista. He escrito un pequeño script para hacer todo eto:

$ sudo apt-get install curl libtext-csv-perl
$ wget -O /usr/local/bin/enrichFirefox.pl https://raw.githubusercontent.com/mad-ady/enrichFirefoxPasswords/master/enrichFirefox.pl
$ sudo chmod a+x /usr/local/bin/enrichFirefox.pl
$ /usr/local/bin/enrichFirefox.pl /dev/shm/firefox-passwords.csv | tee /dev/shm/firefox-passwords-enriched.csv
A continuación, puedes usar keepass2 e importar el archivo de contraseña con File -> Import -> Generic CSV Importer. Navega a /dev/shm y selecciona el archivo y presiona ok. Aparecerá una vista previa del archivo. Selecciona la pestaña "Structure" y marca la opción "Ignore first row" ya que es un encabezado. Ahora, necesitamos asignar los campos del CSV a los campos de KeePass en la siguiente sección. Elimina la primera entrada "URL" y la entrada "(Ignore)" y agrega "Title" a la parte superior y "Group" a la parte inferior y seleccione Next. Ahora debería ver tus contraseñas desglosadas correctamente y puede presionar Finish para importarlas.

Figure 8 - Import settings
Figura 8 – Configurando la importación

Una vez importado, asegúrate de eliminar el archivo de contraseñas exportado y guarda tu base de datos:

$ rm -f /dev/shm/firefox-passwords*.csv
Puede volver a realizar estos pasos para importar datos desde otros perfiles de Firefox almacenados en múltiples sistemas.

Importar contraseñas desde Chrome

Para exportar contraseñas desde Chrome, debes navegar a chrome://flags y buscar "exportar contraseña". Deberás activar esta opción y reiniciar Chrome. Una vez reiniciado, dirígete a Menú -> Configuración -> Avanzado -> Administrar contraseñas. Debajo de la lista de contraseñas guardadas, haz clic en el menú de tres puntos y seleccione Exportar contraseñas y guárdalo también en /dev/shm.

Figure 9 - Exporting passwords from Chrome
Figura 9 - Exportando contraseñas desde Chrome

Si no ves ninguna contraseña guardada localmente, tus contraseñas están disponibles en https://passwords.google.com y están sincronizadas entre varias instancias del navegador. A continuación, puede importarlas de la misma forma que las contraseñas de Firefox, pero la estructura CSV ahora es Nombre, URL, Nombre de usuario, Contraseña. Una vez que haya terminado, recuerda eliminar el archivo exportado y deshabilitar la opción "Exportar contraseñas".

Reemplazar el administrador de contraseñas de Firefox/Chrome - Tusk

Copiar/pegar contraseñas puede estar bien para los accesos ocasionales, pero usar un administrador de contraseñas integrado con KeePass se vuelve necesario para un uso más regular del navegador. Para esto, necesitamos usar una extensión del navegador para obtener contraseñas del servidor web. Para Firefox y Chrome, una de esas extensiones es KeePass Tusk, https://addons.mozilla.org/en-US/firefox/addon/keepass-tusk/?src=search, https://chrome.google.com/webstore/detail/keepass-tusk-password-acc/fmhmiaejopepamlcjkncpgpdjichnecm. Se puede conectar a una base de datos KeePass almacenada a través de WebDAV y no necesita un cliente keepass local. Puedes instalar la extensión dirigiéndote a: addons -> Extensions y buscando por "tusk". Selecciona el complemento y haz clic en "+ Add a Firefox". Para Chrome, se puede instalar desde el propio enlace de arriba. Una vez que esté instalado, aparecerá un icono al lado de la barra de búsqueda donde puedes configurarlo y conectarlo a una base de datos de contraseñas. Deberás seleccionar "Cloud storage set" y activar "WebDAV". Puede ignorar la advertencia sobre el almacenamiento del nombre de usuario y la contraseña de WebDAV en disco.

Necesitarás completar la ruta al directorio kppassword con http, lamentablemente no le gusta mi certificado autofirmado, aunque no la ruta a la base de datos porque se descubrirán todas las bases de datos de ese directorio. Además, añade tu nombre de usuario y contraseña de WebDAV.

Figure 10 - Tusk Configuration
Figura 10 - Configuración de Tusk

Ahora puedes cerrar la pestaña Tusk y cuando hagas clic en su icono, te preguntará qué base de datos desea cargar y te pedirá la contraseña maestra y el tiempo que quieres mantenerla abierta. Una vez que desbloquees tu base de datos y te dirijas a un sitio que tengas registrado en tu base de datos, Tusk lo buscará automáticamente en tu base de datos, pero no la autocompletará. Puedes hacer clic en el ícono Tusk y en el ícono "Autocompletar" que se encuentra junto a la entrada que deseas completar completar. Si activas la navegación mediante atajos de teclado en la configuración de Tusk, puedes usar la siguiente combinación para hacer lo mismo: CTRL+ALT+Space Tab Enter.

Para beneficiarse completamente de esto, deberás desactivar el administrador de contraseñas integrado en Firefox dirigiendote a Menú -> Preferencias -> Privacidad y seguridad -> Desmarca Recordar inicios de sesión y contraseñas para sitios web. También debe eliminar logins.json de tu carpeta de perfil. Deberías hacer lo mismo para Chrome.

Una limitación de Tusk es que es de solo lectura. Si necesitas actualizar una contraseña, necesitará usar un cliente diferente para llevar a cabo la actualización.

Reemplazar el administrador de contraseñas de Firefox/Chrome - chromeIPass/KeePassHelper

Si no quieres que tu plugin se conecte directamente a tu base de datos de contraseñas y revele potencialmente tu contraseña maestra en el navegador, puede usar una técnica diferente y realizar solicitudes proxy a través de KeePass2. Plugins que hacen esto: chromeIPass  https://chrome.google.com/webstore/detail/chromeipass/ompiailgknfdndiefoaoiligalphfdae/, KeePassHelper para Firefox https://addons.mozilla.org/en-US/firefox/addon/keepasshelper/) se conneca vía HTTP localmente a la instancia KeePass2 para recuperar contraseñas. Para hacer esto, debe instalar el plugin KeePassHTTP dentro de KeePass2, https://keepass.info/plugins.html#keepasshttp.

Puedes hacer esto en el sistema donde ejecutas KeePass2 de la siguiente manera:

$ cd /usr/lib/keepass2/Plugins
$ sudo wget https://raw.github.com/pfn/keepasshttp/master/KeePassHttp.plgx
$ sudo apt-get install mono-complete
A continuación, deberás reiniciar KeePass2 y abrir tu base de datos de contraseñas, y podrás instalar el plugins en el navegador. Una vez que el plugins esté instalado, se conectará automáticamente a KeePass2 y generará una clave de cifrado que debes aprobar. Luego, al conectarte a un sitio conocido con el navegador, se completará automáticamente el nombre de usuario/contraseña en los campos de inicio de sesión (para Chrome).

Figure 11 - Chrome login with chromeIPass
Figura 11 - Inicio de sesión de Chrome con chromeIPass

Mantenimiento

Ahora que tiene todas tus contraseñas en un solo lugar, puede ejecutar diversos informes desde KeePass2, como Edit -> Show entries -> Find duplicate passwords y verás un informe de tu adicción a la reutilización de contraseñas. Necesitarás buscar algo de tiempo y tomar medidas, restablecer esas contraseñas y reemplazarlas por algunas otras para que sean más seguras.

Una última cosa que debe tener presente, que es muy importante, es la copia de seguridad. Tu base de datos de contraseñas contiene todas tus identidades digitales y si se pierde o se corrompe te dará un mal día. Es por eso que necesita configurar una estrategia de copias de seguridad y hacer copias de tu base de datos en diferentes discos físicos y también en diferentes ubicaciones físicas, con el objeto de disponer de redundancia geográfica, de modo que, en el pero de los casos,  si un asteroide destruye tu ciudad, tus contraseñas seguirán estando seguras.

Para hacer esto, he creado un script que pone atención a los cambios de archivos, compara el archivo actual con su versión anterior, para ver si habido algun cambio y si es necesario lo copia a otras unidades y a otros sistemas a través de los recursos de la red.

Necesitarás inotify para activar las sincronizaciones:

$ sudo apt-get install inotify-tools
$ sudo wget -O /etc/systemd/system/password-backup.service https://raw.githubusercontent.com/mad-ady/password-backup/master/password-backup.service
$ sudo wget -O /usr/local/bin/password-backup-detect.sh https://raw.githubusercontent.com/mad-ady/password-backup/master/password-backup-detect.sh
$ sudo wget -O /usr/local/bin/password-backup-execute.sh https://raw.githubusercontent.com/mad-ady/password-backup/master/password-backup-execute.sh
$ sudo chmod a+x /usr/local/bin/*.sh
$ sudo systemctl enable password-backup
$ sudo systemctl start password-backup
El código consta de dos scripts bash: uno para detectar cambios y otro para realizar la copia de seguridad, y un archivo de servicio que ayuda con el inicio al arrancar.

Vamos a detenernos un segundo para analizar el script password-backup-detect. En la línea 2 fijamos la ruta de la ubicación de la base de datos de contraseñas, luego iniciamos un bucle infinito. Usamos inotifywait para prestar atención a los cambios en los archivos existentes y cuando un archivo se cierra usamos find para obtener una lista de los archivos modificados en los últimos 4 segundos y para cada archivo activaremos el script de copia de seguridad con el nombre del archivo como argumento. Una vez que finaliza el script password-backup-execute.sh, volveremos a escuchar los cambios.

Figure 12 - password-backup-detect
Figura 12 - password-backup-detect

El script password-backup-execute coge un archivo del que se realiza una copia de seguridad como argumento, comprueba si es necesario hacer una copia de seguridad y la realiza en múltiples ubicaciones potenciales. Al principio, fijamos la cantidad de versiones de la copia de seguridad que queremos conservar y configurarmos las rutas para los archivos de copia de seguridad; puede usar autofs para montar un recurso compartido remoto cuando lo necesites, por ejemplo. A continuación, definimos una función doBacku() que itera a través de la lista de carpetas de destino y realiza la copia real y una función cleanup() que usa una combinación de ls, tail y rm para eliminar copias de seguridad anteriores y preservar algunas versiones más recientes. Los archivos respaldados contienen una marca de tiempo en su nombre, aunque se ordenan en función de la última hora de modificación.

Figure 13 - password-backup-execute
Figura 13 - password-backup-execute

El código principal comprueba si hay un hash md5sum de la copia de seguridad anterior, y si lo hay, se compara con el hash actual. Si los valores hash difieren, o no hay hash previo, la copia de seguridad y la limpieza se llevan a cabo. La comprobación se realiza para evitar que se haga copias de seguridad del mismo archivo varias veces, por ejemplo. haces clic en guardar en KeePass2 sin haber hecho cambios.

Tendrás que modificar este código y agregar tus ubicaciones para las copias de seguridad

El código puede parecer perfecto, pero tiene dos deficiencias, "bug" es una palabra demasiado desagradable. En primer lugar, inotifywait no reacciona ante los archivos nuevos hasta que se reinicie o hasta que se modifique o se toque un archivo anterior. En segundo lugar, durante la fase de respaldo, los cambios de archivo no se detectan. Si un archivo tarda un minuto en guardarse en todos los destinos remotos (debido a la latencia de la red o al tiempo de activación del disco duro), los cambios de archivos que tengan lugar durante ese tiempo no se recogerán y no se guardarán copias de seguridad. De modo que, el script es adecuado para pocos usuarios simultáneos y con cambios poco frecuentes.

Espero que este artículo haya sido lo suficientemente interesante como para convencerte de hacerte cargo de tus contraseñas y tener mejores prácticas de seguridad. Con respecto a la seguridad, keepass te protege de tener tu contraseña expuesta cuando se piratea un servicio online, pero no necesariamente te protege de un ordenador infectado con malware o un registrador de teclas. El malware o los atacantes que pueden leer arbitrariamente la memoria de tu ordenador pueden acceder a las contraseñas una vez descifradas o pueden hacerse con tu contraseña maestra. La razón por la que recomendé usar un ODROID con WebDAV en lugar de usar Dropbox (que también es compatible) fue para minimizar su exposición. Mantener tu archivo encriptado en el ordenador de otra persona (por ejemplo, "la nube"), puede estar bien ahora, pero tus contraseñas pueden llegar a manos equivocadas y la contraseña maestra se puede descifrar más fácilmente en el futuro, dejándote nuevamente vulnerable.

Be the first to comment

Leave a Reply