it-swarm.com.de

Was ist die am wenigsten unsichere Methode zum Speichern eines Kennworts, das von einem Skript verwendet wird?

Ich habe ein Bash-Skript, das sich automatisch mit meinem Benutzernamen und Passwort bei einem Dienst authentifiziert. Die Anmeldeinformationen werden derzeit im Skript als Klartext gespeichert.

Welche Vorsichtsmaßnahmen sollte ich treffen, um diese Anmeldeinformationen möglichst sicher zu speichern, während der Skriptzugriff weiterhin zulässig ist?

Klarstellungspunkte:

  • Soweit verfügbar, sollten stattdessen andere Authentifizierungsmethoden verwendet werden. Ich möchte immer noch wissen, was zu tun ist, wenn die Kennwortauthentifizierung die einzige Option ist.
  • Das Passwort überhaupt nicht zu speichern, ist hier keine akzeptable Antwort. Ich frage nach dem Fall, in dem das Skript unbeaufsichtigt auf das Kennwort zugreifen muss.
12
ændrük

Was für ein Service? Bestimmte Dienste verfügen über andere Methoden zur Authentifizierung, z. SSH-Schlüssel für SSH in Verbindung mit dem SSH-Agenten.

Ich würde das Kennwort getrennt vom Skript speichern und sicherstellen, dass alle Pfadkomponenten über die richtigen Berechtigungen verfügen. Stellen Sie beispielsweise sicher, dass sich im Pfad /path/to/file, /, /path und /path/to im Besitz eines Benutzers befinden, dem Sie vertrauen (root), und dass dies nicht der Fall ist Beschreibbar von jemandem, der Ihre Dateien nicht sehen darf. Die empfohlenen Berechtigungen für file sind 600 oder 400.

Das file könnte so aussehen:

PASSWORD='something that you cannot remember'

Verwenden Sie in Ihrem Skript den folgenden Code, um die Variable zu importieren:

. /path/to/file

Stellen Sie sicher, dass Ihr Skript keine Lücken enthält, durch die Angreifer Code im Skriptkontext ausführen können (z. B. unkontrollierte Umgebung, in der möglicherweise eine beliebige $PATH - Variable festgelegt ist, oder ungültige Verwendung anderer Dateien (z. B. Beschaffung von a Welt beschreibbare Datei).

Was den eigentlichen Schutz Ihres Passworts betrifft, können Sie dies nicht. Es muss irgendwie für den anderen Dienst verfügbar sein. Alternativ können Sie die Datei/das Skript mit dem Kennwort mit openssl oder gpg verschlüsseln. Sie müssen also ein Kennwort eingeben, bevor die Anmeldeinformationen entsperrt werden. Dies ist besonders nützlich, wenn Sie sich das Passwort Ihres Dienstes nur schwer merken können.

8
Lekensteyn

Speichern Sie das Kennwort in einer separaten Datei, und schützen Sie die Datei (chmod 700 oder chmod 500), damit nur die autorisierten Benutzer darauf zugreifen können, anstatt es fest zu codieren.

Rufen Sie das Kennwort mit cat /dir/to/file/with/.password ab, anstatt die Datei zu lesen und den Inhalt in einer Variablen zu speichern.

13
Rinzwind