Seite 1 von 1

Bitlocker über Package aktivieren

Verfasst: 28. Feb 2018, 11:26
von HaKp
Hallo zusammen,

hat schon jemand Erfahrung mit dem Rollout von Bitlocker sammeln können?

Werde es wohl in den nächsten Wochen so paketieren müssen, sodass die Verschlüsselung auf allen Clients automatisch aktiviert wird.

Re: Bitlocker über Package aktivieren

Verfasst: 06. Mär 2018, 10:06
von PetCh01
Haben es mit einem Mix aus VBS (Technet),GPO und Paket (Powershell) ausgerollt.
Wollte es erst rein über Powershell machen, aber die MUI Fähigkeit Werte auszulesen funktioniert nicht korrekt.

Re: Bitlocker über Package aktivieren

Verfasst: 16. Mär 2018, 10:35
von HaKp
Moin,

vielen Dank für die Rückinfo.

Kannst du mir hierzu nähere Informationen nennen oder eventuell sogar deine Setup.inf posten? :) Wäre super hilfreich.

Re: Bitlocker über Package aktivieren

Verfasst: 16. Mär 2018, 13:10
von f48614
Hallo,

bei mir läuft die Installation in zwei Schritten. Vielleicht kann man mit dem richtigen OS-Template sich den ersten Schritt sparen.

[Step1]
call bdehdcfg.exe -target default -quiet
cmd.exe /c shutdown -r -f
abort Bitlocker Partition created or check AC power.
[Step2]
call cmd.exe /c manage-bde.exe -tpm -TakeOwnership %langezufallzahl% > "%Temp%\TPM.txt"
call cmd.exe /c manage-bde.exe -on C: -TPMAndPIN %defaultPIN% -RecoveryPassword -SkipHardwaretest -UsedSpaceOnly

Gruß
Thomas

Re: Bitlocker über Package aktivieren

Verfasst: 22. Mär 2018, 12:04
von SRO
Bei uns werden die Geräte direkt nach der OS und Softwareinstallation verschlüsselt und der Wiederherstellungskey im ADObjekt abgelegt. Das läuft wie folgt:

Du benötigst Das Bitlocker Swiss Army Knife von Stéphane vg
https://gallery.technet.microsoft.com/s ... s-a4777303

Eine GPO mit den benötigten Einstellungen für Bitlocker:
Bei uns:
BitLocker-Wiederherstellungsinformationen in Active Directory-Domänendiensten speichern
Verschlüsselungsmethode und Verschlüsselungsstärke für Laufwerke
Festlegen, wie BitLocker-geschützte Betriebssystemlaufwerke wiederhergestellt werden können
Minimale PIN-Länge für Systemstart konfigurieren
Sicheren Start für Integritätsüberprüfung zulassen
TPM-Plattformvalidierungsprofile

Das Feature Bitlocker-Wiederherstellungskennwort-Viewer muss dann auf dem jeweiligen AD Server noch aktiviert werden.

Nach der Verschlüsselung findet der Anwender im Startmenü einen Link zum Ändern der Pin.

Bei der Setup.inf musst dann halt noch die Sektion [Ecryption] mit dem verschlüsselten Startpin hinterlegen, die habe ich entfernt.

Code: Alles auswählen

[Product]
; ReplaceEnv <Variable>

#Set:Product, DONTDELETE 
#Set:DeleteProduct, DELETE

[Set:Product]
; 1:, %App%, CREATE DIRECTORY CASCADED, 0
MkDir "%temp%\Bitlocker\"

; Prüft ob das System entschlüsselt ist
CallHidden powershell -ExecutionPolicy Unrestricted -OutputFormat Text -WindowStyle Hidden -command "& {(&'BitLockerSAK' -GetEncryptionState).EncryptionState} > %temp%\Bitlocker\CurrentEncryptionState.txt"
WaitUntilFileExists  "%temp%\Bitlocker\CurrentEncryptionState.txt" ,5
Set EncryptionState=ReadTextFile ("%temp%\Bitlocker\CurrentEncryptionState.txt")
Set EncryptionState=Uppercase(%EncryptionState%)
If  %EncryptionState%<>FULLYDECRYPTED Then EncryptionState Else StartDriveEncryption EndIf

[StartDriveEncryption]

; Prüfe ob ein TPM-Module vorhanden ist.
CallHidden powershell -ExecutionPolicy Unrestricted -OutputFormat Text -WindowStyle Hidden -command "& {&'BitlockerSAK' -IsTPMEnabled} > %temp%\Bitlocker\IsTPMEnabled.txt"
WaitUntilFileExists  "%temp%\Bitlocker\IsTPMEnabled.txt" ,5
Set IsTPMEnabled=ReadTextFile ("%temp%\Bitlocker\IsTPMEnabled.txt")
Set IsTPMEnabled=Uppercase(%IsTPMEnabled%)
If  %IsTPMEnabled%<>TRUE Then TPMNotEnabled EndIf
ErrorLogMsg [Info] Ein TPM ist vorhanden

; Prüfe ob das TPM-Module aktiv ist
CallHidden powershell -ExecutionPolicy Unrestricted -OutputFormat Text -WindowStyle Hidden -command "& {&'BitlockerSAK' -IsTPMActivated} > %temp%\Bitlocker\IsTPMActivated.txt"
WaitUntilFileExists  "%temp%\Bitlocker\IsTPMActivated.txt" ,5
Set IsTPMActivated=ReadTextFile ("%temp%\Bitlocker\IsTPMActivated.txt")
Set IsTPMActivated=Uppercase(%IsTPMActivated%)
If  %IsTPMActivated%<>TRUE Then TPMNotActivated EndIf
ErrorLogMsg [Info] Das TPM ist aktiviert

; Prüfe den Besitz des TPM-Modules
CallHidden powershell -ExecutionPolicy Unrestricted -OutputFormat Text -WindowStyle Hidden -command "& {&'BitlockerSAK' -IsTPMOwned} > %temp%\Bitlocker\IsTPMOwned.txt"
WaitUntilFileExists  "%temp%\Bitlocker\IsTPMOwned.txt" ,5
Set IsTPMOwned=ReadTextFile ("%temp%\Bitlocker\IsTPMOwned.txt")
Set IsTPMOwned=Uppercase(%IsTPMOwned%)
If  %IsTPMOwned%<>TRUE Then TPMNotOwned EndIf
ErrorLogMsg [Info] Das TPM ist im Besitz

; Prüft ob das System entschlüsselt ist
CallHidden powershell -ExecutionPolicy Unrestricted -OutputFormat Text -WindowStyle Hidden -command "& {(&'BitLockerSAK' -GetEncryptionState).EncryptionState} > %temp%\Bitlocker\CurrentEncryptionState.txt"
WaitUntilFileExists  "%temp%\Bitlocker\CurrentEncryptionState.txt" ,5
Set EncryptionState=ReadTextFile ("%temp%\Bitlocker\CurrentEncryptionState.txt")
Set EncryptionState=Uppercase(%EncryptionState%)
If  %EncryptionState%<>FULLYDECRYPTED Then EncryptionState EndIf
ErrorLogMsg [Info] Das System ist entschlüsselt

; Prüft ob Schlüsselschutzvorrichtungen vorhanden sind
CallHidden powershell -ExecutionPolicy Unrestricted -OutputFormat Text -WindowStyle Hidden -command "& {&'BitLockerSAK' -GetKeyProtectorIds} > %temp%\Bitlocker\GetKeyProtectorIds.txt"
WaitUntilFileExists  "%temp%\Bitlocker\GetKeyProtectorIds.txt" ,5
Set GetKeyProtectorIds=ReadTextFile ("%temp%\Bitlocker\GetKeyProtectorIds.txt")
If  %GetKeyProtectorIds%<>"" Then ResetKeyProtectors EndIf
If  %GetKeyProtectorIds%<>"" Then ResetKeyProtectorsFailed EndIf
ErrorLogMsg [Info] Es ist keine Schlüsselschutzvorrichtungen vorhanden

; Setzen des Wiederherstellungskennwortes für das System
CallHidden powershell -ExecutionPolicy Unrestricted -OutputFormat Text -WindowStyle Hidden -command "& {((&'Add-BitLockerKeyProtector' -MountPoint %systemdrive% -RecoveryPasswordProtector).KeyProtector | Where-Object {$_.KeyProtectorType -eq 'RecoveryPassword'}).KeyProtectorId} > %temp%\Bitlocker\RecoveryPasswordProtectorId.txt"
WaitUntilFileExists  "%temp%\Bitlocker\RecoveryPasswordProtectorId.txt" ,5
CallHidden powershell -ExecutionPolicy Unrestricted -OutputFormat Text -WindowStyle Hidden -command "& {(&'Get-Content' -Path '%temp%\Bitlocker\RecoveryPasswordProtectorId.txt') -match '\{[0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12}\}'} > %temp%\Bitlocker\isProtectorIdGUID.txt"
WaitUntilFileExists  "%temp%\Bitlocker\isProtectorIdGUID.txt" ,5
Set RecoveryPasswordProtectorId=ReadTextFile ("%temp%\Bitlocker\RecoveryPasswordProtectorId.txt")
Set RecoveryPasswordProtectorId=Uppercase(%RecoveryPasswordProtectorId%)
Set isProtectorIdGUID=ReadTextFile ("%temp%\Bitlocker\isProtectorIdGUID.txt")
Set isProtectorIdGUID=Uppercase(%isProtectorIdGUID%)
If  %isProtectorIdGUID%<>TRUE Then SetRecoveryPasswordProtectorFailed EndIf
ErrorLogMsg [Info] Das Wiederherstellungskennwort wurde gesetzt

; Sichern des Wiederherstellungskennwortes im AD
CallHidden powershell -ExecutionPolicy Unrestricted -OutputFormat Text -WindowStyle Hidden -command "& {((&'Backup-BitLockerKeyProtector' -MountPoint %systemdrive% -KeyProtectorId '%RecoveryPasswordProtectorId%').KeyProtector | Where-Object {$_.KeyProtectorType -eq 'RecoveryPassword'}).KeyProtectorId} > %temp%\Bitlocker\BackupRecoveryPasswordProtector.txt"
WaitUntilFileExists  "%temp%\Bitlocker\BackupRecoveryPasswordProtector.txt" ,5
Set BackupRecoveryPasswordProtector=ReadTextFile ("%temp%\Bitlocker\BackupRecoveryPasswordProtector.txt")
Set BackupRecoveryPasswordProtector=Uppercase(%BackupRecoveryPasswordProtector%)
If  %BackupRecoveryPasswordProtector%<>%RecoveryPasswordProtectorId% Then BackupRecoveryPasswordProtectorFailed EndIf
ErrorLogMsg [Info] Das Wiederherstellungskennwort wurde ins AD gesichert

; Setzen des Standard BitLocker-Pin
CallHidden powershell -ExecutionPolicy Unrestricted -OutputFormat Text -WindowStyle Hidden -command "& {((&'Add-BitLockerKeyProtector' -MountPoint %systemdrive% -Pin (ConvertTo-SecureString '%PIN%' -AsPlainText -Force) -TPMandPinProtector).KeyProtector | Where-Object {$_.KeyProtectorType -eq 'TpmPin'}).KeyProtectorId} > %temp%\Bitlocker\TPMandPinProtector.txt"
WaitUntilFileExists  "%temp%\Bitlocker\TPMandPinProtector.txt" ,5
CallHidden powershell -ExecutionPolicy Unrestricted -OutputFormat Text -WindowStyle Hidden -command "& {(&'Get-Content' -Path '%temp%\Bitlocker\TPMandPinProtector.txt') -match '\{[0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12}\}'} > %temp%\Bitlocker\isPINProtectorIdGUID.txt"
WaitUntilFileExists  "%temp%\Bitlocker\isPINProtectorIdGUID.txt" ,5
Set TPMandPinProtector=ReadTextFile ("%temp%\Bitlocker\TPMandPinProtector.txt")
Set TPMandPinProtector=Uppercase(%TPMandPinProtector%)
Set isPINProtectorIdGUID=ReadTextFile ("%temp%\Bitlocker\isPINProtectorIdGUID.txt")
Set isPINProtectorIdGUID=Uppercase(%isPINProtectorIdGUID%)
If  %isPINProtectorIdGUID%<>TRUE Then SetTPMandPinProtectorFailed EndIf
ErrorLogMsg [Info] Der PIN wurde gesetzt

; BitLocker aktivieren
CallHidden %systemroot%\System32\manage-bde.exe -protectors -enable %systemdrive%
CallHidden %systemroot%\System32\manage-bde.exe -on %systemdrive%
ErrorLogMsg [Info] Das System ist für die Verschlüsselung vorbereitet und wird nach einen Neustart verschlüsselt
CallHidden shutdown -r -t 10
AbortReboot INFO: Das System ist für die Verschlüsselung vorbereitet und wird nach einen Neustart verschlüsselt

[TPMNotEnabled]
Abort ERROR: Kein TPM vorhanden.

[TPMNotActivatable]
Abort ERROR: TPM konnte nicht aktiviert werden

[TPMcannotTakeOwnerShip]
Abort ERROR: konnte Besitz des TPMs nicht übernehmen

[TPMNotActivated]
If  DoesFileExist("%temp%\Bitlocker\tryTPMActivation.txt") == "1" Then TPMNotActivatable EndIf
CallHidden powershell -ExecutionPolicy Unrestricted -OutputFormat Text -WindowStyle Hidden -command "& {&'Initialize-Tpm'} > %temp%\Bitlocker\tryTPMActivation.txt"
CallHidden shutdown -r -t 5
AbortReboot INFO: Versuche das TPM zu aktivieren 

[TPMNotOwned]
If  DoesFileExist("tryTakeTPMOwnership.txt") == "1" Then TPMcannotTakeOwnerShip EndIf
CallHidden powershell -ExecutionPolicy Unrestricted -OutputFormat Text -WindowStyle Hidden -command "& {&'Initialize-Tpm'} > %temp%\Bitlocker\tryTakeTPMOwnership.txt"
CallHidden shutdown -r -t 5
AbortReboot INFO: Versuche das TPM zurückzusetzten 

[EncryptionState]
If %EncryptionState% == FULLYENCRYPTED       Then DriveFullyEncrypted       EndIf
If %EncryptionState% == ENCRYPTIONINPROGRESS Then DriveEncryptionInProgress EndIf
If %EncryptionState% == ENCRYPTIONPAUSED     Then DriveEncryptionPaused EndIf
If %EncryptionState% == DECRYPTIONPAUSED     Then DriveDecryptionPaused EndIf
If %EncryptionState% == DECRYPTIONINPROGRESS Then DriveDecryptionInProgress EndIf
If %EncryptionState% == FULLYDECRYPTED       Then DriveFullyDecrypted EndIf

[DriveFullyEncrypted]
ErrorLogMsg [Info] Das Laufwerk wurde erfolgreich verschlüsselt

[DriveEncryptionInProgress]
For Counter,0,100,1,"CheckEncryptionProgress"
If  %EncryptionProgress%<>100 Then DriveEncryptionInProgress Else DriveFullyEncrypted EndIf

[DriveDecryptionInProgress]
If  %EncryptionProgress%<>0 Then DriveDecryptionInProgress Else DriveFullyDecrypted EndIf
For Counter,100,0,-1,"CheckDecryptionProgress"

[CheckEncryptionProgress]
CallHidden powershell -ExecutionPolicy Unrestricted -OutputFormat Text -WindowStyle Hidden -command "& {(&'BitLockerSAK' -GetEncryptionState).CurrentEncryptionProgress} > %temp%\Bitlocker\CurrentEncryptionProgress.txt"
WaitUntilFileExists  "%temp%\Bitlocker\CurrentEncryptionProgress.txt" ,5
Set EncryptionProgress=ReadTextFile ("%temp%\Bitlocker\CurrentEncryptionProgress.txt")
Set EncryptionProgress=Uppercase(%EncryptionProgress%)
Set Counter=%EncryptionProgress%
ErrorLogMsg [Info] Verschlüsselt (Prozent): %EncryptionProgress%
Sleep 60000

[CheckDecryptionProgress]
-Sleep 60000
-ErrorLogMsg [Info] Verschlüsselt (Prozent): %EncryptionProgress%
-Set Counter=%EncryptionProgress%
-Set EncryptionProgress=Uppercase(%EncryptionProgress%)
-Set EncryptionProgress=ReadTextFile ("%temp%\Bitlocker\CurrentEncryptionProgress.txt")
-WaitUntilFileExists  "%temp%\Bitlocker\CurrentEncryptionProgress.txt" ,5
-CallHidden powershell -ExecutionPolicy Unrestricted -OutputFormat Text -WindowStyle Hidden -command "& {(&'BitLockerSAK' -GetEncryptionState).CurrentEncryptionProgress} > %temp%\Bitlocker\CurrentEncryptionProgress.txt"

[DriveFullyDecrypted]
-ErrorLogMsg [Info] Das Laufwerk wurde erfolgreich entschlüsselt

[DriveEncryptionPaused]
Abort ERROR: Die Laufwerksverschlüsselung ist gerade pausiert

[DriveDecryptionPaused]
-Abort ERROR: Die Laufwerksentschlüsselung ist gerade pausiert

[ResetKeyProtectors]
ErrorLogMsg [Info] versuche Schlüsselschutzvorrichtungen zurück zu setzten
CallHidden powershell -ExecutionPolicy Unrestricted -OutputFormat Text -WindowStyle Hidden -command "& {&'Disable-BitLocker' -MountPoint %systemdrive%} > %temp%\Bitlocker\Disable-BitLocker.txt"
CallHidden powershell -ExecutionPolicy Unrestricted -OutputFormat Text -WindowStyle Hidden -command "& {&'BitLockerSAK' -GetKeyProtectorIds} > %temp%\Bitlocker\GetKeyProtectorIds.txt"
Set GetKeyProtectorIds=ReadTextFile ("%temp%\Bitlocker\GetKeyProtectorIds.txt")

[ResetKeyProtectorsFailed]
Abort ERROR: Schlüsselschutzvorrichtungen konnten nicht zurück gesetzt werden

[SetRecoveryPasswordProtectorFailed]
Abort ERROR: Wiederherstellungskennwort konnten nicht gesetzt werden

[BackupRecoveryPasswordProtectorFailed]
Abort ERROR: Sichern des Wiederherstellungskennwort im AD ist gescheitert

[SetTPMandPinProtectorFailed]
Abort ERROR: PIN konnten nicht gesetzt werden

[Set:DeleteProduct]
; Prüft ob das System entschlüsselt ist
If  %EncryptionState%<>FULLYDECRYPTED Then EncryptionState Else DriveFullyDecrypted EndIf
-Set EncryptionState=Uppercase(%EncryptionState%)
-Set EncryptionState=ReadTextFile ("%temp%\Bitlocker\CurrentEncryptionState.txt")
-WaitUntilFileExists  "%temp%\Bitlocker\CurrentEncryptionState.txt" ,5
-CallHidden powershell -ExecutionPolicy Unrestricted -OutputFormat Text -WindowStyle Hidden -command "& {(&'BitLockerSAK' -GetEncryptionState).EncryptionState} > %temp%\Bitlocker\CurrentEncryptionState.txt"
-Call %systemroot%\System32\manage-bde.exe -off %systemdrive%

[Shell:Product]
%ALLUSERSPROFILE%\Microsoft\Windows\Start Menu\Programs\Bitlocker Pin ändern.lnk,%windir%\System32\bdechangepin.exe,,%windir%\System32,,"%windir%\System32\bdechangepin.exe",0,-1,0


Re: Bitlocker über Package aktivieren

Verfasst: 04. Apr 2018, 15:26
von HaKp
Moin zusammen,

habe es leider aus zeitlichen Gründen nicht eher geschafft mich zu melden. Aber vielen Dank für eure detaillierten Posts! :)

Ich setze mich dann mal in den nächsten Tagen mit eurem Input an die nächste Setup.inf :P

Re: Bitlocker über Package aktivieren

Verfasst: 09. Apr 2018, 12:52
von PetCh01
SRO hat geschrieben:Bei uns werden die Geräte direkt nach der OS und Softwareinstallation verschlüsselt und der Wiederherstellungskey im ADObjekt abgelegt. Das läuft wie folgt:

Du benötigst Das Bitlocker Swiss Army Knife von Stéphane vg
https://gallery.technet.microsoft.com/s ... s-a4777303
....
[/code]
Habe ich ähnlich gelöst, jedoch noch mit dem vbs da multilang bei mir und powershell falsche outputs geworfen hat.
Ich werde deinen Code mal prüfen ob das bei uns funktioniert.

(Falscher Output = OS komplettsprache auf zb. CZ, es wirft dann kein "BitlockerEncryptionInProgress" sondern irgendwas in Landessprache, was nicht mit Powershell rückwärts prüfbar war (in meinen Tests) die Abfragen ergaben falsche true and false Ergebnisse.

Re: Bitlocker über Package aktivieren

Verfasst: 09. Apr 2018, 17:10
von HaKp
Moin,

ich habe mein Package nun auch so gut wie fertig.

Genutzt habe ich aber folgenden Befehl für die Abfrage, ob das Notebook im Akku- oder Netzbetrieb ist (Benötigt für HDD Vorbereitung):

Code: Alles auswählen


Callhidden cmd /c WMIC Path Win32_Battery Get BatteryStatus >"%BatteryStatusLog%"

;## In der Logdatei ist 1 = Akkubetrieb // 2 = Netzteil

If DoesTextInFileExist ("2", "%BatteryStatusLog%") == "1" Then "Start" Else "Abort" EndIf


Re: Bitlocker über Package aktivieren

Verfasst: 29. Jan 2019, 14:10
von CMoehlmann
Moin, läuft das bei euch unter Windows 10 mit aktiver UAC? Die Powershell-Aufrufe und die manage-bde müssen ja mit erhöhten Rechten ausgeführt werden. Hatte versucht das so zu lösen, in der PS ISE funktioniert das auch wunderbar, nur im Paket bzw. Packageeditor nicht. BSP:

Code: Alles auswählen

callhidden powershell -OutputFormat Text -WindowStyle Hidden -command "& {Start-Process -filepath PowerShell -ArgumentList 'Import-Module C:\bitlocker_tmp\BitLockerSAK.ps1;BitlockerSAK -IsTPMEnabled > C:\Bitlocker_tmp\IsTPMEnabled.txt' -Verb RunAs}"

Re: Bitlocker über Package aktivieren

Verfasst: 21. Feb 2019, 15:25
von SRO
Die Installation wird doch im Systemkontext ausgeführt, also viel höhere Rechte gibbet da net.
Wie hast du denn das Packaging Center gestartet?

...und UAC ist aus

Re: Bitlocker über Package aktivieren

Verfasst: 21. Feb 2019, 23:16
von Hendrik_Ambrosius
Ich habe neulich mal eine einfache passwortbasierte Bitlocker Verschlüsselung zu gescriptet:

setup.inf-Auszug:
[Set:Installation]
CallHidden Powershell.exe -ExecutionPolicy Unrestricted -Command "%Src%\bitlocker-activation.ps1"

bitlocker-activation.ps1
$SecureString = ConvertTo-SecureString "Matrix42!!!" -AsPlainText -Force
Enable-BitLocker -MountPoint "C:" -EncryptionMethod Aes256 -UsedSpaceOnly -PasswordProtector $SecureString