#!/coding/blatt
Sammelsurium mit Schwerpunkten Linux & IT-Sicherheit

Passwörter mit dem Passwort-Manager pass verwalten

Zur sicheren Verwaltung von Passwörtern hat sich der Einsatz von Passwort-Managern etabliert. Diese verschlüsseln die Passwörter mit einem sogenannten Master-Passwort und ermöglichen einem die sichere Generierung, Speicherung sowie Abfrage der eigenen Passwörter. Die Passwörter werden dabei entweder lokal (z.B. bei KeePass) oder aber in der Cloud (z.B. bei LastPass) abgespeichert.

Ich selbst verwalte seit einigen Jahren meine Passwörter mit pass. Warum ich mich für pass entschieden habe und wie ihr damit eure Passwörter auf einfache Art verwalten könnt, erfahrt ihr in diesem Beitrag.

Verwendete Software für diesen Beitrag
  • Ubuntu v19.04
  • pass v1.7.3
  • GnuPG v2.2.12

Warum pass?

Als ich mich damals auf die Suche nach einem Passwort-Manager gemacht habe, waren mir folgende Apekte bei der Auswahl wichtig:

  • Meine Passwörter sollen bei mir lokal auf dem Rechner gespeichert sein.
  • Bei dem Passwort-Manager soll es sich um Open-Source-Software handeln.
  • Es soll ein sicherer/offener Verschlüsselungsalgorithmus zum Verschlüsseln der Passwörter zum Einsatz kommen.
  • Der Passwort-Manager soll im besten Fall systemunabhängig sein.
  • Das für die Speicherung der Passwörter verwendete Datei-/Datenbankformat soll unabhängig vom verwendeten Passwort-Manager sein, falls dieser nicht systemunabhängig verwendbar ist.
  • Es soll ein einfacher Passwort-Manager sein, der ohne zusätzlichen Schnickschnack und "Fancy-UI" daherkommt. Bei einer Software, welcher ich meine Passwörter anvertraue, ist mein Motto "weniger ist mehr". Sprich, je weniger (unnötige) Funktionen desto besser. Je umfangreicher und komplexer, desto höher die Wahrscheinlichkeit, dass die Software eventuell sicherheitsrelevante Bugs enthält.

pass - the standard unix password manager

Bei pass handelt es sich um einen Passwort-Manager der per Kommandozeile bedient wird.

Password management should be simple and follow Unix philosophy. With pass, each password lives inside of a gpg encrypted file whose filename is the title of the website or resource that requires the password.

Prinzipiell ist pass nur ein einfaches Shell-Skript, dass das bewährte GnuPG zum Verschlüsseln der Passwörter verwendet.

Jedes einzelne Passwort wird in einer mit eurem GPG-Schlüssel verschlüsselten Datei gespeichert. Die Datei kann weitere Informationen, wie z.B. Benutzername, URL usw. enthalten. Ein spezielles Format ist nicht vorgegeben. In der ersten Zeile sollte allerdings immer das Passwort für sich alleine stehen. Die einzelnen Passwort-Dateien können zudem durch Unterteilung in verschiedene Verzeichnisse strukturiert abgespeichert werden.

Hinweis

Im weiteren Verlauf des Beitrags gehe ich davon aus, dass ihr euch mit GPG auskennt und bereits über einen eigenen GPG-Schlüssel (genauer gesagt, ein GPG-Schlüsselpaar) verfügt.

Installation & Initialisierung des Passwort-Speichers

Unter Ubuntu findet sich pass in den offiziellen Paketquellen und kann somit ohne Weiteres per apt installiert werden:

sudo apt install pass
Terminal / Konsole

Verwendet ihr ein anderes Betriebssystem, so verweise ich euch auf die Dokumentation von pass für nähere Informationen.

Nach der Installation steht euch der Befehl pass zur Verfügung, mit dem ihr nun den Passwort-Speicher unter Angabe eurer GPG-Schlüssel-ID eures GPG-Schlüssels initialisiert:

pass init 0x12345678
mkdir: Verzeichnis '/home/user/.password-store/' angelegt
Password store initialized for 0x12345678
Terminal / Konsole

Die Konsoleausgabe zeigt es bereits: es wurde nun ein Verzeichnis namens .password-store in eurem home-Verzeichnis angelegt. In diesem Verzeichnis werden eure Passwörter, also die verschlüsselten Dateien, die eure Passwörter enthalten, zukünftig gespeichert.

Anmerkung GPG-Schlüssel-ID

Bei der anzugebenden GPG-Schlüssel-ID muss es sich um eine ID eines GPG-Schlüssels handeln, der für Verschlüsselung (Encryption) ausgelegt ist. Relevant für diejenigen von euch, die z.B. nicht mit ihrem privaten Hauptschlüssel, sondern mit separaten Subkeys (Unterschlüssel) für Verschlüsselung, Signierung und Authentifizierung arbeiten.

Grundlegende Anwendung

Im Folgenden zeige ich euch die Grundlagen zur Verwaltung von Passwörtern mit pass.

Aufbau einer Passwort-Datei

Wie bereits oben erwähnt, gibt es keine Formatvorgabe für die Passwort-Datei. An erster Stelle sollte allerdings immer das Passwort ohne Zusätze eingefügt werden. Im Folgenden ein Beispiel, wie eine solche Passwort-Datei aussehen kann:

hdsuer!koxosiwjk89
Benutzername: user
URL: https://www.mein-online-shop.de
Telefonpasswort: xyz!!
Notizen: Bei diesem Shop gibt es keine 2FA.
Beispiel-Aufbau einer Passwort-Datei

Passwörter einfügen, bearbeiten und abfragen

Um ein bestehendes Passwort zu speichern, dient das insert-Argument:

pass insert Online-Shops/Amazon
Enter password for Online-Shops/Amazon: 12345
Retype password for Online-Shops/Amazon: 12345
Terminal / Konsole

Nach Eingabe des Passworts wird dieses in der mit eurem GPG-Schlüssel verschlüsselten Datei unter .password-store/Online-Shops/Amazon.gpg gespeichert.

Anschließend könntet ihr die Datei nochmal bearbeiten um weitere Informationen, wie z.B. den Benutzernamen, hinzuzufügen. Dazu gibt es das Argument edit, welches die entsprechende Datei in eurem Standard-Konsolen-Editor öffnet. Da die Datei aber verschlüsselt ist, werdet ihr nun nach der Passphrase eures GPG-Schlüssels gefragt. Erst nach erfolgreicher Eingabe der Passphrase wird die Datei entschlüsselt und kann bearbeitet werden.

pass edit Online-Shops/Amazon
Terminal / Konsole

Nachdem ihr die Änderungen gespeichert habt, könnt ihr euch den Inhalt mittels show in der Konsole ausgeben lassen:

pass show Online-Shops/Amazon
12345
Benutzername: max1978
Terminal / Konsole

Um das Passwort in die Zwischenablage zu kopieren, kann folgender Befehl verwendet werden:

pass -c Online-Shops/Amazon
Copied Online-Shops/Amazon to clipboard. Will clear in 45 seconds.
Terminal / Konsole

Das Passwort verbleibt standardmäßig nur 45 Sekunden in der Zwischenablage und wird danach automatisch gelöscht. Die Zeit von 45 Sekunden kann bei Bedarf angepasst werden - siehe unteren Abschnitt "Fortgeschrittene Anwendung".

Um direkt bei der Speicherung des Passworts weitere Informationen anzugeben, kann insert mit der Multiline-Option eingesetzt werden:

pass insert -m Banken/MeineBank
mkdir: Verzeichnis '/home/user/.password-store/Banken' angelegt
Enter contents of Banken/MeineBank and press Ctrl+D when finished:

12345
Benutzername: max1989
OTP-Secret: HSIWMCHWUJDH
Terminal / Konsole

Um einen Überblick über alle gespeicherten Passwörter bzw. die entsprechenden Dateien zu erhalten, kann das Argument ls zum Einsatz kommen:

pass ls
Password Store
├── Banken
│   └── MeineBank
└── Online-Shops
    └── Amazon
Terminal / Konsole

Passwörter generieren

Falls ihr euch nicht selber Passwörter ausdenken möchtet, bietet pass die Möglichkeit mittels generate welche zu generieren. Hierbei könnt ihr auch optional direkt die Länge des zu generierenden Passworts angeben.

pass generate Online-Shops/Otto 20
The generated password for Online-Shops/Otto is:
#[_9n6IE+;dL?Kr\AFxB
Terminal / Konsole

Passwörter löschen

Zum Löschen einer Passwort-Datei reicht folgender Befehl:

pass rm Online-Shops/Otto
Are you sure you would like to delete Online-Shops/Otto? [y/N] y
'/home/user/.password-store/Online-Shops/Otto.gpg' wurde entfernt
Terminal / Konsole

Backup des Passwort-Speichers

Unabhängig davon wie eure persönliche Backup-Strategie aussieht, müsst ihr einfach nur das Passwort-Speicher-Verzeichnis .password-store sichern.

Fortgeschrittene Anwendung

Einstellungen via Environment-Variablen

Es besteht die Möglichkeit über Environment-Variablen (Umgebungsvariablen) einige Standard-Einstellungen von pass zu überschreiben. Ich habe beispielsweise die Zeit, wie lange ein Passwort in der Zwischenablage verweilt von 45s auf 20s angepasst. Außerdem habe ich den Verzeichnisnamen des Passwort-Speichers geändert. Hierfür habe ich in ~/.profile folgende zwei Zeilen hinzugefügt:

export PASSWORD_STORE_DIR=~/Daten/.PasswortTresor/
export PASSWORD_STORE_CLIP_TIME=20
Bash - Datei: ~/.profile

Weitere mögliche Einstellungen findet ihr in der man-Hilfeseite oder hier.

Erweiterungen & UI-Clients

Für pass gibt es einige durch die Community bereitgestellte Erweiterungen und UI-Clients, um per grafischer Bedienoberfläche mit pass zu arbeiten. Eine Liste aller Erweiterungen und UI-Clients findet ihr auf der pass-Website.

Migration

Ebenso durch die Community bereitgestellt, gibt es diverse Skripte zum Migrieren von Daten, die mit anderen Passwort-Managern gespeichert wurden und nun ins pass-Format umgewandelt werden sollen.

Fazit

Wer einen einfachen und sicheren Passwort-Manager sucht und sowieso bereits mit GPG arbeitet, ist mit pass gut bedient. pass erfindet das Rad nicht neu, sondern greift auf bewährte Verschlüsselungstechnik (GnuPG) zur sicheren Verwaltung von Passwörtern zurück. Gewöhnungsbedürftig ist für einige eventuell die Handhabung per Kommandozeile, aber wie im Beitrag erwähnt, gibt es bei Bedarf auch diverse UI-Clients, um pass auch mit einer grafischen Bedienoberfläche benutzen zu können.