Geuni/ August 17, 2020/ Deutsch/ 0Kommentare

1) Was wollen wir erreichen?

Ich bin ein sehr begeisterter Nutzer von KeePass und hatte mich schon immer gefragt, wie ich jetzt mein KeePass ernsthaft überall einsetzen kann, sodass ich mir wirklich nie wieder ein Passwort merken muss. Meine Lösung dafür geht über mein NAS und meinen eigenen ReverseProxy Container.

Ich will also meine KeePass Datei auf meinem NAS zu Hause speichern (nicht in der Cloud). Weiterhin will ich den Datenaustausch zwischen meinem NAS und den Endgeräten über das Internet mittels TLS ermöglichen.

2) Was brauchen wir?

Idealerweise habt ihr schon einen ReverseProxy, wie ich ihn in meinen vorangegangenen Beiträgen beschrieben habe, aufgesetzt und könnt euch jetzt nur noch auf KeePass konzentrieren und ein wenig Konfigurationsarbeit.

Weiterhin braucht ihr natürlich KeePass, auf eurem Desktop und/oder einem Android Smartphone (diese beiden Plattformen werde ich beschreiben) wo ihr eine App wie KeePass2Android bspw. installiert habt. Kürzlich hab ich das auch mit einem iPhone gemacht, das werde ich hier nicht beschreiben wie ich das geschafft habe, denn es war Fehlerbehaftet, also die Lösung noch nicht so gut für den täglichen Gebrauch ist. Es geht aber auch mit iPhones, soviel sei gesagt!

Ich empfehle immer eine KeePass Datei mit einem Passwort und einer Passwortdatei zu verschlüsseln. Das bringt euch zwar den Nachteil, dass nur ein Gerät wo auch die Datei vorhanden ist die KeePass nutzen kann, anders herum gesagt, kann nur das Gerät eure Datei auf machen, welches eure Passwortdatei hat und jemand vor sitzt der euer Passwort kennt. Das muss aber letztlich jeder für sich entscheiden.

3) KeePass und einen Server

Ich habe jetzt erstmal auf meinem NAS eine Freigabe eigens für KeePass gemacht sowie einen Benutzer angelegt, der nur auf diese eine Verzeichnis zugreifen kann.

Qnap Systemsteuerung Benutzeranalge, neuer Benutzer nur für die Nutzung von KeePass
Qnap Systemsteuerung Benutzeranalge

Jetzt noch den Freigabeordner erstellen und dann den Benutzer drauf berechtigen, sowie, in meine Fall alle anderen den Zugriff verweigern.

Qnap Systemsteuerung Freigabeordner anlegen allein für die KeePass Datenbank!
Qnap Systemsteuerung Freigabeordner anlegen

Das sollte jetzt erstmal alles sein was wir machen müssen im Qnap System selber. Als nächstes wenden wir uns mal dem Apache-Container wieder zu.

4) Apache DAV-Ready machen

Wir haben ja schon einen Apache als Reverseproxy aufgebaut und müssen deshalb gar nicht so viel machen.

Wir brauchen erstmal einen neuen virtualhost in unserer Apache-config Datei. Meine gesamte Config sieht wie folgt aus:

    #WEBDAV / KeePass
    <VirtualHost *:<Port>>
        # Der Name mit der vhost angesprochen werden soll
        Servername <prefix>.<domain>.<tld>
        # Aktivieren der SSL-Engine (überflüssig wenn ihr es global macht)
        SSLEngine on
        # definiere HSTS für TLS
        Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
        # definiere die erlaubten Protokolle in TLS
        SSLProtocol             all -TLSv1 -SSLv2 -SSLv3
        # definiere die erlaubten Ciphers, sowie deren Reihenfolge
        SSLCipherSuite          'kEECDH+ECDSA kEECDH kEDH HIGH +SHA !aNULL !eNULL !LOW !MEDIUM !MD5 !EXP !DSS !PSK !SRP !kECDH !CAMELLIA !RC4'
        # Erzwinge unsere Cipher Reihenfolge
        SSLHonorCipherOrder     on
        # Mache keine TLS-Komprimierung
        SSLCompression          off
        # Mache keine Session-Tickets
        SSLSessionTickets       off
        # Pfade zum Zertifikat und der Kette sowie dem Key-File
        SSLCertificateFile      /<path>/<to>/cert.pem
        SSLCertificateKeyFile   /<path>/<to>/privkey.pem
        SSLCertificateChainFile /<path>/<to>//chain.pem

        # Spezial-Header die ihr braucht, damit KeePass und WebDav funktioneren
        RequestHeader 	append 	"X-Forwarded-Proto" "https"
        RequestHeader 	set 	"X-Forwarded-Ssl" "on"
        RequestHeader edit Destination ^https http early
        <Location "/">
            ProxyPass        http://<IP>:<Port>/ retry=0
            ProxyPassReverse http://<IP>:<Port>/
            # Spezifische WebDav Funktion über diese wir die KDBX laden werden
            DAV on
            Options +Indexes
        </Location>
    </VirtualHost>

Mit dieser Config erzeugt ihr idealerweise eine neue Sub-Domain und diese akzeptiert WebDav per TLS.

Wenn ihr WebDav auf eurem NAS deaktiviert habt, müsst ihr das einrichten und euren zuvor angelegten Benutzer dafür berechtigen!

5) KeePass-Datei einrichten

Jetzt, sofern ihr das nicht schon habt, richtet ihr euch ein KeePass Datei ein, eure KDBX. Das geht im KeePass Client sehr einfach, wenn ihr die Anwendung gestartet habt, oben links auf „File -> New“ und nach euren Wünschen einrichten.

Ich empfehle ja eine Key-Datei mit einem zusätzlichen Passwort.

Wenn ihr das mit der Key-Datei macht, dann müsst ihr natürlich auf allen Endgeräten diese Key-Datei auch verteilen.

Kleiner Exkurs: Ihr könntet die Key-Datei auch über euren Server im Internet zur Verfügung stellen, indem ihr den Zugang dahin dann wie auch immer sichert. Das finde ich, macht aber wenig Sinn, denn dann verteilt ihr über das gleiche System die Passwortdatei und die Datenbank, weiterhin müsst ihr dann die Passwortdatei wieder mit einem Passwort für den Download absichern, was dann die Sicherheit pot. wieder schwächt. Zudem, wenn die Datei im Internet abrufbar ist, besteht die Möglichkeit das jemand dran kommt. Ich würde es deshalb nicht empfehlen. Manuelle Verteilung ist hier besser.

PS: Ich arbeite dran, das per Zertifikat zu lösen, das wird aber noch dauern bis ich mir die Zeit dafür nehmen kann das zu bauen.

6) Integration auf dem Desktop (Windows)

Die Integration auf einem Windows Desktop ist sehr simpel. Man braucht nur die Anwendung herunterladen. Wenn die Anwendung gestartet ist, oben links, File -> Open With Url -> Eure URL angeben, bis zur Datei. Das kann also wie folgt aussehen:

https://prefix.domain.tld/Folder/File.kdbx

Hier könnt ihr dann auch zzgl. eure Benutzerdaten eingeben um den WebDav-Zugriff zu ermöglichen. Erst dann gebt ihr im nächsten Dialog euer Kennwort und die Key-File Datei für die Datenbank an.

Wer jetzt natürlich nicht immer die Passwörter aus der Datenbank heraus kopieren will, sollte sich über ein Browser-Plugin KeePass mit seinem Browser der Wahl verbinden.

Ich benutze Chrome und habe dafür das Plugin Chrome-iPass. Dieses erzeugt eine lokale Verbindung zu KeePass und kann alle meine Daten dann in die Forms eintragen.

Wie man KeePass nutzt, erkläre ich jetzt hier im Detail nicht, das dürft ihr bitte selber herausfinden.

7) Integration in von KeePass auf Android

Seit der Version 9 glaube ich, hat Android einen Service eingebaut, der eine Integration von Passwort-Safes in das System ermöglicht. Alles davor, geht wie hier beschrieben nicht!

Ich nutze die App „KeePass2Android“ und das „KeyBoardSwap-Plugin“ sowie das „AutoFill-Plugin“ von der App. Man installiere sich die App als erstes. Portiere sein Key-File auf das Smartphone und wähle beim Öffnen einer Datei „HTTPS (WebDav)“ und gebe die genaue Pfadangabe wie oben beschrieben zur KDBX-Datenbank ein, zzgl. seiner WebDav-Login-Credetials. Erst danach das Passwort und das Key-File für die Datenbank.

Wer jetzt möchte, kann z.B. das Entsperren der Datenbank u.a. mit seinem Fingerabdruck koppeln. Ich persönlich mache das, denn Komfort ist mir weiterhin nicht unwichtig! Das kann aber jeder für sich selber entscheiden.

Damit wir jetzt die App recht einfach nutzen können brauchen wir noch die zwei erwähnten Plugins. Das eine Plugin ermöglicht uns erst die Nutzung des AutoFill die andere übernimmt das „Kopieren“ der Daten in den Browser bspw.

Wir gehen also in der App in die Einstellungen und wählen Plugins. Dann landen wir auf einer GitHub Seite, klicken das gewünschte Plugin an, finden dann eine Beschreibung die an ein „Forum“ erinnert, wo unten eingeklappt, Assets steht. Klappt man das aus, kann man die APK dazu herunterladen, welche sich dann installieren lässt. Gleiches gilt für das andere Plugin. Bedenkt: Ihr müsst dann noch Android sagen das ihr „Unbekannte Sourcen“ installieren wollt. In dem Fall könnt ihr das machen.

Leider ist hier die Konfiguration noch nicht zu Ende. Ihr müsst jetzt in die Einstellungen von Android, sucht „AutoFill-Dienst“ und wählt dort nun das KeePass2Android AutoFill aus.

Wenn ihr nun das zweite Plugin für die Tastatur installiert habt, brauchen wir jetzt ein USB-Kabel, schließen das Smartphone am PC an, starten die App auf dem Handy und eine CMD am PC. In der CMD brauchen wir jetzt sog. ADB-Shell, in der wir den Befehl der uns in der App angezeigt wird ausführen. Damit erlauben wir der App selbständig die Tastaturen zu wechseln. Mehr nicht. Das bewirkt dann, dass wenn wir im Browser ein Passwort eintragen, die Tastatur von KeePass2Android angeht, damit könnt ihr dann die Daten einfach kopieren und mit dem Fertig-Button wird alles bestötigt, der Login gestartet und die alte Tastatur aktiviert.

Wollt ihr also nun die Passwörter im Chrome browser nutzen könnt ihr jetzt, wenn ihr auf einer Website seit, über die drei-Punkte auf Teilen gehen, KeePass2Android auswählen und wenn die Info Website in der Datenbank eine Übereinstimmung findet, wird diese angezeigt und kann gewählt werden, alternativ sucht ihr manuell nach.

So hat man seine KeePass-Datei im Android System eingebunden, kann diese für Apps und Websites nutzen. Manchmal etwas umständlich, was bestimmt freundlicher geht, aber hier haben wir den Vorteil, das alles Open-Source ist, wir alle Daten immer in unserer Hand haben und kein anderer diese bekommt.

8) Backup

Jetzt haben wir also die Daten bei uns zu Hause auf dem NAS. Je nachdem welches RAID wir eingerichtet haben, haben wir ja schonmal eine gewisse Form der Redundanz. Wir können aber einfach versehentlich die Daten löschen, oder ein Fehler in den genutzten Clients zerschießt uns einfach die Datenbank; Dafür brauchen wir ein Backup!

Es gibt viele Wege, für die meisten, das meine ich ernst. Wird ein manuelles Backup der Datei alle paar Monate sehr wahrscheinlich ausreichend sein. Speicher die Datei am besten in ein verschlüsselten ZIP auf einem anderen Clodu-Speicher, ohne eurer Key-Datei! Schreibt das dort genutzte Passwort auf, legt den Zettel an einen Ort wo ihr ihn wieder findet!

Ich habe das etwas automatisiert. Dafür nehme ich die QNAP eigene Backup-Lösung und richte dort schlicht ein verschlüsseltes Backup auf meinem DropBox-Account ein. Nachteil der Lösung ist: QNAP hat ein interessantes System zum Verschlüsseln. Anstatt wie ich es erwartet habe, werden komplizierte Dateien abgelegt, die ich alle nicht verstehe und mich auch nicht wirklich damit auseinandersetzen will und das bedeutet dass ich für das wieder einspielen eines Backups natürlich genau den QNAP-Backup Client/Software brauche und das nicht wie bei der manuellen Variante wahrscheinlich einfach auf jedem System machen kann welches ZIPs entpacken kann.

PS: Die Manuelle Version habe ich dennoch, aber das erfolgt so einmal im Jahr.

9) Fazit

Wir haben es geschafft, unserer KeePass-Datei im Internet auf einem sicheren Web zu veröffentlichen bzw. für uns abrufbar zu machen. Wir haben Clients auf Desktop-Windows PC und Android installiert, sowie die Clients über Plugins in die wichtigsten Ökosysteme eingebunden um Komfort zu haben und die Daten sicher bei uns zu Hause zu verwalten. Ich nutze diese Konstruktion nun schon seit Jahren und sie funktioniert sehr stabil. Die Clients können die Datenbanken live synchronisieren, ich habe bis jetzt noch nie ein Problem mit der Konstruktion gehabt und wenn, habe ich ein Backup!

10) Ausblick

Puh, wir haben schon ein wenig geschafft. Kontakte sind unter Kontrolle. Kalender ist unter Kontroller. Passwörter sind auch unter Kontrolle. Widmen wir uns mal dem heimischen Netzwerk was da alles passiert. Dazu werden wir einen PiHole als Docker aufbauen und Inhalte in unserem Netzwerk filtern. Ich sage es vorab: Nein wir filtern nicht alles damit, nur das was per DNS aufgelöst wird und auch nur dann wenn das Endgerät es zulässt, dass wir den DNS konfigurieren und nicht auf direkter IP-Basis kommuniziert. Mal schauen wie lange das dauern wird bis ich den Artikel fertig habe.

Share this Post

Hinterlasse einen Kommentar

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

*
*