Creación de discos de plantilla de máquina virtual blindada Linux
En este tema se explica cómo preparar un disco de plantilla para máquinas virtuales blindadas Linux que se puede usar para crear instancias de una o varias máquinas virtuales de inquilino.
Requisitos previos
Para preparar y probar una máquina virtual blindada Linux, necesitará los siguientes recursos disponibles:
- Un servidor con capacidades de virtualización que ejecute Windows Server, versión 1709 o posterior
- Un segundo equipo (Windows 10 o Windows Server 2016) que pueda ejecutar el Administrador de Hyper-V para conectarse a la consola de la máquina virtual en ejecución.
- Una imagen ISO para uno de los sistemas operativos de máquina virtual blindada Linux admitidos:
- Ubuntu 16.04 LTS con el kernel 4.4.
- Red Hat Enterprise Linux 7.3
- SUSE Linux Enterprise Server 12 con Service Pack 2.
- Acceso a Internet para descargar el paquete lsvmtools y las actualizaciones del sistema operativo.
Importante
Las versiones más recientes de los sistemas operativos Linux anteriores pueden incluir un error conocido del controlador TPM que impedirá que se aprovisionen correctamente como máquinas virtuales blindadas. No se recomienda actualizar las plantillas ni las máquinas virtuales blindadas a una versión más reciente hasta que haya disponible una corrección. La lista de sistemas operativos admitidos anteriores se actualizará cuando se hagan públicas las actualizaciones.
Preparación de una máquina virtual Linux
Las máquinas virtuales blindadas se crean con discos de plantilla seguros. Los discos de plantilla contienen el sistema operativo para la máquina virtual y los metadatos, incluida una firma digital de las particiones /boot y /root, para garantizar que los componentes principales del sistema operativo no se modifiquen antes de la implementación.
Para crear un disco de plantilla, primero debe crear una máquina virtual normal (sin blindar) que preparará como imagen base para futuras máquinas virtuales blindadas. El software que instale y los cambios de configuración que realice en esta máquina virtual se aplicarán a todas las máquinas virtuales blindadas creadas a partir de este disco de plantilla. Estos pasos le guiarán por los requisitos mínimos básicos para preparar una máquina virtual Linux para crear la plantilla.
Nota
El cifrado de disco Linux se configura cuando se particiona el disco. Esto significa que debe crear una nueva máquina virtual cifrada previamente con dm-crypt para crear un disco de plantilla de máquina virtual blindada Linux.
En el servidor de virtualización, asegúrese de que estén instaladas las características Hyper-V y Compatibilidad de Hyper-V con protección de host. Para ello, ejecute los siguientes comandos en una consola de PowerShell con privilegios elevados:
Install-WindowsFeature Hyper-V, HostGuardian -IncludeManagementTools -Restart
Descargue la imagen ISO de un origen de confianza y almacénela en el servidor de virtualización o en un recurso compartido de archivos accesible para el servidor de virtualización.
En el equipo de administración que ejecuta Windows Server, versión 1709, instale las Herramientas de administración remota del servidor de la máquina virtual blindada ejecutando el siguiente comando:
Install-WindowsFeature RSAT-Shielded-VM-Tools
Abra el Administrador de Hyper-V en el equipo de administración y conéctese al servidor de virtualización. Para ello, haga clic en "Conectar al servidor..." en el panel Acciones o haga clic con el botón derecho en el Administrador de Hyper-V y seleccione "Conectar al servidor...". Proporcione el nombre DNS para el servidor Hyper-V y, si es necesario, las credenciales para conectarse a él.
Con el Administrador de Hyper-V, configure un conmutador externo en el servidor de virtualización para que la máquina virtual Linux pueda acceder a Internet con el fin de obtener actualizaciones.
A continuación, cree una nueva máquina virtual para instalar el sistema operativo Linux. En el panel Acciones, haga clic en Nuevo>Máquina virtual para abrir el asistente. Proporcione un nombre descriptivo para la máquina virtual, como "Preplantilla de Linux" y haga clic en Siguiente.
En la segunda página del asistente, seleccione Generación 2 para asegurarse de que la máquina virtual está aprovisionada con un perfil de firmware basado en UEFI.
Complete el resto del asistente según sus preferencias. No use un disco de diferenciación para esta máquina virtual. Los discos de plantilla de máquina virtual blindada no pueden usar discos de diferenciación. Por último, conecte la imagen ISO que descargó antes en la unidad de DVD virtual de esta máquina virtual para poder instalar el sistema operativo.
En el Administrador de Hyper-V, seleccione la máquina virtual recién creada y haga clic en Conectar... en el panel Acciones para conectarse a una consola virtual de la máquina virtual. En la ventana que aparece, haga clic en Iniciar para encender la máquina virtual.
Continúe con el proceso de instalación de la distribución de Linux seleccionada. Aunque cada distribución de Linux usa un asistente para instalación diferente, se deben cumplir los siguientes requisitos para las máquinas virtuales que se convertirán en discos de plantilla de máquina virtual blindada Linux:
- El disco debe particionarse con el diseño de tabla de particiones GUID (GPT)
- La partición raíz debe cifrarse con dm-crypt. La frase de contraseña debe establecerse en passphrase (todo en minúsculas). Esta frase de contraseña se aleatorizará y la partición se volverá a cifrar cuando se aprovisione una máquina virtual blindada.
- La partición de arranque debe usar el sistema de archivos ext2.
Una vez que el sistema operativo Linux haya arrancado por completo y haya iniciado sesión, se recomienda instalar el kernel virtual de Linux y los paquetes de servicios de integración de Hyper-V asociados. Además, querrá instalar un servidor SSH u otra herramienta de administración remota para acceder a la máquina virtual una vez blindada.
En Ubuntu, ejecute el siguiente comando para instalar estos componentes:
sudo apt-get install linux-virtual linux-tools-virtual linux-cloud-tools-virtual linux-image-extra-virtual openssh-server
En RHEL, ejecute el siguiente comando:
sudo yum install hyperv-daemons openssh-server sudo service sshd start
Y para SLES, ejecute el siguiente comando:
sudo zypper install hyper-v sudo chkconfig hv_kvp_daemon on sudo systemctl enable sshd
Configure el sistema operativo Linux según sea necesario. Cualquier software que instale, las cuentas de usuario que agregue y los cambios de configuración de todo el sistema que realice se aplicarán a todas las máquinas virtuales que se creen a partir de este disco de plantilla. Debe evitar guardar secretos o paquetes innecesarios en el disco.
Si tiene previsto usar System Center Virtual Machine Manager para implementar las máquinas virtuales, instale el agente invitado de VMM para que VMM pueda especializar el sistema operativo durante el aprovisionamiento de máquinas virtuales. La especialización permite configurar cada máquina virtual de forma segura con diferentes usuarios y claves SSH, configuraciones de red y pasos de configuración personalizados. Consulte cómo obtener e instalar el agente invitado de VMM en la documentación de VMM.
A continuación, agregue el repositorio de software de Microsoft Linux al administrador de paquetes.
Usando el administrador de paquetes, instale el paquete lsvmtools que contiene las correcciones de compatibilidad (shim) del cargador de arranque de la máquina virtual blindada Linux, los componentes de aprovisionamiento y la herramienta de preparación de discos.
# Ubuntu 16.04 sudo apt-get install lsvmtools # SLES 12 SP2 sudo zypper install lsvmtools # RHEL 7.3 sudo yum install lsvmtools
Cuando haya terminado de personalizar el sistema operativo Linux, busque el programa de instalación lsvmprep en el sistema y ejecútelo.
# The path below may change based on the version of lsvmprep installed # Run "find /opt -name lsvmprep" to locate the lsvmprep executable sudo /opt/lsvmtools-1.0.0-x86-64/lsvmprep
Apague la máquina virtual.
Si tomó puntos de control de la máquina virtual (incluidos los puntos de control automáticos creados por Hyper-V con Windows 10 Fall Creators Update), asegúrese de eliminarlos antes de continuar. Los puntos de control crean discos de diferenciación (.avhdx) que no son compatibles con el Asistente para crear discos de plantilla.
Para eliminar puntos de control, abra el Administrador de Hyper-V, seleccione la máquina virtual, haga clic con el botón derecho en el primer punto de control del panel Puntos de control y elija Eliminar subárbol de punto de control.
Protección del disco de plantilla
La máquina virtual que preparó en la sección anterior está casi lista para usarla como disco de plantilla de máquina virtual blindada Linux. El último paso consiste en ejecutar el disco con el Asistente para crear discos de plantilla, que firmará digitalmente el estado actual de las particiones raíz y de arranque. Cuando se aprovisiona una máquina virtual blindada, se comprueban el hash y la firma digital para asegurarse de que no se han realizado cambios no autorizados en las dos particiones entre la creación y la implementación de la plantilla.
Obtención de un certificado para firmar el disco
Para firmar digitalmente las medidas del disco, debe obtener un certificado en el equipo donde ejecutará el Asistente para crear discos de plantilla. El certificado debe cumplir los siguientes requisitos:
Propiedad de certificado | Valor obligatorio |
---|---|
Algoritmo de clave | RSA |
Tamaño mínimo de clave | 2048 bits |
Algoritmo de firma | SHA256 (recomendado) |
Uso de claves | Firma digital |
Los detalles sobre este certificado se mostrarán a los inquilinos cuando creen archivos de datos de blindaje y autoricen los discos en los que confían. Por tanto, es importante obtener este certificado de una entidad de certificación en la que usted y sus inquilinos confían mutuamente. En escenarios empresariales en los que su empresa es el proveedor de servicios de hosting y el inquilino, puede considerar la posibilidad de emitir este certificado desde la entidad de certificación empresarial. Proteja este certificado cuidadosamente, ya que cualquier persona que lo tenga puede crear nuevos discos de plantilla que sean de confianza igual que el disco auténtico.
En un entorno de laboratorio de pruebas, puede crear un certificado autofirmado con el siguiente comando de PowerShell:
New-SelfSignedCertificate -Subject "CN=Linux Shielded VM Template Disk Signing Certificate"
Procesamiento del disco con el cmdlet del Asistente para crear discos de plantilla
Copie el disco de plantilla y el certificado en un equipo que ejecute Windows Server, versión 1709, y ejecute los siguientes comandos para iniciar el proceso de firma.
El VHDX que proporcione al parámetro -Path
se sobrescribirá con el disco de plantilla actualizado; por tanto, asegúrese de realizar una copia antes de ejecutar el comando.
Importante
Las Herramientas de administración remota del servidor disponibles en Windows Server 2016 o Windows 10 no se pueden usar para preparar un disco de plantilla de máquina virtual blindada Linux. Use únicamente el cmdlet Protect-TemplateDisk disponible en Windows Server, versión 1709, o las Herramientas de administración remota del servidor disponibles en Windows Server 2019 para preparar un disco de plantilla de máquina virtual blindada Linux.
# Replace "THUMBPRINT" with the thumbprint of your template disk signing certificate in the line below
$certificate = Get-Item Cert:\LocalMachine\My\THUMBPRINT
Protect-TemplateDisk -Path 'C:\temp\MyLinuxTemplate.vhdx' -TemplateName 'Ubuntu 16.04' -Version 1.0.0.0 -Certificate $certificate -ProtectedTemplateTargetDiskType PreprocessedLinux
El disco de plantilla ya está listo para usarlo para aprovisionar máquinas virtuales blindadas Linux. Si usa System Center Virtual Machine Manager para implementar la máquina virtual, ahora puede copiar el archivo VHDX en la biblioteca VMM.
También puede extraer el catálogo de firmas de volumen de VHDX. Este archivo se usa para proporcionar información sobre el certificado de firma, el nombre del disco y la versión a los propietarios de máquinas virtuales que quieran usar la plantilla. Deben importar este archivo en el Asistente para archivos de datos de blindaje para autorizarle a usted, el autor de la plantilla en posesión del certificado de firma, para que pueda crear este y futuros discos de plantilla para ellos.
Para extraer el catálogo de firmas de volumen, ejecute el siguiente comando en PowerShell:
Save-VolumeSignatureCatalog -TemplateDiskPath 'C:\temp\MyLinuxTemplate.vhdx' -VolumeSignatureCatalogPath 'C:\temp\MyLinuxTemplate.vsc'