KeePass: Passwort Manager Backup automatisieren in fünf Minuten

Passwort ManagementAls Anwender erwarte ich, dass Tools einfach zu benutzen sind. So werde ich gerne mit einem schnellen Einstieg und niedrigen Einstiegshürden angelockt und erfahre erst mit längerer Nutzungsdauer die ganze Wahrheit: Lästige, wiederkehrende 08/15 Aufgaben bleiben doch wieder an mir als Anwender oder an meinen IT-Verantwortlichen hängen. Besonders lästig sind mir dabei beispielsweise Backups.

In meinen vorigen Beiträgen zum Passwort Management in Unternehmen ([1], [2] und [3]) habe ich bereits in das Thema Passwort Management eingeführt. Ich habe aus Unternehmenssicht Empfehlungen zum Umgang mit Kennwörtern in Form von Vorlagen und Strategien für den Passwort Management Tooleinsatz definiert. Teilweise auch mit recht pragmatischem Ansatz, wie: Manuelles Backup auf dem firmeninternen Netzlaufwerk? Klar, weil es einfach ist!

Jedoch bietet KeePass Password Safe [4] tatsächlich auch eine Reihe von spezielleren Funktionen an, die noch mehr Komfort versprechen. In diesem Beitrag möchte ich eine Komfortlösung vorstellen, die sich gut in das bisherige Setup integrieren lässt. Leider etwas komplizierter in der Einrichtung und zusätzliche fünf Minuten Zeitaufwand, dafür einfacher und noch schneller im täglichen Einsatz.

Passwort Manager Backup automatisieren

Leser, welche meine vorigen Empfehlungen [1] durchgeführt haben, werden auf ihrem Netzwerklaufwerk ihr manuell erstelltes Backup vorfinden. Aber trotz der Behauptung „Es ist unkompliziert und schnell!“ würde es mich wundern, wenn das Backup noch aktuell ist.

Mutigere Anwender verwenden KeePass womöglich direkt auf dem Netzlaufwerk. Dank unserer IT-Abteilung gibt es von dem gesamten Netzlaufwerk ein Backup. Dies klingt zwar sehr verlockend, bringt aber auch einen anderen Nachteil mit sich: Es klappt problemlos, so lange auch das Netzlaufwerk verfügbar ist.

Manuelle Synchronisierung als Vorbereitung

KeePass Backup Manuell SynchronisierenEine Funktion, welche eine lokale Datenbank mit der Backup-Datenbank synchronisiert, würde das Offline-Problem lösen. Und tatsächlich macht der Menüeintrag in KeePass genau das, was man vermuten würde: Die Funktion synchronisiert zwei Versionen einer Datenbank miteinander.
Auf unseren UseCase angewendet, können wir damit die lokalen und die Backup-Datenbanken synchronisieren. Die Anwendung merkt sich dabei sogar den Pfad den Backup-Datenbanken unter Letzte Dateien.

Aber auch diese Variante hat Nachteile: Obwohl KeePass bereits Änderungen an der geöffneten Datenbank automatisch speichert, muss die Synchronisierung jedes Mal explizit von Hand ausgeführt werden.

Synchronisierung automatisieren

KeePass features a powerful event-condition-action trigger system. With this system, workflows can be automated. For example, you could define a trigger that automatically uploads your database to a backup server after saving the file locally. [1]

Klingt nach einer Lösung, oder?

Also dem neuen Lockruf gefolgt, die KeePass Trigger [5] und Beispiele [6] durchforstet und wieder die ernüchternde Wahrheit entdeckt:
Es müssen unterschiedliche Dinge beachtet werden (infinite loops, synchronize with A/B/C, usw.) und es passt kein Beispiel konkret auf unsere Backup-Strategie. Automatische Backups gibt es somit nicht out of the box, sondern müssen umständlich eingerichtet werden. Also doch lieber bleiben lassen?

Passwort Manager Backup: Einfacher geht immer

Auf der Suche nach einer einfacheren Lösung habe ich schließlich noch einmal das KeePass Trigger System und die dokumentierten Beispiele genauer untersucht. Die umfangreichen Varianten sind zwar nicht ganz passend, jedoch sind einzelne Teile davon vielversprechend. Und plötzlich ist die gewünschte Backup-Strategie kein besonderer Spezialfall mehr, sondern nur noch eine spezifische Ausprägung eines Triggers. Kurz ausprobiert und erfolgreich verifiziert!

Mein Trigger prüft nun bei jedem Speichern der KeePass Datenbank
1. ob das Netzlaufwerk und die angegebene Backupdatei auf dem Netzlaufwerk verfügbar sind (über die Trigger Conditions),
2. deaktiviert den Trigger,
3. synchronisiert die aktive Datenbank mit der Backup-Datenbank auf dem Netzlaufwerk und
4. aktiviert den Trigger wieder.

Weiterführend:

  • Die gewählte Condition ist nur sinnvoll sofern das Backup auf einem Netzwerklaufwerk (ohne Login) abgelegt wird. Bei anderen Varianten wie zB SFTP muss auch die Condition entsprechend angepasst werden.
  • Die Deaktivierung des Triggers vor dem Sync verhindert eine Loop -> sofern auf dem Backup Änderungen aus anderen Quellen vorhanden sind würden diese auf die lokale DB synchronisiert werden welche sich wiederum ändert und dann nochmal gespeichert werden muss…

 

Passwort Manager Backup: XML-Vorlagen zur einfachen Triggerkonfiguration
Das Ergebnis meiner Prüfung findet sich in nachfolgenden XML-Dateien wieder. Die Dateien beinhalten meine Trigger-Konfigurationen, welche die vorgestellte Backup-Strategie weitestgehend automatisieren und dabei auch wiederverwendbar sind:
• Synchronisiere Backup-Datenbank nach Benutzerbestätigung: MitMeldungSynchronisieren.xml [7].
• Synchronisiere Backup-Datenbank automatisch: AutomatischSynchronisieren.xml [8]

Automatisiertes Passwort Manager Backup via Trigger einrichten

1. Einfach den gewünschten Trigger auswählen und den gesamten XML Inhalt in einen Texteditor kopieren.
2. Im Texteditor beide Vorkommen der Zeichenfolge VERZEICHNISPFAD_ZUR_BACKUP_DATENBANK durch den Pfad zum Backupverzeichnis ersetzen. Bei mir ist dies beispielsweise Z:\Backup\KeePass-2.32.
3. Das angepasste XML aus dem Texteditor in die Zwischenablage kopieren (Shortcut: STRG+A und STRG+C).
4. KeePass starten, den Menüeintrag Extras/Trigger auswählen.
5. Zum Import des Triggers im neu geöffneten Trigger-Fenster den DropDown-Button Extras klicken und in der Auswahl Trigger aus Zwischenablage einfügen klicken.
6. Der Trigger erscheint als Eintrag im Trigger-Fenster. Dort kann dann nochmal der Trigger über die KeePass UI geprüft und das Fenster im Anschluss mit OK geschlossen werden kann.
7. KeePass Datenbank speichern und die Zeitstempel von lokaler und Backup-Datenbank über das Dateisystem miteinander vergleichen.
8. Werden die Zeitstempel beider Datenbanken nach dem Speichern aktualisiert verläuft die automatische Synchronisation erfolgreich.

Ein Bild sagt mehr als 100 Worte. Hier ein animiertes GIF zum Vorgehen.

Anpassung der Backup-Strategie

Die bisherige Backup-Strategie KeePass Portable inkl. Datenbank lokal in einem Ordner und als Backup auf dem firmeninternen Netzlaufwerk wurde durch die Einrichtung des Triggers leider nur teilautomatisiert.

Es wird eigentlich nur die KeePass-Datenbank synchronisiert und auch nur in den Fällen, in denen die Backup-Datenbank auf dem Netzlaufwerk erreichbar ist. Der automatische Sync wird zudem gestützt durch den Backup-Prozess des firmeninternen Netzlaufwerks. Bei uns wird seitens IT regelmäßig ein Backup des Netzlaufwerks erstellt. Crashed meine KeePass Datenbank und wird dann mit dem Backup synchronisiert, habe ich immer noch ein weiteres, etwas älteres Backup der Datenbank vom Netzlaufwerk-Backup.

Der Aufwand lohnt sich also: Es existiert nun eine aktuelle Version auf meinem lokalen System, ein relativ aktuelles Backup der Passwort-Datenbank auf dem Netzlaufwerk, ein etwas älteres Backup davon auf dem Backup meiner IT und die Neu-Einrichtung der Anwendung ist dank der Setup-Templates und Fallbackstrategien in 10 Minuten erledigt.

Wie kritisch sind also die Nachteile eines Passwort Manager Backups zu bewerten?
• Verfügbarkeitsprobleme: Diese könnten im Unternehmensumfeld als „gering kritisch“ eingestuft werden. Im Worst-Case sind nur zuletzt gespeicherte Passwörter verloren und die im vorigen Beitrag [3] definierten Fallback-Szenarien gelten weiterhin.
• Manuelles Programm-Backup: Dieser Umstand ist weiterhin unpraktisch. Bei allen Änderungen an der Anwendung sollte ein volles Programm-Backup manuell erstellt werden (z.B. bei Update von Programmversionen, Konfiguration, Trigger, Plugins, etc.). Anderseits treten Passwortänderungen häufiger als Programmänderungen auf und das Risiko eines veralteten Datenbank-Backups reduziert sich dabei kontinuierlich. Daher schätze ich diesen Nachteil ebenfalls nur „gering kritisch“ ein.

Entsprechend wird die zuvor formulierte Strategie mit dem automatischen Backup geringfügig angepasst: „Vor Programmupdates wird der gesamte KeePass-Ordner manuell auf das Netzlaufwerk gesichert.“
Ich mache dieses Backup beispielsweise immer bevor und nachdem ich die KeePass-Programmversion oder -Konfiguration aktualisiere.
Nebenbei wäre gerade jetzt ein guter Zeitpunkt für diese Aktion, immerhin wurde mit dem Trigger gerade die Anwendung (und nicht die Datenbank) angepasst.

Fazit

KeePass kann auch automatische (Datenbank-)Backups. Leider ist die Einrichtung etwas umständlich und es gibt kein wirkliches Patentrezept für alle Anwender und Unternehmensstrukturen.
Aber dennoch lässt sich im Unternehmenskontext auch in diesem Fall die Einstiegshürde auf ein Minimum reduzieren.
Wird beispielsweise für jeden Mitarbeiter das persönliche Netzwerklaufwerk unter U:\ automatisch verbunden, dann kann man die unternehmensweite KeePass-Defaultkonfiguration (inkl. Backup-Trigger) das Backup unter U:\Backup\KeePass“ synchronisieren. Die kompliziertere Einrichtung mit individueller Anpassung des Triggers entfällt und die Strategien können damit auch allgemeingültiger für alle Anwender formuliert werden.


Quellen:

[1] https://blog.doubleslash.de/passwort-management-in-unternehmen/
[2] https://blog.doubleslash.de/passwort-management-in-fuenf-minuten/
[3] https://blog.doubleslash.de/passwort-management-strategien-gegen-die-angst-vor-tools/
[4] http://keepass.info/
[5] http://keepass.info/help/v2/triggers.html
[6] http://keepass.info/help/kb/trigger_examples.html
[7] https://raw.githubusercontent.com/doubleSlashde/blog.doubleSlash.de/master/keepass/templates/MitMeldungSynchronisieren.xml
[8] https://raw.githubusercontent.com/doubleSlashde/blog.doubleSlash.de/master/keepass/templates/AutomatischSynchronisieren.xml


Update 16.09.2019: Erläuterung der Trigger Condition und Ergänzung zum firmeninternen Backup des Netzlaufwerks im Text nach Rückmeldung von Reinhard. Danke dafür!!!

Zurück zur Übersicht

8 Kommentare zu “KeePass: Passwort Manager Backup automatisieren in fünf Minuten

  1. Hallo Reinhard,
    klingt tricky.

    Spontane Idee:
    – Hast du beide Pfade in der Trigger XML angepasst? (lese ich nicht direkt heraus)
    – Hast du eine Kopie der Date bereits unter dem Backup-Pfad abgelegt (lese ich heraus)

    Wenn ja, exportiere gerne mal den Trigger, entferne das PW im XML und lass es mit zukommen.
    Ich habe SFTP selbst noch nicht verwendet aber viell finde ich übers WE spontan einen Hinweis…
    Grüße Michael
    —-
    Update 16.09.2019: Ursache war die Trigger Condition im XML, welche nicht zu SFTP passt. Ich habe hierzu die Erläuterung zur Condition im Post ergänzt.

  2. Hallo, ich verwende im Kleinbetrieb Keepass (Win-Umgebung und Android) und möchte automatisch synchronisieren.
    Das DB-Backup liegt auf einem sftp-Server (Cloud). Es wird Masterpasswort + Schlüsseldatei verwendet. Der Sync bei den Androids erfolgt korrekt beim Offnen und Schließen der Datenbank (App). Bei KeePass (für Win) erfolgt die manuelle Synchronisation auch korrekt (mit dem IOProtocolExt-Plugin).

    Im Trigger-XML für automatischen Sync habe ich den Pfad zum DB-Backup so eingegeben (mit Protokoll-Prefix): sftp://URL-servername/……kdbx, im Aktionen-Fenster (Extras-Trigger-Bearbeiten) noch den Benutzername und das Passwort für den ssh-Zugriff.
    Es erfolgt aber leider keine automatische Synchronisation, eventuell fehlt der Pfad zur Schlüsseldatei. Hat jemand einen Tipp?

  3. Hallo Michael,
    sorry für die späte Antwort.

    Für eine derartige Backup-Historie fällt mir spontan nur ein: Selber skripten. Könnte aber sein, dass es dafür auch ein Plugin gibt.

    Jedoch möchte ich auf folgendes hinweisen:
    – Eine Historie ist bereits in KeePass in den Einträgen enthalten.
    – Ein Backup deines Backupserver wird vmtl. ebenfalls erfolgen.
    Vielleicht lässt sich dein „Problem“ darüber lösen? Je nach Notwendigkeit, könnte dies ausreichend sein.
    In meinem Fall nutze ich beides und kann zB auf diverse „Schattenkopien“ der KeePass Datei auf meinem Backupserver zurückgreifen (sofern denn nötig).
    Ich hoffe das hilft weiter.
    Falls nicht und du selber skripten willst, noch eine Idee: Nutze ‚git‘ zur Historisierung, dann muss sich dein Skript nur um den Sync kümmern und git liefert dir die History out-of-the-box.
    Grüße Michael

  4. Hallo Michael,

    danke für den Tipp ohne ein Plugin verwenden zu müssen. Was muss ich tun, damit ich bis zu 5 Backup Dateien erhalte, die auch im Dateinamen einen Zeitstempel bekommen und nach dem jeweils 5. immer überschrieben werden.

    Geht das überhaupt mit dem Triggersystem?

  5. Hallo Stephan,
    das freut mich sehr! Danke für die Rückmeldung.

    Nebenbei kann ich aus eigener Erfahrung bestätigen (ich habe die Backup-Lösung so selbst im Einsatz): Es funktioniert.

    Letzte Woche ist mir mein Laptop abgestürzt während ich die KeePass-DB offen und verändert hatte. Dabei wurde meine lokale Version unbrauchbar. Kurz die Backup Datei zurück kopiert und weiter ging die Arbeit mit dem zuletzt gespeicherten Stand!

    Viele Grüße Michael

  6. Hallo, über die Google-Suche auf der Seite gelandet und genau das gefunden, was ich gesucht habe. Damit viel Zeit gespart für das private automatische Backup meiner Keepass-Datenbank auf dem Home-Server.
    Vielen Dank für den ausführlichen Bericht!
    Grüße
    Stephan

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

*Pflichtfelder

*