Mostrando entradas con la etiqueta bitlocker. Mostrar todas las entradas
Mostrando entradas con la etiqueta bitlocker. Mostrar todas las entradas

martes, 25 de junio de 2013

Script completo para preparar equipo y lanzar Bitlocker.

Hola.

Hago público el script del que os he hablado estos días.

Este Script, está hecho para que encuentre los portátiles como los encuentre, vaya mandando el comando correspondiente e irá preparando el equipo hasta lanzar el comando que cifra la unidad C:. No hace falta decir que se puede llevar al logonscript del dominio o como es mi caso, lanzarlo de forma continuada en los próximos logon vía SCCM.

Cabe destacar, que para mi, es importante que se apliquen los cambios en la gpo del dominio para que se almacene la clave de bitlocker en directorio activo.

Por partes:

#Comprobamos que la partición de boot está creada por debajo del tamaño Default ya que también se suele crear de 100mb.

    if( $Partitionstatus.size -gt 314572800) { 
        VENTANAPARTREINICIO
        bdehdcfg -target default -restart -quiet
    } 

#comprobamos que hay conectividad con alguno de los DCs antes de lanzar el cifrado ya que las directivas nos obligan a guardar la clave de bitlocker (de todas formas, no habiendo conectividad no funcionaría porque la directiva así lo ordena).

Function CONEXIONREDCIFRADODISCO
{
    $Ping1DC = Test-Connection "!DC1" -Count 1 -Quiet
    $Ping2DC = Test-Connection "!DC2" -Count 1 -Quiet
    if (($Ping1DC -eq $true) -or ($Ping2DC -eq $true)) {
        VENTANANOREINICIO
        manage-bde -on c: -skiphardwaretest -recoverypassword
    }

}

#Comprobamos que el equipo forma parte del dominio, que bitlocker no cifra ya el disco, que la partición es menor y que el equipo es un portátil.

If (($compconfig.domain -eq "!dominio.local") -and ($bitlockstatus -ne "1") -and ($Partitionstatus.size -le 314572800) -and ($tipoequipo -eq "2")) {

 

#----------------------------------------------------------------------------------
#Script para preparar equipos portátiles y lanzar bitlocker en unidad c:
#
# Realizado por Miguel Hernández
#
#Para personalizar este script ha de buscar el signo ! .
#----------------------------------------------------------------------------------

[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Drawing")
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")

$tpm = Get-WmiObject -class Win32_Tpm -namespace "root\CIMV2\Security\MicrosoftTpm"
$BitLockDrive = get-wmiobject -namespace root\CIMv2\Security\MicrosoftVolumeEncryption -class Win32_EncryptableVolume -filter "driveletter='c:'"
$Partitionstatus= Get-WmiObject Win32_DiskPartition -filter "bootpartition='True'"
$CompConfig = Get-WmiObject -Class Win32_ComputerSystem

##obtenemos el tipo de equipo = 1 {"Desktop"},2 {"Laptop"},3 {"Workstation"},4 {"EntServer"},5 {"SmallOfficeOrHomeServer"},6 {"AppliancePC"},7 {"PerformanceServer"},8 {"Maximum"},default {"NoConocido"}
$tipoequipo = $CompConfig.PCSystemType

#Obtenemos la información de si bitlocker ya cifra la unidad
$bitlockstatus = $BitLockDrive.protectionstatus

#-------------------------------------------------------------------------------
#Funciones
#-------------------------------------------------------------------------------

function VENTANAPARTREINICIO
{

#Ventana Form donde se comunica el reinicio

$objForm = New-Object System.Windows.Forms.Form
$objForm.Text = "IT Department."
$objForm.Size = New-Object System.Drawing.Size(300,220)
$objForm.StartPosition = "CenterScreen"

$objForm.KeyPreview = $True
$objForm.Add_KeyDown({if ($_.KeyCode -eq "Enter")
    {$x=$objTextBox.Text;$objForm.Close()}})
$objForm.Add_KeyDown({if ($_.KeyCode -eq "Escape")
    {$objForm.Close()}})

$OKButton = New-Object System.Windows.Forms.Button
$OKButton.Location = New-Object System.Drawing.Size(80,150)
$OKButton.Size = New-Object System.Drawing.Size(120,25)
$OKButton.Text = "Accept"
$OKButton.Add_Click({$x=$objTextBox.Text;$objForm.Close()})
$objForm.Controls.Add($OKButton)

$objLabel0 = New-Object System.Windows.Forms.Label
$objLabel0.Location = New-Object System.Drawing.Size(10,10)
$objLabel0.Size = New-Object System.Drawing.Size(280,30)
$objLabel0.Text = "Como parte del proceso de cifrado se va a preparar la unidad de disco de este equipo."
$objForm.Controls.Add($objLabel0)

$objLabel1 = New-Object System.Windows.Forms.Label
$objLabel1.Location = New-Object System.Drawing.Size(10,45)
$objLabel1.Size = New-Object System.Drawing.Size(280,30)
$objLabel1.Text = "Por favor, cierre todo los programas abiertos ya que al finalizar este proceso el ordenador se reiniciará."
$objForm.Controls.Add($objLabel1)

$objLabel0 = New-Object System.Windows.Forms.Label
$objLabel0.Location = New-Object System.Drawing.Size(10,85)
$objLabel0.Size = New-Object System.Drawing.Size(280,30)
$objLabel0.Text = "As part of Encrypting process it will be prepared the computer's hard drive."
$objForm.Controls.Add($objLabel0)

$objLabel1 = New-Object System.Windows.Forms.Label
$objLabel1.Location = New-Object System.Drawing.Size(10,115)
$objLabel1.Size = New-Object System.Drawing.Size(280,30)
$objLabel1.Text = "Please close all your opened programs because the computer will be restarted."
$objForm.Controls.Add($objLabel1)

$objForm.Topmost = $True

$objForm.Add_Shown({$objForm.Activate()})
[void] $objForm.ShowDialog()

}

function VENTANAREINICIO
{
#Ventana Form donde se comunica el reinicio

$objForm = New-Object System.Windows.Forms.Form
$objForm.Text = "IT Department."
$objForm.Size = New-Object System.Drawing.Size(300,220)
$objForm.StartPosition = "CenterScreen"

$objForm.KeyPreview = $True
$objForm.Add_KeyDown({if ($_.KeyCode -eq "Enter")
    {$x=$objTextBox.Text;$objForm.Close()}})
$objForm.Add_KeyDown({if ($_.KeyCode -eq "Escape")
    {$objForm.Close()}})

$OKButton = New-Object System.Windows.Forms.Button
$OKButton.Location = New-Object System.Drawing.Size(80,150)
$OKButton.Size = New-Object System.Drawing.Size(120,25)
$OKButton.Text = "Accept"
$OKButton.Add_Click({$x=$objTextBox.Text;$objForm.Close()})
$objForm.Controls.Add($OKButton)

$objLabel0 = New-Object System.Windows.Forms.Label
$objLabel0.Location = New-Object System.Drawing.Size(10,10)
$objLabel0.Size = New-Object System.Drawing.Size(280,30)
$objLabel0.Text = "Se va a proceder a la activación del cifrado de su disco."
$objForm.Controls.Add($objLabel0)

$objLabel1 = New-Object System.Windows.Forms.Label
$objLabel1.Location = New-Object System.Drawing.Size(10,40)
$objLabel1.Size = New-Object System.Drawing.Size(280,30)
$objLabel1.Text = "Tras reiniciar, si su equipo es HP tendrá que pulsar la tecla F1 y si es TOSHIBA la tecla F10."
$objForm.Controls.Add($objLabel1)

$objLabel0 = New-Object System.Windows.Forms.Label
$objLabel0.Location = New-Object System.Drawing.Size(10,75)
$objLabel0.Size = New-Object System.Drawing.Size(280,20)
$objLabel0.Text = "It will proceed to activate the hard drive encryption."
$objForm.Controls.Add($objLabel0)

$objLabel1 = New-Object System.Windows.Forms.Label
$objLabel1.Location = New-Object System.Drawing.Size(10,95)
$objLabel1.Size = New-Object System.Drawing.Size(280,40)
$objLabel1.Text = "After restarting your computer if it an HP you will need to press the F1 Key however if it is a TOSHIBA press the F10 key."
$objForm.Controls.Add($objLabel1)

$objForm.Topmost = $True

$objForm.Add_Shown({$objForm.Activate()})
[void] $objForm.ShowDialog()

}

function VENTANANOREINICIO
{
#Ventana Form donde se comunica el proceso

$objForm = New-Object System.Windows.Forms.Form
$objForm.Text = "IT Department."
$objForm.Size = New-Object System.Drawing.Size(300,220)
$objForm.StartPosition = "CenterScreen"

$objForm.KeyPreview = $True
$objForm.Add_KeyDown({if ($_.KeyCode -eq "Enter")
    {$x=$objTextBox.Text;$objForm.Close()}})
$objForm.Add_KeyDown({if ($_.KeyCode -eq "Escape")
    {$objForm.Close()}})

$OKButton = New-Object System.Windows.Forms.Button
$OKButton.Location = New-Object System.Drawing.Size(80,150)
$OKButton.Size = New-Object System.Drawing.Size(120,25)
$OKButton.Text = "Accept"
$OKButton.Add_Click({$x=$objTextBox.Text;$objForm.Close()})
$objForm.Controls.Add($OKButton)

$objLabel0 = New-Object System.Windows.Forms.Label
$objLabel0.Location = New-Object System.Drawing.Size(10,10)
$objLabel0.Size = New-Object System.Drawing.Size(280,20)
$objLabel0.Text = "Se va a lanzar el proceso de cifrado de su disco."
$objForm.Controls.Add($objLabel0)

$objLabel1 = New-Object System.Windows.Forms.Label
$objLabel1.Location = New-Object System.Drawing.Size(10,30)
$objLabel1.Size = New-Object System.Drawing.Size(280,40)
$objLabel1.Text = "Usted podrá trabajar con normalidad, aunque apreciará cambios en el espacio libre de su unidad de disco."
$objForm.Controls.Add($objLabel1)

$objLabel0 = New-Object System.Windows.Forms.Label
$objLabel0.Location = New-Object System.Drawing.Size(10,85)
$objLabel0.Size = New-Object System.Drawing.Size(280,20)
$objLabel0.Text = "It will proceed to activate the hard drive encryption."
$objForm.Controls.Add($objLabel0)

$objLabel1 = New-Object System.Windows.Forms.Label
$objLabel1.Location = New-Object System.Drawing.Size(10,105)
$objLabel1.Size = New-Object System.Drawing.Size(280,30)
$objLabel1.Text = "You can work normally although during this process the hard drive free space will changes."
$objForm.Controls.Add($objLabel1)

$objForm.Topmost = $True

$objForm.Add_Shown({$objForm.Activate()})
[void] $objForm.ShowDialog()

}

#Prepara el disco para bitlocker
function PREPDISCO 
{

    if( $Partitionstatus.size -gt 314572800) {
        VENTANAPARTREINICIO
        bdehdcfg -target default -restart -quiet
    } 
}

#Comprobamos que estamos en red.
Function CONEXIONREDCIFRADODISCO
{
    $Ping1DC = Test-Connection "!DC1" -Count 1 -Quiet
    $Ping2DC = Test-Connection "!DC2" -Count 1 -Quiet
    if (($Ping1DC -eq $true) -or ($Ping2DC -eq $true)) {
        VENTANANOREINICIO
        manage-bde -on c: -skiphardwaretest -recoverypassword
    }

}

#-------------------------------------------------------------------------------
#Ejecución script general
#-------------------------------------------------------------------------------

PREPDISCO

#Entrará en el if si el disco no está cifrado, la unidad de disco está preparada, es un portátil y está en dominio
If (($compconfig.domain -eq "!dominio.local") -and ($bitlockstatus -ne "1") -and ($Partitionstatus.size -le 314572800) -and ($tipoequipo -eq "2")) {
    if (($tpm.isEnabled_InitialValue -eq $true) -and ($tpm.isActivated_InitialValue -eq $true) -and ($tpm.IsOwned_InitialValue -eq $true)){
        #TPM está listo para habilitar bitlocker    
        CONEXIONREDCIFRADODISCO
    }
    elseif (($tpm.isEnabled_InitialValue -eq $true) -and ($tpm.isActivated_InitialValue -eq $true) -and ($tpm.IsOwned_InitialValue -eq $false)){
        #Se obtendrá propiedad de tpm"
        $valor=1
        manage-bde -tpm -takeownership %date%%random%%random%
        CONEXIONREDCIFRADODISCO
    }
    elseif (($tpm.isEnabled_InitialValue -eq $false) -and ($tpm.isActivated_InitialValue -eq $false) -and ($tpm.IsOwned_InitialValue -eq $false)){
        #TPM Se pondrá en ON y se forzará reinicio
        VENTANAREINICIO
        manage-bde -tpm -t
        shutdown -r -t 60 
    }
    elseif (($tpm.isEnabled_InitialValue -eq $false) -and ($tpm.isActivated_InitialValue -eq $false) -and ($tpm.IsOwned_InitialValue -eq $true)){
        #TPM Se pondrá en ON y se forzará reinicio
        VENTANAREINICIO
        manage-bde -tpm -t
        shutdown -r -t 60
    }
    elseif (($tpm.isEnabled_InitialValue -eq $true) -and ($tpm.isActivated_InitialValue -eq $false) -and ($tpm.IsOwned_InitialValue -eq $false)){
           #TPM está encendido peri no activado, se activará y forzará reinicio
        VENTANAREINICIO
        manage-bde -tpm -t
        shutdown -r -t 60
    }
}

viernes, 21 de junio de 2013

Comprobación de requisitos y preparación de disco previo a la activación de bitlocker vía cmd y powershell

Hola.

Como requisito del proceso de cifrado del disco, es imprescindible que nuestro boot esté en una partición diferente a la partición que almacena nuestro o nuestros sistemas operativos.

Si disponéis de esta partición, podéis ver que en el administrador de discos, aparece sin letra y con un tamaño que ronda los 100 a 300mb.

Si no disponéis de esta partición y queréis activar bitlocker via scripting, por supuesto debéis crearla y el comando para que el sistema haga un shrink, traslade archivos de boot y modifique el bcdedit, es el siguiente:

  • bdehdcfg -target default -restart –quiet   #pongo default por hacerlo fácil, esto nos dará una partición de 314572800bytes que redondeando son  300mb.

A mi me aparece la necesidad de comprobar vía scripting que esta partición existe y he utilizado los siguientes comandos:

$Partitionstatus= Get-WmiObject Win32_DiskPartition -filter "bootpartition='True'"

if( $Partitionstatus.size -gt 314572800) {
    VENTANAPARTREINICIO  #función mía que lanza una ventan con aviso de reinicio
    bdehdcfg -target default -restart -quiet
}

saludos.

jueves, 20 de junio de 2013

Cambiar la propiedad de del chip TPM con contraseña aleatoria

Hola.

Pongámonos en situación. Tenemos un equipo con bitlocker activado, en el que para volver a instalar windows y activar Bitlocker, hemos roto la partición y vuelvo a crear otra nueva.

La instalación la haremos sin problema, pero la activación de bitlocker ya no es tan fácil ya que el chip está en modo ON y la contraseña de acceso no la tenemos.

Ante una situación como la descrita y otras muchas donde no somos propietarios o hemos borrado el contenido y password del chip a través de la bios, la solución es la misma. Tenemos que hacernos propietarios de ese chip y para ello, el comando es el siguiente:

  • manage-bde –tpm –takeownership PASSWORD

Para mí y para muchos, ya que he podido comprobar que los foros están repletos de dudas y pocas o ninguna solución, el problema que aprecio es que la password, en un script está en texto plano e incluso, si tienes un parque medianamente extenso, va a ser la misma en todos los equipos.

Es importante subrayar que esta password, no necesitamos conocerla, ya que podemos solucionar cualquier incidencia con la clave de bitlocker que habremos almacenado en archivos de texto o mejor aun, en directorio activo gracias a una gpo correctamente configurada.

Pues bien,  tras las pruebas realizadas :), el comando que os he mostrado anteriormente se puede sustituir por:

  • manage-bde –tpm –takeownership %random%

Esto tiene un problema y es que el random puede ir des 0 a una cantidad de 4 crifras y como manage-bde te obliga a que la contraseña sea de 8 cifras, tampoco nos valdría con un %random%%random%

Pues bien, tras las pruebas realizadas (2), he optado por:

  • manage-bde –tpm –takeownership %time%%random%%random%.

¿Ingenioso eh? :), así tenemos una contraseña fuerte a prueba de auditores quisquillosos.

miércoles, 7 de diciembre de 2011

Habilitar TPM vía linea de comandos en equipos HP

Hola.

Si tu ordenador está en esta lista:

ftp://ftp.hp.com/pub/softpaq/sp49501-50000/sp49507.html

Y quieres habilitar Bitlocker, debes habilitar el chip TPM via linea de comandos ya que la Bios no trae esa opción en su entorno gráfico.

Los pasos son:

1. Descargar el kit de configuración, principalmente necesitaremos: biosconfigutility.exe (es muy importante que descargues este archivo desde una fuente muy fiable).

ftp://ftp.hp.com/pub/softpaq/sp49501-50000/sp49507.exe

2. Descomprimir el contenido preferentemente en una carpeta no ubicada en c:\program files\*, por ejemplo c:\tpm, o bien descomprimir e instalar y luego copiar el contenido de la carpeta por defecto dentro de Program Files a una carpeta en c:\.

3. Dentro de la carpeta donde tenemos Biosconfigutility.exe crear un documento con notepad y salvar con el nombre TPMEnable.REPSET , el contenido de dicho archivo ha de ser:

English
Activate Embedded Security on Next Boot
*Enable
Embedded Security Activation Policy
*No prompts
F1 to Boot
Allow user to reject
Embedded Security Device Availability
*Available

Una vez hemos guardado el archivo con el nombre indicado arriba (cuidad no nos guarde el documento TPMEnable.REPSET.TXT) hay que ejecutar el siguiente comando desde un CMD con privilegios de administrador:

BIOSconfigutility.exe /setconfig:TPMEnable.REPSET /nspwd:"Password9"

*es obligatorio ordenar un cambio de password al reconfigurar la bios con las opción anterior, para volver a dejar el usuario administrador de la bios en blanco, puedes utilizar el siguiente comando:

BIOSConfigutility.exe /nspwd:"" /cspwd:"Password9"

Nota: los modelos 8200 por el momento no funcionan.
Nota2: Damos por supuesto que el equipo tiene la última versión de la Bios.

Saludos.

domingo, 25 de mayo de 2008

Bitlocker y Bitlocker Drive Prepartion Tool

Hola.

No me voy a liar a explicar ni a descubrir por aquí el funcionamiento y para qué vale Bitlocker por que a estas a alturas seguro que ya lo sabeis. Algo que sí he visto que os puede ayudar, es la herramienta "Bitlocker Drive Preparation Tool", como sabreis, para tener vuestro portátil con Windows Vista y/o servidor con Windows Server 2008 cifrado con Bitlocker, necesitais contar con una pequeña partición donde se almacenen los archivos de sistema, pues bién, "Bitlocker Drive Preparation Tool", se encarga de prepararos el equipo para que luego solo tengais que seguir esta guía y listo.