Scripting mit Masterpasswort statt vieler einzelner Passwörter

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
seep
Beiträge: 544
Registriert: 31.10.2004 14:21:08
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: HSK

Scripting mit Masterpasswort statt vieler einzelner Passwörter

Beitrag von seep » 21.11.2019 09:53:29

Ich habe hier ein Script laufen, dass unter anderem verschiedene verschlüsselte Verzeichnisse mit encfs mountet, so dass ich bei jedem encfs-Mount das passende Passwort eingeben muss. Die Passwörter selbst möchte ich natürlich nicht lesbar irgendwo ablegen, weder im Script selbst noch irgendwo sonst.

Die Idee ist nun, die Passwörter mit einem "Masterpasswort" verschüsselt (z.B. mit GPG) in einer Datei abzulegen und auszulesen, so dass man bei Scriptaufruf halt nur noch ein Passwort eingibt und nicht X verschiedene.

Gibt es da wohl schon etwas Fertiges oder hat jemand schon einmal etwas Ähnliches gebaut?

wanne
Moderator
Beiträge: 7463
Registriert: 24.05.2010 12:39:42

Re: Scripting mit Masterpasswort statt vieler einzelner Passwörter

Beitrag von wanne » 21.11.2019 15:56:23

Sosnst

Code: Alles auswählen

#!/bin/bash
teststring=U2FsdGVkX18ZsjJolMvfFwTCEk9l3qtnEiZuOMDJVaY=
export pw=wrong
pw1=U2FsdGVkX1/pCgfGSBXMJDkxNv4uU7MsorfsxyNClwI=
pw2=U2FsdGVkX1+b7oT8QOqb7elNiKhFXdZ35yT29Wu9rhI=
pw3=U2FsdGVkX1/JnKtOEquax83EcTeVAmQa5R1D8Ws5g2Q=

while [ "$(echo U2FsdGVkX18ZsjJolMvfFwTCEk9l3qtnEiZuOMDJVaY= | openssl enc -aes-192-cbc -pass env:pw -pbkdf2 -base64 -d 2> /dev/null)" != plain ];
do echo -n "Password: "
read -s  pw
echo
export pw
done
echo $pw1 | openssl enc -aes-192-cbc -pass env:pw -pbkdf2 -base64 -d | enfcs -S /home/jc/encrypted1 /tmp/decrypted1
echo $pw2 | openssl enc -aes-192-cbc -pass env:pw -pbkdf2 -base64 -d | enfcs -S /home/jc/encrypted2 /tmp/decrypted2
echo $pw3 | openssl enc -aes-192-cbc -pass env:pw -pbkdf2 -base64 -d | enfcs -S /home/jc/encrypted3 /tmp/decrypted3
In die Variable Teststring muss dasda rein:

Code: Alles auswählen

echo plain | openssl enc -aes-192-cbc -pbkdf2 -base64
Die Passwörter der encfs-Volumes verschlüsselst du mit

Code: Alles auswählen

echo passwort | openssl enc -aes-192-cbc -pbkdf2 -base64
In meinem Fall habe ich das Masterpasswort password genommen und die volumes haben die passwörter pw1 und pw2.

Eventuell willst du die beiden Tests vor dem eigentlichen Script einbauen (Falls du dir nicht ganz sicher bist, dass du auch wirklich in der bash sitzt).

Code: Alles auswählen

#Test ob read da ist.
if ! builtin read 2> /dev/null 
then echo Kein read support
exit 1
fi
#Eigentlich unnötig aber ich will nicht, dass die verschlüsselten Passwörter in ps auftauchen.
if ! builtin echo 2> /dev/null 
then echo Keine sichere shell. 
exit 1
fi 
Edit: camellia durch aes 192 ersetzt. Das ist auch der default in encfs
rot: Moderator wanne spricht, default: User wanne spricht.

Benutzeravatar
seep
Beiträge: 544
Registriert: 31.10.2004 14:21:08
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: HSK

Re: Scripting mit Masterpasswort statt vieler einzelner Passwörter

Beitrag von seep » 21.11.2019 17:34:51

Cool, interessanter Ansatz. :THX:

Meine Idee ging bisher in die Richtung CSV-Datei mit "Source, Destination, Password" in einer Datei, die per gpg verschlüsselt ist, per gpg auf STDOUT entschlüsseln, komplett auslesen bzw. zeilenweise abarbeiten und Verzeichnisse passend mounten.

Antworten