Mit Powershell Kennwörter in Password Safe speichern
Die letzte gute Variante, mit der Kennwörter gespeichert werden können, ist das Open-Soure-Tool Kee-pass.
Keepass ist ein kostenfreier Open-Source Password-Safe mit vielen Funktionen. Keepass verwaltet An-meldeinformationen ähnlich wie das Credential Vault in Dateien oder Datenbanken. Die Datenbanken sind mit AES 256 oder ChaCha20 verschlüsselt. Bei beiden Verfahren handelt es sich um derzeit fak-tisch nicht knackbare symmetrische Algorithmen. Die Datenbanken können auf verschiedene Arten ent-schlüsselt werden, wie z.B. mit Kennwort, mit Fido-Keys, mit Schlüsseldateien oder dem angemeldeten Windows Benutzer. Die einzige Variante, die im Zusammenhang mit Powershell Sinn macht, ist natür-lich die Verschlüsselung über die Benutzeranmeldung (DPAPI). Zusätzlich können Sie die Datenbank mit einer Schlüsseldatei absichern, wodurch Sie faktisch eine Multifaktor-Authentifizierung erreichen.
Um Kennwörter von Powershell aus in Keepass speichern zu können, benö�gen Sie nur das PoshKeePass-Modul aus der Powershell-Gallery. Das Modul bringt alle notwendigen Keepass-Dateien in Form einer .dll mit. Um auf Nummer sicher zu gehen, können Sie die .dlls aber auch durch von Ihnen geprü�e Keepass-Dateien ersetzen. Anschließend können Sie mit dem CmdLet New-KeePassDatabase eine neue Datenbank anlegen.
Install-Module -Name PoshKeePass -Force
# Anlegen einer Datenbank, die über den Windows-Login gesichert ist
New-KeePassDatabase -DatabasePath C:\creds\posh.kdbx -UseNetworkAccount
Wenn Sie eine Datenbank mit Schlüsseldatei erzeugen möchten, müssen Sie die GUI von KeePass be-mühen. Starten Sie dafür KeePass und öffnen die neu erstellte Datenbank über "FIle > Open". Alternativ können Sie über "File > New" die Datenbank auch direkt hier erstellen. Anschließend wählen Sie "File
> Chang Masterkey" und aktivieren die Checkbox "Show Expert Options". Entfernen Sie den Haken bei "Master Password", setzen Sie den Haken bei "Windows User Account" und "Key file / provider" wäh-len Sie den Button "Create".

Abbildung 30 - Konfigurieren Sie eine neue Datenbank
Als nächstes geben Sie den Pfad für die Schlüsseldatei an. Die Schlüsseldatei enthält ein zufällig gene-riertes Kennwort. Um echten "Zufall" zu generieren, müssen Sie Text eingeben und die Maus über ein "White Noise"-Bild bewegen.

Abbildung 31 - Generieren Sie Entropie für einen echten Zufallswert
Anschließend beenden Sie den Dialog mit OK und beenden den Dialog zum Ändern der Verschlüsse-lung ebenfalls mit OK. Keepass fragt Sie nun, ob Sie die Datenbank sichern wollen. Bestätigen Sie das ebenfalls.Sie können jetzt den Sicherheitsschlüssel drucken, mit dem Sie die Datenbank wiederherstel-len können, sollten die Schlüsseldatei verloren gehen. Anschließend können Sie Keepass beenden.
Nachdem Sie eine Datenbank erstellt haben, können Sie ein Datenbankprofil erzeugen. Das Profil wird im Modul-Ordner als "KeePassConfiguration.xml" angelegt und automatisch beim Laden des Moduls eingelesen. Mit Hilfe einer Konfiguration brauchen Sie beim Erstellen oder Einlesen eines Eintrags nicht jedes mal alle Daten angeben, sondern können einfach auf die Konfiguration verweisen.
Keepass erlaubt es außerdem, Kennwörter zu gruppieren. Mit dem Cmdlet New-KeePassGroup legen Sie Gruppen an. Gruppen verhalten sich wie Ordner und können auch Untergruppen enthalten. Die erste Ebene heißt wie der Name, den Sie Ihrer Datenbank vergeben haben - in unserem Beispiel Posh.
# Anlegen einer Konfiguration
New-KeePassDatabaseConfiguration -DatabaseProfileName Demo `
-DatabasePath C:\creds\posh.kdbx -UseNetworkAccount -Default
# Wenn Sie eine Schlüsseldatei verwendet haben, geben Sie den Pfad mit "KeyPath" an New-KeePassDatabaseConfiguration -DatabaseProfileName Demo -PassThru`
-DatabasePath C:\creds\posh.kdbx -KeyPath C:\creds\posh.key -UseNetworkAccount # Anschließend können Sie auf die Konfiguration verweisen
New-KeePassGroup -DatabaseProfileName Demo -KeePassGroupName Azure `
-KeePassGroupParentPath Posh
# Sie können auch Icons hinterlegen, was für eine rein von Powershell genutzte
# DB aber wenig Sinn macht. Notizen können aber helfen, den Überblick zu behalten New-KeePassGroup -KeePassGroupName O365 -DatabaseProfileName Demo `
-KeePassGroupParentPath Posh -IconName World -Notes "Office 365 Accounts"
Neue Einträge erzeugen Sie mit New-KeePassEntry. Achten Sie darauf, dass das KeePass-Modul als Kennwörter wie üblich nur Secure Strings übernimmt. Wenn Sie eine Gruppe angeben, verwenden Sie den / (Slash), nicht Backslash wie im Dateisystem. PoshKeePass quittiert das sonst mit einer Fehlermel-dung. Zum Abrufen verwenden Sie das Cmdlet Get-KeePassEntry.
$Pw = ConvertTo-SecureString -String "Passw0rd" -AsPlainText -Force
New-KeePassEntry -KeePassEntryGroupPath posh/azure -Title "Global Admin" `
-UserName Admin -KeePassPassword $Pw -Notes "Mein erstes Password" `
-URL portal.azure.de -IconName World -DatabaseProfileName Demo
# Um alle Einträge einer Gruppe abzurufen, geben Sie beim Abruf nur den Gruppennamen an
Get-KeePassEntry -KeePassEntryGroupPath posh/Azure -DatabaseProfileName Demo
# Um einen spezifischen Eintrag zu bekommen, filtern Sie auf den Titel, den Username # oder beides. Sie können die Gruppe auch auslassen.
Get-KeePassEntry -DatabaseProfileName DemoKeyFile -Title "Admin" -UserName Admin
# Sie können sich das Kennwort auch direkt als Klartext ausgeben lassen.
Get-KeePassEntry -KeePassEntryGroupPath posh/Azure -DatabaseProfileName DemoKeyFile`
-Title "Admin" -UserName Admin -AsPlainText
# Wenn Sie ein PSCredential-Objekt brauchen, kann PoshKeePass Ihnen das direkt erzeugen
$cred = Get-KeePassEntry -KeePassEntryGroupPath posh/Azure -Title "Global Admin" `
-DatabaseProfileName DemoKeyFile -UserName Admin -AsPlainText
$cred.Credential
# Zum Löschen verwenden Sie Remove-KeePassentry mit dem -cofirm:false
Get-KeePassEntry -KeePassEntryGroupPath posh/Azure -DatabaseProfileName DemoKeyFile`
-Title "Global Admin" -UserName Admin | Remove-KeePassEntry -Confirm:$false