Frage

Ich arbeite an Perl-Skript, das verwendet Erwarten per Telnet auf entfernten Rechnern (don anmelden ‚t fragen, Gotta Verwendung telnet). Ich mache auch notgedrungen p4 Login Operationen nach Bedarf und Verwendung Rohr in den richtigen Passwörtern erwarten. Denn jetzt habe ich gelesen, nur Passwörter von Klartext-Umgebungsvariable, das heißt export PASSWORD=password, was ich weiß, ist keine gute Sicherheit klug.

Was ist der beste Weg, Passwörter für Skripte speichern wie diese, die viele Passwörter für mehrere Systeme benötigen? irgendwie verschlüsselt in einer Textdatei? Oder etwas anderes?

Beachten Sie kann ich nicht einfach die bestehenden Systeme ändern, wie zum Beispiel kann ich nicht wirklich SSH installieren oder so etwas.

War es hilfreich?

Lösung

Wahrscheinlich die beste Art und Weise ist es, die Passwörter in einer separaten Datei zu setzen, und sperren Sie die Sicherheit für diese Datei nach unten, so dass nur Sie Lesezugriff haben. Leider, wenn Sie ein verschlüsseltes Passwort in Ihrem Skript speichern, werden Sie auch die Entschlüsselungsmethode speichern haben, so kann ein Angreifer die Entschlüsselung ausführen und Ihr Passwort wiederherzustellen.

Andere Tipps

Es war eine sehr ähnliche Frage früher finden Sie unter meine Antwort zu.

Kurz gesagt, hat ein Mensch die Vertrauenskette zu beginnen. Alles andere ist Verschleierung.

Warum über die Passwörter im Skript kümmern, wenn Sie Telnet verwenden? Ein vermutlicher Angreifer wird es so einfach oder einfacher zu finden, um die Daten aus der Leitung zu erfassen als von der Remote-Maschine, und es ist wirklich nicht alles, was Sie über es auf jedem Fall tun könnten.

Das klingt wie ein Fall versuchen, Bars im Fenster zu setzen und läßt die Tür Aufklappen.

Da Sie bereits erwarten, sollten Sie in der Lage, die Umleitung ein gpg -d auf eine verschlüsselte Datei Blick in die Ihre Passwörter enthält. Passwörter in einer Systemumgebungsvariablen zu speichern ist einfach falsch. Das Kennwort, das die GPG-Datei zu entschlüsseln verwendet werden würde, würde dann alle Passwörter aus der Datei lädt beim Start eingegeben werden und Ihre Sachen laufen. Dann sind Sie fertig, so dass die Passwörter existieren nur im Nur-Text, während die Anwendung ausgeführt wird.

Bearbeiten nur als Randnotiz, setzt alle Passwörter in einem Skript ist Schlechtigkeit; denken Sie daran, dass das Skript nur eine Klartextdatei, die das Passwort macht so etwas leicht zu sehen. Ebenso auch Anwendungen, die Sie mit „Strings“ kompilieren kann rückgängig gemacht werden, die für Strings suchen kann, die in dem Code enthalten sind (in der Regel Passwörter).

Auf dem unwahrscheinlichen Fall, dass Sie Mac OS X verwenden, fand ich diese raffinierte Art und Weise Benutzernamen und Passwörter von Ihrem Schlüsselbund zu greifen.

Aktualisieren : Der Link als vom 22. Juli gebrochen zu sein scheint, 2013. Die folgende bash Code-Schnipsel zeigt, wie ich die Technik verwenden (auf iTunes Verkaufsdaten downloaden):

domain="itunesconnect.apple.com"
user="user@example.com"
pass=$(security find-internet-password -ws $domain -a $user)

Ich mag die erwähnte Lösung bereits von Passwörtern in einer separaten Datei setzen. Darüber hinaus können Sie die tatsächlichen Passwörter Hash, ähnlich wie was in / etc / passwd gemacht. Obwohl Sie den gleichen Hash-Schlüssel für alle von ihnen je nachdem, wie Ihre Anwendung verwenden können. Offensichtlich ist der Nachteil ist, jemand die Hashkey, um das Skript eingeben muss laufen und das ist ja gar nicht in einer Batch-Umgebung.

Ein Ort zu beginnen, etwas zu lernen über Hashing ist von diesem Stackoverflow Frage

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top