Medienstreaming mit verschlüsselten Festplatten mounten und freigeben

Sylar

Commander
Registriert
März 2011
Beiträge
2.863
Hallo!

Ich habe hier einen Server mit Windows Server. Ich möchte jetzt gerne mit TrueCypt komplette HDD verschlüsseln. Diese Platten möchte ich dann zum Medienstreaming im Netzwerk freigeben.

Das unschöne dabei ist halt: Ich müsste mich jedesmal beim Server einloggen. Die Platte mounten und freigeben. Danach bei den Clients wieder beim Server anmelden, damit ich zugriff auf die Dateien habe.

Die Leistung meines Server reicht locker aus für Medienstreaming. Hab schon getestet.

Vielleicht gibt es ja einen leichteren Weg, wo ich nur mehr das PW eingeben muss direkt am Client. und der rest wird automatisiert :D
 
Arbeite doch einfach mit einem Mountscript welches auf einem USB Stick gespeichert ist. Das packst du dann in den Autostart fertig. Im Fall der Fälle wird einfach der Stecker gezogen und der USB Stick abgezogen/zerstört.

Fertig.
 
Gute Idee! Hätte da schon ein fertiges Skript gefunden. Nur ist es halt nur mehr das Problem mit der Passwort eingabe, dass es am Server passiert. Aber es läuft schon recht gut.
 
Naja das geht mir noch nicht weit genug,

ich würde den USB Stick an sich als "Hardwarekey" nutzen. Da Truecrypt sowas von Hause aus nicht kann muss man einen kleinen Umweg gehen.

Mein Ansatz ist es die Device ID mit der Seriennummer des Sticks als Container Passwort und Key-File zu nutzen, somit kann nur der die TrueCrypt Container entschlüsseln, der das Script auf dem korrekten Stick ausführt. Zusätzlich ist es mir noch wichtig das eigentliche Script unbrauchbar machen zu können wenn der Stick z.B. gestohlen wird. Daher wird der eigentliche Befehlskode nicht auf dem Stick sondern online auf einem Webspace gespeichert. Da der Befehlskode an sich kein Passwort enthält, gibt man keine sensiblen Daten Preis. So kann man jederzeit den Befehlskode, z.B. mit dem Handy löschen und der Hardware-Key ist unbrauchbar. Des weiteren war es mir wichtig, keine wiederherstellbaren Informationen auf dem Stick zu hinterlassen. Daher arbeite ich hier mit dem Programm sdelete welches Dateien sicher löschen kann. Besser wäre es jedoch alles direkt auf einer RamDisk zu speichern!

1. Vorbereitende Maßnahmen
  • SDelete herunterladen und auf dem Server einmal öffnen um die AGBs zu bestätigen
  • den USB Stick der als Hardwarekey genutzt werden soll (hier reicht ein 32MB Stick o.ä.) komplett formatieren.
  • Sdelete auf den Stick kopieren und in der Kommandozeile auf dem Stick "sdelete -c -p 3" ausführen
  • ListUSBDrives herunterladen und die EXE Datei auf den Stick kopieren
  • WGet herunterladen und auf den USB Stick entpacken.

2. Clean VBS erstellen.
Erstelle nun mit einem Texteditor die Datei cleanusbtxt.vbs mit folgendem Inhalt:
Code:
strFilename = "out.txt"
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.GetFile(strFilename)
intFileSize = objFile.Size
Set objFile = objFile.OpenAsTextStream()
strFileContent = objFile.Read(intFileSize)
objFile.Close

Set objRegExp = New RegExp
objRegExp.Pattern = Chr(34)
objRegExp.Global = True
objRegExp.IgnoreCase = True             'False für case-sensitive
strFileContent = objRegExp.Replace(strFileContent, "")
objRegExp.Pattern = "Drive DevID       = "
strFileContent = objRegExp.Replace(strFileContent, "")
Set objFile = objFSO.OpenTextFile(strFilename, 2)
objFile.Write strFileContent
objFile.Close

3. Mount Script erstellen
Nun kannst du mit einem Editor das eigentliche Mount Script erstellen, nennen wir es "tcbatch.cmd". Diese Datei lädst du dann auf einen Webspaceanbieter hoch.
Code:
@echo off
goto usbscan

:usbscan
ListUsbDrives -a > usb.txt
findstr /c:"Drive DevID       = USBSTOR" usb.txt>out.txt
start /wait cleanusbtxt.vbs
goto settings

:settings
SET /p passwort=<out.txt
SET tc="C:\Program Files\TrueCrypt\TrueCrypt.exe"
SET tco=/k "out.txt" /p "%passwort%" /s /b /cn /w /s /q
SET sd=sdelete
SET sdo=-p 7
goto mount

:mount
%tc% %tco% /v test.tc /l h
goto erase

:erase
%sd% %sdo% usb.txt
%sd% %sdo% out.txt
%sd% %sdo% tcbatch.cmd

4. Start Batch erstellen.
Erstelle jetzt eine weitere Batch Datei, nennen wir sie mount.cmd.
Code:
wget http://deinewebseite.de/tcbatch.cmd
tcbatch.cmd

5. Erklärung der Abschnitte

:usbscan
In diesem Abschnitt wird nach allen angeschlossenen USB Geräten an dem PC gesucht und das Ergebnis wird im Klartext in der Datei usb.txt gespeichert. Danach wird nur die Zeile herausgefiltert, die die DeviceID sowie die Seriennummer des Sticks enthält. WICHTIG: Das funktioniert nur dann, wenn der USB Stick das einzige USB Laufwerk ist. Ansonsten muss der findstr Befehl und die VBS angepasst werden.

:settings
Dieser Abschnitt enthält einige Vorgaben um die Batch übersichtlicher zu gestalten.
  • SET /p passwort=<out.txt: Der Inhalt der Datei out.txt kann nun mit dem Befehl %passwort% gesetzt werden.
  • SET tc="C:\Program Files\TrueCrypt\TrueCrypt.exe": Path zur Truecrypt.exe
  • SET tco=/k "out.txt" /p "%passwort%" /s /b /cn /w /s /q: Truecrypt Schalter mit Verweis auf das Containerpasswort und die Key-Datei.
  • SET sd=sdelete: Das Programm sdelete kann jetzt mittels "sd" ausgeführt werden
  • SET sdo=-p 7: sdelete Schalter

:mount
Dieser Abschnitt mountet das TrueCrypt Volume.

:erase
Dieser Abschnitt sorgt dafür, dass die beiden Temp Dateien sicher gelöscht werden. So ist das Passwort und die Keydatei nur in den Sekunden des mountens auf dem USB Stick gespeichert. Danach sorgt das Programm sdelete dafür, dass die beiden Dateien nicht wiederherstellbar gelöscht werden (getestet mit Imagerec).

:wget
Sinn des Ablegens auf einem Webspace ist es, den Hardware-Key Stick auch nach Diebstahl oder Verlust jederzeit aus der Ferne unbrauchbar machen zu können. Sollte jemand also mal in Besitz des Servers und des USB Sticks kommen, kannst du z.B. mit dem Handy die Datei tcbatch.cmd löschen und der Key wird somit unbrauchbar.

Noch ein kleiner Tipp. Damit du dich nicht jedes mal für Kleinigkeiten auf dem Server via Remote einloggen musst, empfehle ich dir den Application Access Server. Dieser erlaubt es z.B. Batch Dateien über eine URL auszuführen. Somit kann man sich für einfache Aufgaben wie Server aus, Mounten, Dismounten, Links z.B. auf dem Handy ablegen und alles mit einem Tastendruck steuern. Aber dran denken das Programm nur im LAN horchen zu lassen! Sonst trennt dich nur NAT vor der sicheren Kompromitierung des Servers.
 

Anhänge

Zuletzt bearbeitet:
wow. danke für das skript!
Hab mir gestern noch einiges angesehen und da du ja das mit dem wget hat mich interessant gemacht.
Könnte man TrueCrypt über einen Browser aufrufen bzw nur das Interface im Browser darstellen oder ein Formular, wo man das PW eingeben muss um es zu mounten?

Die Platte wird sicherlich nicht immer gemountet, deshalb werd ich sie bei nichtgebrauch auch vom System entfernen (Strom und Betriebsstunden verringern)
 
Also ein Weg über den Browser kenne ich nicht. Aber man könnte das mittels Telnet machen. Einfach auf dem Server den Telnet Server installieren und die Firewall so einstellen das nur das LAN bzw. ein bestimmter PC Zugriff auf den Telnet Server hat.

Dann kannst du dich mittels des Telnet Befehls auf dem Server einloggen und folgende Batch starten:
Code:
@echo off
echo Passwort eingeben:
SET passwort=
SET tc="C:\Program Files\TrueCrypt\TrueCrypt.exe"
SET tco=/p "%passwort%" /s /b /cn /w /s /q
%tc% %tco% /v test.tc /l h
cls
set passwort=nothing
cmd /U:0 /P
exit
exit
 
cmd>telnet
o 192.168.1.106

bekomme immer folgende Meldung:
Verbindungsaufbau zu 192.168.1.106...Es konnte keine Verbindung mit dem Host hergestellt werden, auf Port 23: Verbindungsfehler

Firewall wurde Port 23 geöffnet beim Server und Client
 
Telnet Server installiert?
Telnet Server Dienst aktiv?
 

Anhänge

  • telnet.png
    telnet.png
    113,1 KB · Aufrufe: 162
  • telnet2.png
    telnet2.png
    148,4 KB · Aufrufe: 126
Zuletzt bearbeitet:
Server wurde installiert, aber der Dienst war nicht aktiv.
Danke kann mich jetzt über telnet einloggen

Werd mal versuchen ein Batch versuchen auf den Desktop.
mit "telnet -a servername" brauch ich nur mehr das Passowort des anderen eingeben.

Gibt es eine Möglichkeit, dass ich nach der PW eingabe es dann weiter automatisiere. zB dass er dann mount.bat ausführt etc.?
 
Naja automatisch wüßte ich jetzt nicht, aber du könntest eine kleine Batch direkt ins Userverzeichnis legen. Nenne sie z.B. 1.cmd dann muss du nach dem Passwort nur die 1 und Enter drücken.

Willst du es komplett automatisch musst du einen SSH Server installieren und kannst dann mittels plink automatisch Befehle ausführen lassen.
 
Zuletzt bearbeitet:
Hab ein etwas einfacheren Weg mal genommen und ein vbs Skript aufgebaut.

Code:
Dim passwort
set sh=WScript.CreateObject("WScript.Shell")
sh.run "Telnet -a server"
WScript.Sleep 100
sh.SendKeys "y" &vbcr

passwort = InputBox("Passwort eingeben", "Sicherheitscheck")
sh.Sendkeys passwort &vbcr

WScript.Sleep 1000
sh.Sendkeys "dir" &vbcr
Bin jetzt zumindest über telnet drinnen und jetzt muss ich halt noch dein Skript durchgehen und probieren. Was mir nicht so gut gefällt ist halt, dass das Passwort in der InputBox im Klartext ist, aber ich verstehe da noch nicht, wie ich das passwort char da noch einbauen muss in die InputBox...
 
Du könntest das umgehen, wenn du auf dem Server mit dem gleichen Benutzernamen und Passwort arbeitest wie auf dem Client. Dann bewirkt der Schalter -a das Telnet sich mit den Anmeldeinformationen des aktiven Clientkontos anmeldet.

Dann findet auch keine Login/Pw Abfrage statt und das Klartext Passwort Problem ist umgangen.
Ergänzung ()

Du könntest natürlich auch ein kleines AutoIT Script basteln:
Die Datei telnet.exe muss aber von %windir%\system32 nach %windir% kopiert werden sonst gehts nicht!

Code:
Run("telnet.exe -l WINDOWSBENUTZERNAME NETBIOSNAMEDESSERVERS")

WinWaitActive("[CLASS:ConsoleWindowClass]")
Sleep(2000)
Send("PASSWORT{ENTER }")
 
Bei deinem Skript setzt du ja auf einen "Hardwarekey". Wenn ich die Festplatte ausbaue und an einem anderen PC einbaue, kann ich die Platte auch ohne den Hardwarekey mounten, wenn ich das Passwort kenne?

bzw. ist es möglich das Volumen einerseits mit Hardwarekey+Passwort zu mounten, anderseits mit einem Masterpasswort? Es kann durch aus sein, dass ich die Platte mal ausbaue, wenn ich größere Daten kopieren möchte, aber den Server nicht extra hochfahren muss...

Wenn jetzt das TC-Volumen das Kennwort 123456789 hat. UNd ich jetzt dein Skript ändere, wird dann das Passwort des TC-VOlumen dann in "abcdefgh" geändert oder bleibt es 123456789?
 
Sylar schrieb:
Bei deinem Skript setzt du ja auf einen "Hardwarekey". Wenn ich die Festplatte ausbaue und an einem anderen PC einbaue, kann ich die Platte auch ohne den Hardwarekey mounten, wenn ich das Passwort kenne?
Ja. Kennst du das Passwort und hast ggf. das Keyfile, kannst du das Volumen jederzeit und von jedem Rechner aus mounten.

Nur nochmal zum Verständnis. Mein Script erweitert die Verschlüsselung nicht um eine Hardwarekey sondern, die individuelle Seriennummer des Sticks und die GeräteID die von Windows erzeugt wird wird als Verschlüsselungs-Passwort genutzt. Zusätzlich generiert mein Script aus diesen Daten noch ein Keyfile.

Sylar schrieb:
bzw. ist es möglich das Volumen einerseits mit Hardwarekey+Passwort zu mounten, anderseits mit einem Masterpasswort?
Grundsätzlich kann ein Truecrypt Volumen nur mit dem Passwort gemountet werden mit dem es erstellt wurde. Möchtest du ein Masterpasswort verwenden musst du dir selber etwas programmieren.

Sylar schrieb:
Es kann durch aus sein, dass ich die Platte mal ausbaue, wenn ich größere Daten kopieren möchte, aber den Server nicht extra hochfahren muss...
Solange du das Passwort kennst ist das ja kein Problem und ohne Probleme machbar. Passt du mein Script entsprechend an brauchst du nur den Stick in den anderen PC stecken und dort das mount Script ausführen, dann wird die HDD gemountet. Oder aber, du gibst das Passwort direkt ein, ganz egal.

Sylar schrieb:
Wenn jetzt das TC-Volumen das Kennwort 123456789 hat. UNd ich jetzt dein Skript ändere, wird dann das Passwort des TC-VOlumen dann in "abcdefgh" geändert oder bleibt es 123456789?
Mein Script ist nicht in der Lage Passwörter zu ändern. Damit mein Script und damit ein Hardwarekey genutzt werden kann, musst du das Passwort zur Verschlüsselung manuell über die Truecrypt Software ändern, oder ganz neue Volume erstellen.
 
Zuletzt bearbeitet:
Leider kann ich dir nicht so ganz folgen.

Also das TrueCrypt passwort bleibt unverändert!
Ich erstelle mit deinem Skript eine UniqueID aus Seriennummer und die ID von Windows.

Leider verstehe ich noch nicht, wo wird das Passwort für das Volumen abgefragt.

Tarnatos schrieb:
Solange du das Passwort kennst ist das ja kein Problem und ohne Probleme machbar. Passt du mein Script entsprechend an brauchst du nur den Stick in den anderen PC stecken und dort das mount Script ausführen, dann wird die HDD gemountet. Oder aber, du gibst das Passwort direkt ein, ganz egal.
Kann ich jetzt das Volumen mit dem richtigen Passwort auch OHNE den Stick mounten?

Hab mal das mounten etwas verfeinert und mounten jetzt nur noch über die UniqueID der Volumes. Somit erspare ich mir, das anpassen des Skripts. Da die Platten nicht immer den Gleichen Pfad wie zB "\Device\Harddisk1\Partiton0" haben etc.

Code:
:mount
%tc% %tco% /v "\\?\Volume{ID}\" /l h
 
Sylar schrieb:
Also das TrueCrypt passwort bleibt unverändert!
Nein, möchtest du mein Script nutzen muss das Passwort zur Verschlüsselung geändert werden. So das es GeräteD+Seriennummer des Sticks ergibt.

Einfach folgendes ausführen und danach die Datei out.txt öffnen. Darin steht dann das Passwort. Ändern musst du das dann selber.
Code:
ListUsbDrives -a > usb.txt
findstr /c:"Drive DevID       = USBSTOR" usb.txt>out.txt
start /wait cleanusbtxt.vbs

Sylar schrieb:
Leider verstehe ich noch nicht, wo wird das Passwort für das Volumen abgefragt.
Es wird nicht abgefragt. Das Passwort wird jedesmal neu ausgelesen, dann automatisch verarbeitet und danach die Temp Dateien wieder gelöscht. Eine händische Eingabe ist nicht vorgesehen.

Sylar schrieb:
Kann ich jetzt das Volumen mit dem richtigen Passwort auch OHNE den Stick mounten?
Wie bereits gesagt, JA!

Sylar schrieb:
Hab mal das mounten etwas verfeinert und mounten jetzt nur noch über die UniqueID der Volumes. Somit erspare ich mir, das anpassen des Skripts. Da die Platten nicht immer den Gleichen Pfad wie zB "\Device\Harddisk1\Partiton0" haben etc.
Nice! Wußte garnicht, dass das geht.
 
Ok, das erklärt dann einiges! Müsste mal es austesten, ob es mir zusagt oder nicht. bzw. welche änderungen ich mir wünsche..
 
Zurück
Oben