Passwort verschlüsseln / auslagern

  • Hallo liebe Gemeinde,

    ich habe ein Frage, habe dazu auch schon die Sucher verwendet, aber irgendwie noch nicht das gefunden was ich gesucht habe, vllt bekomme ich ja so Hilfe oder Tipps :)
    Ich habe ein Script geschrieben welches auch in der Firma von Kollegen verwendet werden soll, dieses Script spricht aber auch meinen FTP Server an um bei Updates eine Meldung zu geben.
    Dazu habe ich Zugangsdaten für den Zugriff im Script hinterlegt, was natütlich etwas blöd ist, da diese jeder lesen könnte. Hauptsächlich gehts mit dabei um das Passwort, ggf. auch Benutzernamen.
    Wie kann ich wenigsten diese beiden Variablen verschlüsseln / unkenntlich machen oder auch verschlüsselt als z.B. ini Datei auslagern ?

    Beispiel:

    Vielen Dank schonmal

    Gruß

  • Also, wenn Du ein PW im Script hast, kann es jede/r auslesen.
    Was man machen kann ist, das man nur mit z. B. USB-Stick das Passwort übergeben kann, aber auch das ist nicht sicher, wenn das ausgelesen wird.
    .
    Du solltest in der Firma vorab klären, ob das was Du machst okay ist. Bei uns habe ich die Erlaubniss schrieftlich und ich sprechen vieles vorher ab, da ich sonst echt Probleme bekommen kann und dafür ist mir meine Arbeit zu wichtig und ich bin gerne da.
    .

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • Hi,

    Danke für die Info, das ist schon OK, es ist eher für unsere Abteilung und mit dem Script werden "nur" die Citrix Server ausgelesen um zu wissen in welchen Modus die gerade geschaltet sind und welche Software gerade zuletzt installiert wurde, also reine Info. Wir sind Domän Admins, das dürfen wir dann schon ;) Die Abfrage der Server erfolgt eh mit einem Zusätzlichen Eingabe vom AD User und Passwort, dieses Windows/Remote Fenster poppt eh auf bei der Abfrage.
    USB geht nicht, bei uns sind die USB Ports gesperrt ( gut, könnte ich frei schalten ), aber da ist noch das zweite Problem, ich bräuchte einen Server an dem der USB angeschlossen ist, oder meinen Rechner immer anlassen, sonst wird er ja nicht gefunden :)

    Ich habe mir eher vorgestellt:

    Passwort eingeben (kleine extra Input Box) -> Passwort wird verschlüsselt -> Speicherung in eine ini Datei
    Im eigentlichen Script ist der Verweis auf die ini Datei -> Abfrage des Passwortes -> Enschlüsselung -> Übergabe an Variable für den FTP Zugriff.

    So in etwa :)

  • Hi,

    wenn jemand das Script decompiliert, ist die Sache mit den verschlüsselten Passwörtern sowieso hinfällig.
    Also kannst du die gleich im Script lassen.
    Wenn du weisst, dass dein Script nicht decompiliert wird, sind die PW "sicher".

  • Hey, wie wäre es mit einer serverseitigen Verwaltung? Ich z.B. nutze bei solche Sachen PHP und greife in meine Skripts nicht direkt auf den FTP Server zu sonder nur über die PHP-Seite. Welche Daten ja dann geändert werden dürfen kannst du so dann definieren.

    Gesendet von meinem HTC Desire HD A9191 mit Tapatalk 2

    • Offizieller Beitrag

    Hey,

    Wenn dein Passwort kein allerwelts Passwort ist, sondern etwas komplexer würde ich mit MD5 Hashes arbeiten.
    Vorteil hier: Selbst wenn jemand den Sorucecode knackt bringt ihm das nichts da das Passwort gar nicht geschpeichert wird sondern nur der Hash.
    Nachteil: Wenns ein nicht so komplexes Passwort ist, kann es relativ simpel geknackt werden (Wie, tut hier nichts zur Sache ;) )

    Du könntest es auch um nochmal sicher zu gehen, den MD5 Hash noch mal Hashen, oder verschlüsseln.

    [autoit]

    ;Zum schreiben:
    $vMD5 = _Crypt_HashData(InputBox("","Bitte geben Sie das passwort ein welches geschrieben werden soll","passwordMuchWowVeryComplexSuchSafe53453213"),$CALG_MD5)
    IniWrite("set.ini","opt","key",$vMD5)
    ;und später zum auslesen:
    $vMD5 = IniRead("set.ini","opt","key","")
    If _Crypt_HashData(InputBox("","Bitte geben Sie das passwort ein"),$CALG_MD5) = $vMD5 Then MsgBox(0,"","Richtiges Passwort!")

    [/autoit]

    lg
    Spider

  • Hallo!

    Also wenn ich es richtig verstanden habe, dann will michach ein Passwort per Script an den FTP server senden, ohne eine manuelle Passworteingabe.
    Also kann man das mit md5 doch vergessen!?
    Die md5 variante ist gut wenn man eigene Passwort abfragen erstellen will.

    If not :?: then ?( else :thumbup:

  • 1. erstmal könntest du eine Sicherheitsgruppe erstellen, in der die User Mitglied sind, die das Script benutzen sollen (Script in eine Freigabe legen) damit haben nur die Personen Zugriff, die das Script benutzen sollen.
    2. ich baue dann den Hash auch immer in mein Script direkt ein.

    Beispiel:

    [autoit]


    $pwd = "1234567890abcdefghijklmnop"

    [/autoit][autoit][/autoit][autoit]

    $1 = "37D67DFCA5D79CBE438964876BB80E3A9FCB74CE9A0B23406AC691D6B9B787"
    $2 = "37D67DFCA5D79CBE438964876BB80E3A9FCB74CE9A0B23406AC691D6B9B787"

    [/autoit][autoit][/autoit][autoit]

    Local $USER = _StringEncrypt(0, $1, $pwd, 4)
    Local $PASS = _StringEncrypt(0, $2, $pwd, 4)

    [/autoit][autoit][/autoit][autoit][/autoit]

    Sicher kann man das auch entschlüsseln, aber für den 0815 User erstmal nicht so einfach :)
    Die IT Richtlinien Regeln da ja auch noch einige Dinge.

    Gruß
    gmmg

  • Mir stellt sich die Frage, ob eine Verschlüsselung hier überhaupt notwendig ist.

    Ein normaler Update-Mechanismus überprüft, ob auf einem bestimmten Server eine neue Version des Programmes vorliegt. Wenn ja, wird diese heruntergeladen und eventuell auch automatisch installiert. Für keine dieser Aktionen ist ein schreibender Zugriff auf den Server notwendig.
    Wenn dein FTP-Server klassisch zusammen mit einem HTTP-Server (z.B. bei einem Freehoster) läuft, dann kannst du die Datei einfach per HTTP (InetGet/InetRead) runterladen. Wenn der FTP-Server aber alleine läuft, würde ich vermuten, dass du ihn selber aufgesetzt hast. (Ich kenne zumindest keinen Hoster, der einen FTP-Server alleine vermietet.) In diesem Fall hast du auch genug Zugriff auf die Konfiguration, um einen neuen, nur lesenden Benutzer einzurichten. ^^

    Gruß

  • Hi,

    wenn jemand das Script decompiliert, ist die Sache mit den verschlüsselten Passwörtern sowieso hinfällig.
    Also kannst du die gleich im Script lassen.
    Wenn du weisst, dass dein Script nicht decompiliert wird, sind die PW "sicher".

    Ich muss Andy vollkommen zustimmen. Die beste Verschlüsselung etc. bringt nix, wenn man den Sourcecode da hat und statt _FTP_OPEN("username",$entschlüsseltes_PW) ein MsgBox(0,"PW",$entschlüsseltes_PW) macht und dann mit seinem FTP-Client wilde Spielchen treibt.
    Es sollte also erst nach einer erfolgreichen Anmeldung auf einem Authentifizierungsserver möglich sein die Verbindung zu dem FTP-Server aufzubauen, der den Zugangstoken für den Client übermittelt.

    Wer immer nur das tut, was er bereits kann - wird auch immer nur das bleiben, was er bereits ist!

  • Hallo, vielen Dank an die Zahlreichen Antworten und Tipps, aber wie es aussieht werden ich das wohl doch per VB umsetzen. Ich habe schon ein Programm in VB geschrieben welches so etwas macht, in der Art habe ich mir das auch mit AutoIt vorgestellt.

    Etwas gekürzt:

    So in etwas, würde auch auf Dropbox ausweichen wenn das einfach und eine bessere Alternative ist. Ich glaube das ist so in etwa das, was chesstiger meinte, oder ?
    Also diese Alternative würde auch gehen, wollte es aber gern per FTP machen/testen.

  • Ich habe schon ein Programm in VB geschrieben


    Da steht aber nichts von Passwort?!

    Ich würde das sowieso anders machen:
    Beim FTP-Server einen Ordner erstellen und genau diese eine Datei reinstellen. Diesen Ordner zugriffsmäßig "zunageln". Also nur Download, kein Upload, keine Filelist, nichts.
    Dann brauchst du auch keine User anlegen, kein Passwort, nichts weiter. Wer mag, kann die Datei dann eben 76x am Tag downloaden. Im Zweifelsfall siehst du die IP aber dann in den Logfiles. Und kannst dem "Kollegen" dann auf den Pelz rücken 8o

  • Jep, da ist auch kein Passwort, das mache ich ja auch per Dropbox ;)

    Ich wollte es mal per FTP machen und Passwort, was aber wohl doch nicht so einfach ist. Werde es dann wohl auch über Dropbox machen, oder wie du es vorgeschlagen hast Andy.

    Danke nochmal an alle.

  • Ganz nebenbei:

    ich würde die Verschlüsselung und Authentifizierung komplett über PHP machen, da es ganz nette Funktionen (Salt, etc.) gibt ;)

    Steve

    [Blockierte Grafik: http://stefan.blagojevic.at/loading.gif]

    Design, Modellbau, CAD <3
    AutoCAD, ArchiCAD, REVIT (ist ein Scheiss, habe aber das Zertifikat)

    Cinema 4D, RuckZuck Statik Programm

    Michael Bay als Architekt


    Da eine Glasfassade! Booom Sichtbeton! Laminiertes Bild auf Mosaiksteinchen! Granit! Granit! Granit! Sichtbetonwand mit 50° Neigung!
    Holzverkleidung erscheint da! Boooooom!

  • Code
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        TestInternetConnection() ' Beim laden des Formulars wird geprüft ob Internet vorhanden ist
        RunUpdate() ' Wenn Internet und eine neue Version gefunden wird, beginnt der Download
        Autostart("CPU_RAM_Status")
    End Sub


    Wenn Du das Ganze aber im MyBase.Load Event machst, dann braucht Dein UI "lange", bis es geladen ist.
    Normalerweise solltest Du erst im Shown Event einen neuen Thread (oder Backgroundworker) starten und mit diesem die Daten holen.
    Dann friert Deine UI nicht ein und die Form wird schnell geladen.

    Zudem hat VB.NET ein Problem mit dem Load Event: Wenn nämlich hier eine Exception geworfen wird, dann wird diese einfach "geschluckt" ohne dass man diese mit Try...Catch abfangen könnte. Dies betrifft aber nur den .Load Event.

    Btw: Anstelle eines neuen Threads (welcher viel RAM benötigt; 1-2MB) könntest Du ebensogut einen Threadpool verwenden.

    Code
    System.Threading.ThreadPool.QueueUserWorkItem(AddressOf MySub, Nothing)

    Ach ja: Wenn ich so Deine Try...Catch Strukturen sehe, möchte ich Dich gerne auf diesen Artikel verweisen:
    https://www.vb-paradise.de/index.php/Thre…%C3%9Fes-Eisen/

    Veronesi

    Einmal editiert, zuletzt von veronesi (24. Oktober 2014 um 08:13)