So verwenden Sie verschlüsselte Passwörter in Bash-Skripten

Ein Linux-Laptop im Ubuntu-Stil.

fatmawati achmad zaenuri/Shutterstock.com



Wenn Sie gezwungen sind, ein Linux-Skript zu verwenden, um eine Verbindung zu einer kennwortgeschützten Ressource herzustellen, fühlen Sie sich wahrscheinlich unwohl, dieses Kennwort in das Skript einzugeben. OpenSSL löst dieses Problem für Sie.

Passwörter und Skripte

Es ist keine gute Idee, Passwörter in Shell-Skripten zu speichern. Tatsächlich ist es eine wirklich schlechte Idee. Wenn das Skript in die falschen Hände gerät, kann jeder, der es liest, das Passwort sehen. Aber wenn Sie gezwungen sind, ein Skript zu verwenden, was können Sie sonst tun?





Sie können das Passwort manuell eingeben, wenn der Prozess diesen Punkt erreicht, aber wenn das Skript unbeaufsichtigt ausgeführt wird, funktioniert das nicht. Zum Glück gibt es eine Alternative zum Hartcodieren der Passwörter in das Skript. Kontraintuitiv verwendet es dazu ein anderes Passwort, zusammen mit einer starken Verschlüsselung.

In unserem Beispielszenario müssen wir von unserem Ubuntu-Computer aus eine Remote-Verbindung zu einem Fedora Linux-Computer herstellen. Wir verwenden ein Bash-Shell-Skript, um eine SSH-Verbindung zum Fedora-Computer herzustellen. Das Skript muss unbeaufsichtigt ausgeführt werden, und wir möchten nicht das Kennwort für das Remote-Konto in das Skript einfügen. Wir können in diesem Fall keine SSH-Schlüssel verwenden, da wir so tun, als hätten wir keine Kontrolle oder keine Administratorrechte über den Fedora-Computer.



Wir nutzen das bekannte OpenSSL-Toolkit um die Verschlüsselung zu handhaben und ein Dienstprogramm namens |_+_| um das Passwort in den SSH-Befehl einzugeben.

VERBUNDEN: So erstellen und installieren Sie SSH-Schlüssel aus der Linux-Shell

OpenSSL und sshpass installieren

Da viele andere Verschlüsselungs- und Sicherheitstools OpenSSL verwenden, ist es möglicherweise bereits auf Ihrem Computer installiert. Ist dies jedoch nicht der Fall, dauert die Installation nur einen Moment.



Geben Sie unter Ubuntu diesen Befehl ein:

sshpass

Um |_+_| zu installieren, verwenden Sie diesen Befehl:

sshpass

Auf Fedora müssen Sie Folgendes eingeben:

sshpass

Der Befehl zum Installieren von |_+_| ist:

sshpass

Unter Manjaro Linux können wir OpenSSL installieren mit:

openssl

Um schließlich |_+_| zu installieren, verwenden Sie diesen Befehl:

rusty!herring.pitshaft

Verschlüsselung auf der Befehlszeile

Bevor wir die |_+_| . verwenden Befehl mit Skripten, machen wir uns damit vertraut, indem wir ihn in der Befehlszeile verwenden. Nehmen wir an, das Passwort für das Konto auf dem Remote-Computer lautet |_+_|. Wir werden dieses Passwort mit |_+_| verschlüsseln.

Dazu müssen wir ein Verschlüsselungspasswort angeben. Das Verschlüsselungspasswort wird in den Verschlüsselungs- und Entschlüsselungsprozessen verwendet. Es gibt viele Parameter und Optionen im |_+_| Befehl. Wir werden uns jeden von ihnen gleich ansehen.

openssl

Wir verwenden |_+_| um das Passwort des Remote-Kontos durch eine Pipe und in das |_+_| . zu senden Befehl.

Die |_+_| Parameter sind:

    enc -aes-256-cbc: Der Codierungstyp. Wir verwenden die fortgeschrittener Verschlüsselungsstandard 256-Bit-Schlüsselchiffre mit Cipher-Block-Chaining. -md sha512: Der Nachrichten-Digest-(Hash-)Typ. Wir verwenden den kryptografischen Algorithmus SHA512. -zu: Das sagt |_+_| um die Base-64-Codierung nach der Verschlüsselungsphase und vor der Entschlüsselungsphase anzuwenden. -pbkdf2: Die Verwendung der passwortbasierten Schlüsselableitungsfunktion 2 (PBKDF2) macht es für einen Brute-Force-Angriff viel schwieriger, Ihr Passwort zu erraten. PBKDF2 erfordert viele Berechnungen, um die Verschlüsselung durchzuführen. Ein Angreifer müsste all diese Berechnungen replizieren. -Iter 100000: Legt die Anzahl der Berechnungen fest, die PBKDF2 verwendet. -Salz: Durch die Verwendung eines zufällig angewendeten Salt-Werts wird die verschlüsselte Ausgabe jedes Mal anders, selbst wenn der Klartext gleich ist. -pass pass:’wähle.dein.passwort’: Das Passwort, das wir verwenden müssen, um das verschlüsselte Remote-Passwort zu entschlüsseln. Ersatz |_+_| mit einem robusten Passwort Ihrer Wahl.

Die verschlüsselte Version unseres |_+_| Passwort wird in das Terminalfenster geschrieben.

Verschlüsseltes Passwort in das Terminalfenster geschrieben

Um dies zu entschlüsseln, müssen wir diese verschlüsselte Zeichenfolge an |_+_| . übergeben mit den gleichen Parametern, die wir zum Verschlüsseln verwendet haben, aber das Hinzufügen von |_+_| (entschlüsseln) Option.

openssl

Anzeige

Die Zeichenfolge wird entschlüsselt und unser Originaltext – das Passwort für das Remote-Benutzerkonto – wird in das Terminalfenster geschrieben.

Entschlüsseltes Passwort in das Terminalfenster geschrieben

Das beweist, dass wir unser Passwort für das Remote-Benutzerkonto sicher verschlüsseln können. Wir können es auch entschlüsseln, wenn wir es brauchen, indem wir das Passwort verwenden, das wir in der Verschlüsselungsphase bereitgestellt haben.

Aber verbessert das tatsächlich unsere Situation? Wenn wir das Verschlüsselungskennwort zum Entschlüsseln des Remote-Kontokennworts benötigen, muss das Entschlüsselungskennwort dann doch im Skript enthalten sein? Nun ja, das tut es. Das verschlüsselte Kennwort für das Remote-Benutzerkonto wird jedoch in einer anderen, versteckten Datei gespeichert. Die Berechtigungen für die Datei verhindern, dass jemand außer Ihnen – und natürlich der Root-Benutzer des Systems – darauf zugreifen kann.

Um die Ausgabe des Verschlüsselungsbefehls an eine Datei zu senden, können wir die Umleitung verwenden. Die Datei heißt .secret_vault.txt. Wir haben das Verschlüsselungskennwort in etwas Robusteres geändert.

echo

Es passiert nichts Sichtbares, aber das Passwort wird verschlüsselt und an die Datei .secret_vault.txt gesendet.

Wir können testen, ob es funktioniert hat, indem wir das Passwort in der versteckten Datei entschlüsseln. Beachten Sie, dass wir |_+_| . verwenden hier, nicht |_+_|.

openssl

Anzeige

Das Kennwort wurde erfolgreich aus den Daten in der Datei entschlüsselt. Brunnen benutze |_+_| um die Berechtigungen für diese Datei zu ändern, damit niemand anderes darauf zugreifen kann.

openssl openssl

Die Verwendung einer Berechtigungsmaske von 600 entfernt jeglichen Zugriff für andere als den Dateibesitzer. Wir können jetzt mit dem Schreiben unseres Drehbuchs fortfahren.

VERBUNDEN: So verwenden Sie den chmod-Befehl unter Linux

Verwenden von OpenSSL in einem Skript

Unser Skript ist ziemlich einfach:

pick.your.password
  • Wir setzen eine Variable namens |_+_| zum Aussenseiter.
  • Wir setzen dann eine Variable namens |_+_| auf den Wert des entschlüsselten Passworts, das aus der .secret_vault.txt-Datei gezogen wurde, mit dem gleichen Befehl wie vorhin.
  • Der Standort des entfernten Computers wird in einer Variablen namens |_+_| gespeichert.

Mit diesen Informationen können wir die |_+_| Befehl, um eine Verbindung zum Remote-Computer herzustellen.

  • Die |_+_| Befehl ist der erste Befehl in der Verbindungszeile. Wir verwenden es mit dem |_+_| (Passwort)-Option. Auf diese Weise können wir das Passwort angeben, das an die |_+_| . gesendet werden soll Befehl.
  • Wir verwenden die |_+_| (Pseudo-Terminal-Zuweisung deaktivieren) Option mit |_+_| weil uns auf dem Remote-Computer kein Pseudo-TTY zugewiesen werden muss.
Wie benutzt man VERBUNDEN So verwenden Sie 'Hier-Dokumente' in Bash unter Linux

Wir verwenden eine kurze hier Dokument um einen Befehl an den Remote-Computer zu übergeben. Alles zwischen den beiden |_+_| strings werden als Anweisungen an die Benutzersitzung auf dem Remote-Computer gesendet – in diesem Fall handelt es sich um eine einzelne Zeile Bash-Skript.

Der an den Remote-Computer gesendete Befehl protokolliert einfach den Namen des Benutzerkontos und einen Zeitstempel in einer Datei namens script.log.

Kopieren Sie das Skript, fügen Sie es in einen Editor ein und speichern Sie es in einer Datei namens go-remote.sh. Denken Sie daran, die Details so zu ändern, dass sie die Adresse Ihres eigenen Remote-Computers, das Remote-Benutzerkonto und das Remote-Kontokennwort widerspiegeln.

Verwenden Sie |_+_| um das Skript ausführbar zu machen.

rusty!herring.pitshaft

Anzeige

Es bleibt nur das Ausprobieren. Starten wir unser Skript.

openssl

Da unser Skript eine minimalistische Vorlage für ein unbeaufsichtigtes Skript ist, erfolgt keine Ausgabe an das Terminal. Wenn wir jedoch die Datei script.log auf dem Fedora-Computer überprüfen, können wir sehen, dass Remote-Verbindungen erfolgreich hergestellt wurden und dass die Datei script.log mit Zeitstempeln aktualisiert wurde.

-d

Ihr Passwort ist privat

Ihr Remote-Konto-Passwort wird nicht im Skript aufgezeichnet.

Und obwohl das Entschlüsselungspasswort ist, Im Skript kann niemand sonst auf Ihre .secret_vault.txt-Datei zugreifen, um sie zu entschlüsseln und das Kennwort des Remote-Kontos abzurufen.

WEITER LESEN
  • & rsaquo; Cyber ​​Monday 2021: Die besten Tech-Deals
  • › Was ist MIL-SPEC Fallschutz?
  • › 5 Websites, die jeder Linux-Benutzer mit einem Lesezeichen versehen sollte
  • › Funktionen vs. Formeln in Microsoft Excel: Was ist der Unterschied?
  • › Der Computerordner ist 40: Wie Xerox Star den Desktop erstellte
  • › So finden Sie Ihr Spotify Wrapped 2021
Profilfoto von Dave McKay Dave McKay
Dave McKay benutzte zum ersten Mal Computer, als Lochstreifen in Mode waren, und programmiert seitdem. Nach über 30 Jahren in der IT-Branche ist er heute hauptberuflich Technologiejournalist. Im Laufe seiner Karriere war er als freiberuflicher Programmierer, Leiter eines internationalen Softwareentwicklungsteams, Projektleiter für IT-Services und zuletzt als Datenschutzbeauftragter tätig. Sein Schreiben wurde von howtogeek.com, cloudavvyit.com, itenterpriser.com und opensource.com veröffentlicht. Dave ist ein Linux-Evangelist und Open-Source-Verfechter.
Vollständige Biografie lesen

Interessante Artikel