Wie verstecke ich ein Kennwort?

  • Ab sofort steht euch hier im Forum die neue Add-on Verwaltung zur Verfügung – eine zentrale Plattform für alles rund um Erweiterungen und Add-ons für den DSM.

    Damit haben wir einen Ort, an dem Lösungen von Nutzern mit der Community geteilt werden können. Über die Team Funktion können Projekte auch gemeinsam gepflegt werden.

    Was die Add-on Verwaltung kann und wie es funktioniert findet Ihr hier

    Hier geht es zu den Add-ons

Status
Für weitere Antworten geschlossen.

itari

Benutzer
Registriert
15. Mai 2008
Beiträge
21.900
Reaktionspunkte
14
Punkte
0
Ich möchte ein Skript automatisch ausführen, welches sich als 'admin' im DS-Manager anmelden soll. Das geht per wget und funktioniert auch. (Ich hatte davon ein einem anderen Post berichtet). Diese Anmeldung benötigt aber das Kennwort des admin und es sieht natürlich nicht sonderlich gut aus, diese im Klartext in einem Skript vorzuhalten.

Wie löse ich das Problem? Oder anders gesagt, es wäre ja keine Problem, dass Kennwort des 'admin' verschlüsselt in einer Datei abzulegen. Aber für die Entschlüsselung benötige ich einen Key und dieser wäre wieder als Klartext im Skript zu lesen ...

Mir fehlt gerade die zündende Idee.

Itari
 
um es nicht ganz so offensichtlich zu machen, könntest du:
- als passwort einen dateinamen einlesen bzw selbiges aus einem dateinamen extrahieren
- das pw über eine formel berechnen
- das pw von einem anderen server aus einem netzlaufwerk auslesen

ist alles nicht sicher (wie auch), aber würde das pw zumindest für einen schnellen blick verschleiern.

ein wenig mehr sicherheit würdest du haben, wenn du nur den pw-hash übergeben würdest, aber den wird die DS vermutlich lieber selbst ausrechnen wollen.
 
um es nicht ganz so offensichtlich zu machen, könntest du:
- als passwort einen dateinamen einlesen bzw selbiges aus einem dateinamen extrahieren
- das pw über eine formel berechnen
- das pw von einem anderen server aus einem netzlaufwerk auslesen

ist alles nicht sicher (wie auch), aber würde das pw zumindest für einen schnellen blick verschleiern.

ein wenig mehr sicherheit würdest du haben, wenn du nur den pw-hash übergeben würdest, aber den wird die DS vermutlich lieber selbst ausrechnen wollen.

Ja das ist alles nicht so richtig gut. Ich werde das Kennwort es wohl irgendwie verstecken müssen. Wahrscheinlich ist die Methode die beste, es öffentlich verschlüsselt in eine Datei zu legen ohne zu sagen, woher der Key stammt und nehme dann einen Key, wie den Namen der DS oder so etwas ähnliches - also etwas, was auf jeder DS ein wenig anders ist.

Itari
 
Wenn du das PW in eine Datei schreibst und nur root Zugriff darauf erlaubst, ist es doch so sicher wie es nur sein kann. Und was spricht dageben, dass der User nach dem PW gefragt wird? Kannst ja die Übertragung dann mit SSL absichern.
 
Wenn du das PW in eine Datei schreibst und nur root Zugriff darauf erlaubst, ist es doch so sicher wie es nur sein kann. Und was spricht dageben, dass der User nach dem PW gefragt wird? Kannst ja die Übertragung dann mit SSL absichern.

Es geht um mein lokales Fernsteuerungsskript zum Power-Management, welches den DS-Manager ansteuert, sich also anmeldet und dann die Maske automatisch ausfüllt. Mit dem AdminTool könnte man dann das Kennwort in diesem Skript auslesen, weil das an alle root-Dateien auch darf. Deswegen will ich das Kennwort des admin verschlüsselt in einer Datei ablegen (ccrypt), aber der Key zum verschlüsseln wäre immer noch recht einfach auszumachen und man könnte (auch via AdminTool) die Kennwortdatei dann schnell auslesen. Deswegen möchte ich den Key verstecken ... eine Eingabe durch den User geht nicht bei einem Automaten (Server-Programm).

Itari
 
Verschlüsselung mittels PublicKey? Hast aber immer noch das Problem, dass ein Prozess unter root wohl auch die Rechte hätte den PrivateKey auszulesen. Solange der Prozess selber unter root läuft, wird es nicht ganz sicher gehen. Da wirst du einen "Sicherheitskompromiss" machen müssen.
Wenn du davon ausgehst, dass nur admin (resp root) dieses Tool verwenden darf, dann sehe ich keinen anderen Weg als mit einem Restirisiko zu leben
 
Da wirst du einen "Sicherheitskompromiss" machen müssen.
Wenn du davon ausgehst, dass nur admin (resp root) dieses Tool verwenden darf, dann sehe ich keinen anderen Weg als mit einem Restirisiko zu leben

Und genau dazu hab ich die Frage gestellt, wie 'verpacke' ich möglichst geschickt, das Restrisiko, so dass wir alle damit leben können :) Am liebsten hätte ich einen Key zum Verschlüsseln, den das System selbst liefert, der aber nicht trivial ist.

Itari
 
Am liebsten hätte ich einen Key zum Verschlüsseln, den das System selbst liefert, der aber nicht trivial ist.
Und wo planst du den Schlüssel zum Entschlüsseln zu speichern? ;) Wohl auch auf der DS und dann bist du in etwa so weit wie wenn du das PW im Klartext in eine Datei in /root gehauen hättest ;)
Du kannst hier mit viel Mühe und Aufwand eine Lösung zimmern, die aber dann auch nicht wirklich sicherer ist als das PW im Klartext irgendwo zu haben. Denn irgendwo muss der Schlüssel/PW zum Entschlüsseln ja gespeichert sein und die DS muss ja auch irgendwie dran kommen.
 
Und wo planst du den Schlüssel zum Entschlüsseln zu speichern? ;) Wohl auch auf der DS und dann bist du in etwa so weit wie wenn du das PW im Klartext in eine Datei in /root gehauen hättest ;)
Du kannst hier mit viel Mühe und Aufwand eine Lösung zimmern, die aber dann auch nicht wirklich sicherer ist als das PW im Klartext irgendwo zu haben. Denn irgendwo muss der Schlüssel/PW zum Entschlüsseln ja gespeichert sein und die DS muss ja auch irgendwie dran kommen.

ich dachte, ich bau den Key in eine ex-Abfrage ein (Batch-vi), das versteht ja keiner ... :D

Itari
 
ja wirklich sicher ist nur, das PW auf einen Zettel schreiben und diesen verbrennen bevor man ihn selbst gelesen hat. :D:D
 
ich dachte, ich bau den Key in eine ex-Abfrage ein (Batch-vi), das versteht ja keiner ... :D

Itari
Ich wollte nicht sagen, dass ich gegen Verschlüsselung wäre. Es ist für mich halt einfach eine trügerische Sicherheit, wenn ein Serverprozess ohne Passwort durch den User den Schlüssel verwenden kann.
Dann beruht die Sicherheit nur darauf, dass niemand den vi versteht oder niemand weiss wo das Schlüsselfile liegt und wie es heisst ;)

Wie wäre es denn wenn dein Code eine gültige Admin Anmeldung am DSM voraussetzen würde? Mit Javascript müsste sich der Cookie vom DSM ja eigentlich auslesen und für eigene Abfragen verwenden lassen.

Gruss

tobi
 
Wie wäre es denn wenn dein Code eine gültige Admin Anmeldung am DSM voraussetzen würde? Mit Javascript müsste sich der Cookie vom DSM ja eigentlich auslesen und für eigene Abfragen verwenden lassen.

Die Idee ist, per wget den DS-Manager fernzusteuern, so dass man verschiedene Stop und Start-Zeiten aus einer Tabelle liest und den DS-manager damit füttert. Das sollte in der /usr/syno/etc/rc.d in einem Start-Skript stehen. Da kann sich niemand anmelden ... und das soll ja auch funktionieren, wenn sich niemand anmeldet ... also ein Automat. Leider kenne ich keinen anderen Weg, verschiedene Stop- und Start-Zeiten sonst wie zu realisieren. Ich würde da auch gerne anders vorgehen. Aber leider habe ich bislang kein Kommandos gefunden, da anders zu realisieren.

Aber ich denke, ich habe jetzt einen Weg gefunden, den Key zu verstecken. Ich verwende nicht-darstellbare Zeichen ;)

Itari
 
Hallo,
da fällt mir plink (putty) ein. Wenn eine Putty-Session mit Schlüssel-Authentifizierung definiert ist könntest Du ein wget auf localhost loslassen.
plink ds106 wget://localhost:5000/...
wobei bei putty eine Session mit dem Namen ds106 gespeichert sein muß.

Gruß Götz
 
da fällt mir plink (putty) ein. Wenn eine Putty-Session mit Schlüssel-Authentifizierung definiert ist könntest Du ein wget auf localhost loslassen.
plink ds106 wget://localhost:5000/...
wobei bei putty eine Session mit dem Namen ds106 gespeichert sein muß.

Wie macht man eine Putty-Session auf, ohne Putty bzw. gibt es den putty als Client auf der DS? Der Gedanke ist ja, dass alles auch funktionieren muss, wenn niemand sich per ssh oder telnet anmeldet. Auch wäre die Frage, ob diese Authentifizierung das doch etwas komplexere Anmeldeverfahren des DS-Manager-Logins freischaltet ... aber vielleicht sehe ich das auch noch nicht ganz.

Itari
 
Hallo,
vergiss wieder ganz schnell was ich da geschrieben habe, völliger Quatsch. Du willst ja dem wget eine Authentifizierung gegenüber DSM mitgeben.

Gruß Götz
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat