Cifrado de datos en un servidor virtual





Un poco de paranoia saludable no ha lastimado a nadie todavía. Además de los mensajeros con cifrado de extremo a extremo, cifrado de archivos en teléfonos inteligentes "listos para usar" y el uso obligatorio de SSL en sitios web, no será superfluo proteger los datos en servidores virtuales. Además, las tecnologías modernas lo han hecho simple y accesible para cualquier usuario. Los grandes proveedores que brindan servicios de alojamiento VPS ofrecen cifrar los datos del usuario utilizando herramientas estándar del sistema operativo. Por ejemplo, Microsoft, en su nube Azure, usa BitLocker para servidores en Windows y DM-Crypt para máquinas virtuales en Linux. ... Estas herramientas le permiten mantener la privacidad de sus datos, incluso si un atacante obtiene acceso al centro de datos donde se encuentra el servidor o su computadora local.



 Puede confiar sus datos a los hosters que brindan VPS, no puede confiar, pero nadie le prohibirá usar los mismos métodos con cualquier proveedor de VPS, configurado usted mismo. En este artículo, te mostraré cómo hacerlo.



Cifrar datos en Windows con BitLocker



El método de cifrado más simple, pero más seguro, para Windows es el servicio BitLocker integrado. Su configuración es simple y rápida, por lo que la forma más sencilla es utilizar la interfaz gráfica. Analicemos este proceso usando el ejemplo de Windows Server 2016, ubicado en el proveedor RuVDS. Elegiré una ubicación de servidor en Moscú para reducir el ping:





Y para BitLocker más rápido, use el SSD más pequeño.





Nos conectaremos mediante RDP estándar, que conviene configurar un poco antes de su uso. Para hacer esto, haga clic en el interruptor "Mostrar parámetros" en la parte inferior de la ventana, marque la casilla "Portapapeles" en la pestaña "Recursos locales" y seleccione "Discos" en el cuadro de diálogo llamado por el botón "Detalles". 





Esto le permitirá copiar los archivos a su computadora o pegarlos a través del portapapeles normal. RDP le advertirá honestamente que: "Esta conexión remota puede dañar ...", debido al intercambio de recursos locales. Tomemos nota y conectemos al servidor.



Después de iniciar sesión, veremos el escritorio y el panel de administración habituales. Conectemos el servicio BitLocker directamente desde él seleccionando la opción "Agregar roles y características". En la primera pantalla, marque la casilla de verificación "Omitir ..." para no leer la advertencia cada vez que cambie la configuración, luego haga clic en "Siguiente" y seleccione "Instalación basada en funciones o funciones", luego seleccione nuestro servidor local y en la sección "Funciones", marque "Cifrado de unidad BitLocker". 





Confirme "Agregar funciones", haga clic en "Siguiente", marque la opción "Reiniciar el servidor de destino automáticamente si es necesario" y haga clic en "Instalar".





Después de instalar el servicio, el sistema se reiniciará automáticamente y la próxima vez que se conecte, aparecerá una ventana que indica que la instalación se realizó correctamente.



Dado que tenemos un servidor virtual, no tiene un procesador de cifrado " Módulo de plataforma confiable ", lo que significa que debemos configurar las políticas de acceso para que BitLocker solicite una contraseña al iniciar el sistema. Si no lo hace, cuando intente habilitar el cifrado, el sistema mostrará un mensaje de error:





Vamos a la búsqueda, insertamos allí el nombre del programa: " gpedit.msc " y lo ejecutamos. Necesitamos encontrar la opción a lo largo de la siguiente ruta: Política de equipo local → Configuración del equipo → Plantillas administrativas → Componentes de Windows → Cifrado de unidad BitLocker → Unidades del sistema operativo





Debe activar la política seleccionando "Habilitado", seleccione la casilla de verificación "Permitir BitLocker sin un TPM compatible (requiere una contraseña o una clave de inicio en una unidad flash USB)" en las opciones y haga clic en "Aceptar". 



Queda por seleccionar las unidades que desea cifrar en Explorer. 





El asistente de configuración analizará el sistema y le pedirá que continúe ("Siguiente"). En el siguiente cuadro de diálogo, le advertirá que BitLocker utilizará la unidad y le recomendará que primero haga una copia de seguridad de los datos críticos. Buena idea, pero suponiendo que ya lo haya hecho, haga clic en Siguiente. El sistema preparará la unidad para el cifrado, pero en el proceso, le advertirá que no hay ningún lugar donde mover sus datos de recuperación de Windows y le ofrecerá habilitar y configurar este sistema después del cifrado. La instalación está casi completa y el asistente requerirá que reinicie el sistema.





Después del reinicio, se instalará el servicio y el sistema ofrecerá cifrar el disco





En el siguiente cuadro de diálogo, el asistente le pedirá que inserte una unidad flash USB o ingrese una contraseña. Dado que nuestro servidor es virtual, elegimos este último. En la siguiente ventana, ingresamos, ingresamos y confirmamos la contraseña, el sistema jurará, si es demasiado simple o corta, tienes que mostrar tu imaginación. 



A continuación, se nos pedirá que elijamos la forma en que se guardará la clave de recuperación de acceso en caso de que olvidemos la contraseña de BitLocker. 





No tenemos donde insertar USB, puede seleccionar el disco local de su computadora, acceso al cual se abrió en las opciones de RDP. El archivo se denominará así: "Clave de recuperación de BitLocker BE32F397-9C84-4765-9840-50BF3893CAB6.TXT". Y dentro habrá una breve instrucción y una clave de recuperación: 



Mira
BitLocker Drive Encryption recovery key 

To verify that this is the correct recovery key, compare the start of the following identifier with the identifier value displayed on your PC.

Identifier:

      BE32F397-9C84-4765-9840-50BF3893CAB6

If the above identifier matches the one displayed by your PC, then use the following key to unlock your drive.

Recovery Key:

      667260-267685-242209-551199-606441-680966-499147-122408

If the above identifier doesn't match the one displayed by your PC, then this isn't the right key to unlock your drive.
Try another recovery key, or refer to http://go.microsoft.com/fwlink/?LinkID=260589 for additional assistance.

      
      





Una vez guardado el archivo, procedemos a la elección del tipo de cifrado. Dado que nuestro disco duro local está protegido, seleccionamos la primera opción: "Nuevo modo de cifrado". 



La siguiente pantalla requiere la confirmación de que realmente queremos encriptar el disco, haga clic en "Continuar", recibimos un mensaje de que el proceso se iniciará después de reiniciar y una propuesta para reiniciar la computadora.



Todo: el disco del sistema de nuestro servidor está encriptado.



Intentamos conectarnos a él y ... ¡Nada funciona!



Todo es lógico. BitLocker requerirá que ingrese una contraseña en el arranque, y esto sucede incluso antes de que el sistema esté listo para la operación remota. Esto no se puede hacer mediante RDP.



Vamos a la página de RuVDS, que contiene información sobre servidores en ejecución, y vemos una imagen interesante:





En la captura de pantalla del monitor virtual, algo muy similar al indicador del sistema. De hecho, tendremos que usar la consola de acceso del modo de emergencia para ingresar la contraseña antes de iniciar el sistema:





Ingresamos la contraseña y vemos la continuación de la descarga. La consola de emergencia se puede cerrar y conectar mediante RDP. Por cierto, necesitamos una operación de este tipo cada vez que se reinicia el servidor virtual. No es muy conveniente, pero ese es el precio de la seguridad.



Ahora, cuando abrimos el menú de la unidad, vemos nuevos elementos en él: "Cambiar contraseña de BitLocker" y "Administrar BitLocker". Habiendo abierto el segundo elemento, podemos ver el estado del disco y su gestión de cifrado. Como elegí deliberadamente un pequeño SSD para la demostración, el cifrado tardó menos de cinco minutos. Cuando terminó, la interfaz se veía así:





La instalación de Bitlocker y el cifrado de disco en el servidor virtual ahora están completos. Ahora, si alguien obtiene acceso físico a su computadora, no podrá conectarse al servidor, incluso si accede al sitio web del proveedor con su nombre de usuario. Y si llega al centro de datos y se conecta desde el interior a su VPS, aún no podrá recibir los datos, estarán encriptados.



¡Lo principal es no tener a la vista el archivo que contiene la clave para restaurar el acceso!



Por cierto, ¿cómo usa esta clave si olvidó su contraseña de BitLocker? Es muy simple, debe reiniciar el servidor e ir a la consola de emergencia, pero ahora elija no iniciar sesión, sino restaurar. Presione ESC y obtenga una invitación para ingresar la clave. Una sutileza, solo necesita ingresar números y los separadores menos se insertarán automáticamente. Si ingresa incorrectamente, recibirá un mensaje de error y una solicitud para ingresar la clave nuevamente. Si se ingresa correctamente, el sistema continuará arrancando. 



Configuración de BitLocker en un servidor remoto: finalizado.



Cifrar datos en Linux con dm-crypt



Existen muchas soluciones de cifrado de particiones diferentes para Linux, usaremos dm-crypt , un sistema simple y confiable que Microsoft usa en su nube de Azure. 



dm-crypt - un sistema de cifrado de disco estándar basado en el núcleo de Linux, basado en: d evice m apper , el subsistema crea y proporciona transparencia al trabajo con dispositivos virtuales; y cripta o API- un subsistema de cifrado que se utiliza para VPN sobre IPsec y una serie de otras funciones. Dm-crypt tiene dos formas de trabajar con un contenedor criptográfico, simple, en el que los datos no contienen un formato visible y parece un conjunto aleatorio de bytes, y LUKS, que proporciona más opciones, por ejemplo, detección automática de contenedores criptográficos por parte del sistema, pero el archivo contendrá metadatos. que puede determinar el hecho mismo del cifrado. Usaremos el segundo método, a través del protocolo LUKS .



El servidor se selecciona de la misma forma que en la primera sección, excepto el sistema operativo. Saltemos los pasos para la preselección, se pueden encontrar en el manual de RuVDSy continúe con la instalación del sistema de cifrado. Actualicemos la lista de paquetes e instalemos cryptsetup, la interfaz de línea de comandos dm-crypt (para simplificar, todos los comandos se ingresarán como root):



apt update
apt install cryptsetup 

      
      





Para almacenar datos cifrados, primero debe crear un archivo especial, que luego actuará como un dispositivo. Debe ser inseparable, y para ello existen varias formas, con distintos grados de seguridad.



Uno de ellos es con el comando Fallocate.



Cree un archivo de 512 MB llamado test-crypt en el directorio de inicio del usuario raíz:



fallocate -l 512M /root/test-crypt

      
      





Este es el método más fácil y rápido, pero el menos seguro, porque el comando simplemente asigna espacio en disco sin sobrescribir los datos que estaban contenidos allí.



Es más seguro crear un archivo usando la utilidad dd (definición de conjunto de datos), le permite no solo crear un archivo, sino también escribir información en él que sobrescribirá el contenido anterior del área seleccionada. Por ejemplo, ceros de / dev / zero dispositivo virtual:



dd if=/dev/zero of=/root/test-crypt bs=1M count=512

      
      





La forma más paranoica es rellenar el archivo desde / dev / urandom. Pero también es el más lento:



dd if=/dev/urandom of=/root/test-crypt bs=1M count=512

      
      





Después de crear el archivo, debe convertirlo a una sección LUKS:



cryptsetup -y luksFormat /root/test-crypt

      
      





Responda YES



el mensaje del programa y luego configure una contraseña. A diferencia de BitLocker, no habrá métodos de recuperación, claves privadas y otras comodidades, si olvida su contraseña, ¡sus datos se perderán irremediablemente! Aborde este problema de manera muy responsable. Por lo tanto, asegúrese de utilizar la opción -y



que solicita la confirmación de la contraseña. 



Veamos lo que obtuvimos con la utilidad file



:



file /root/test-crypt

      
      





La salida debería mostrar algo como:



test-crypt:  LUKS encrypted file, ver 2 [, , sha256] UUID: 820a6557-ee7b-4f67-9f53-eb11586cc5dc

      
      





Esto significa que el contenedor de cifrado está creado y listo para usar, queda por implementarlo en el dispositivo de volumen de cifrado: 



cryptsetup luksOpen /root/test-crypt crypt-volume

      
      





Cree un sistema de archivos allí:



mkfs.ext4 -j /dev/mapper/crypt-volume

      
      





Y seleccione el punto de montaje: 



mkdir /mnt/crypt-files

      
      





El dispositivo encriptado está listo para usar, todo lo que queda es montarlo y usarlo como un disco regular, todas las operaciones de encriptación y desencriptación se realizan "sobre la marcha", transparentes para el usuario y el sistema.



mount /dev/mapper/crypt-volume /mnt/crypt-files

      
      





Revisemos nuestro dispositivo. Copiemos algunos datos en él, por ejemplo, el contenido del directorio / etc / ssh y veamos lo que dice la utilidad dh



cp -r /etc/ssh/ /mnt/crypt-files/ 
df -h

Filesystem           Size  Used Avail Use% Mounted on
udev                 928M     0  928M   0% /dev
tmpfs                191M  648K  191M   1% /run
/dev/sda1             20G  2.7G   16G  15% /
tmpfs                955M     0  955M   0% /dev/shm
tmpfs                5.0M     0  5.0M   0% /run/lock
tmpfs                955M     0  955M   0% /sys/fs/cgroup
tmpfs                191M     0  191M   0% /run/user/1000
/dev/mapper/crypt-volume  465M  1.3M  429M   2% /mnt/crypt-files

      
      





Como podemos ver, el dispositivo está montado, tiene el volumen determinado por nosotros y se llena en aproximadamente un 1% con archivos del directorio ssh.



Para terminar de trabajar con el contenedor de cifrado, debe desmontarlo y luego deshabilitarlo:



cd /
umount /mnt/crypt-files
cryptsetup luksClose crypt-volume

      
      





El trabajo con el dispositivo está terminado y tenemos el archivo más común, encriptado con nuestra contraseña, datos que son inaccesibles para un extraño, incluso si obtiene acceso físico al servidor. 



Para usar el contenedor de cifrado nuevamente, deberá inicializarlo y montarlo nuevamente:



cryptsetup luksOpen /root/test-crypt crypt-volume
mount /dev/mapper/crypt-volume /mnt/crypt-files

      
      





Esto completa la revisión de los sistemas de cifrado de datos que se pueden utilizar en servidores virtuales.



¡Buena conexión a todos!



All Articles