
Guía actualizada sobre cifrado de disco completo en la red de habla rusa V0.2.
Estrategia de vaquero:
[A] cifrado de bloque del sistema instalado en Windows 7;
[B] cifrado de bloque de GNU/Linux (Debian) sistema instalado (incluyendo /boot);
[C] configuración de GRUB2, protección del cargador mediante firma digital/autenticación/hash;
[D] limpieza: destrucción de datos no cifrados;
[E] respaldo universal de sistemas operativos cifrados;
[F] ataque objetivo - cargador GRUB2;
[G] documentación útil.
╭───Esquema #habitación 40# :
├──╼ Windows 7 instalado - cifrado completo del sistema, no oculto;
├──╼ GNU/Linux instalado (Debian y distribuciones derivadas) — cifrado completo del sistema no oculto(/, incluyendo /boot; swap);
├──╼ cargadores independientes: cargador VeraCrypt instalado en MBR, cargador GRUB2 instalado en la partición extendida;
├──╼ no se requiere instalación/reinstalación del SO;
└──╼ software criptográfico utilizado: VeraCrypt; Cryptsetup; GnuPG; Seahorse; Hashdeep; GRUB2 - libre/gratuito.
El esquema descrito anteriormente resuelve parcialmente el problema del ‘arranque desde USB’, permitiendo disfrutar de sistemas operativos cifrados de Windows/Linux y compartir datos a través de un ‘canal cifrado’ de un SO a otro.
Orden de arranque de la PC (una de las opciones):
- encender la máquina;
- cargar el cargador VeraCrypt (la entrada correcta de la contraseña continuará con el arranque de Windows 7);
- presionar la tecla ‘Esc’ cargará el cargador GRUB2;
- cargador GRUB2 (selección de distribución/GNU/Linux/CLI), requerirá autenticación de superusuario GRUB2 ;
- después de una autenticación exitosa y la elección de la distribución, se requerirá ingresar la frase de contraseña para desbloquear ‘/boot/initrd.img’;
- tras ingresar las contraseñas correctas en GRUB2, se ‘requerirá’ ingresar la contraseña (la tercera contra, contraseña del BIOS o contraseña de la cuenta de usuario GNU/Linux – no considerar) para desbloquear y cargar el SO GNU/Linux, o la inserción automática de la clave secreta (dos contraseñas + clave, o contraseña + clave);
- la intrusión externa en la configuración de GRUB2 congelará el proceso de arranque de GNU/Linux.
¿Complicado? Bien, vamos a automatizar procesos.
Al particionar el disco duro (tabla MBR) Un PC puede tener no más de 4 particiones primarias, o 3 particiones primarias y una extendida, así como un área no asignada. A diferencia de la partición principal, la partición extendida puede contener subparticiones. (discos lógicos=partición extendida). En otras palabras, la «partición extendida» en un HDD reemplaza a LVM para la tarea actual: el cifrado completo del sistema. Si su disco está particionado en 4 particiones principales, debe usar lvm, o transformar (con formato) la partición de principal a extendida, o utilizar adecuadamente las cuatro particiones y dejar todo como está, logrando el resultado deseado. Incluso si solo tiene una partición en el disco, Gparted puede ayudar a dividir el HDD (en particiones adicionales) sin pérdida de datos, aunque a costa de un leve sacrificio por tales acciones.
El esquema de particionamiento del disco duro, sobre el cual se verbalizará todo el artículo, se presenta en la tabla a continuación.

Tabla (n.º 1) de particiones de 1TB.
Algo similar debería estar en su caso.
sda1 — partición principal n.º 1 NTFS (cifrado);
sda2 — partición extendida marcador;
sda6 — disco lógico (donde está instalado el cargador GRUB2);
sda8 — swap (archivo de intercambio cifrado/no siempre);
sda9 — disco lógico de prueba;
sda5 — disco lógico para curiosos;
sda7 — SO GNU/Linux (SO trasladado a disco lógico cifrado);
sda3 — partición principal n.º 2 con SO Windows 7 (cifrado);
sda4 — partición principal n.º 3 (en la que se encontraba GNU/Linux sin cifrar, utilizada para copias de seguridad/no siempre).
[A] Cifrado de bloque del sistema Windows 7
A1. VeraCrypt
Inicio desde , o desde un espejo de la versión de instalación del software criptográfico VeraCrypt (al momento de la publicación del artículo v1.24-Update3, la versión portátil de VeraCrypt no es adecuada para el cifrado del sistema).Verifique la suma de verificación del software descargado
$ Certutil -hashfile "C:VeraCrypt Setup 1.24.exe" SHA256
y compare el resultado obtenido con la suma publicada en el sitio del desarrollador de VeraCrypt.
Si tiene instalado el software HashTab, es aún más fácil: clic derecho (VeraCrypt Setup 1.24.exe)-propiedades-suma hash de archivos.
Para verificar la firma del programa en el sistema deben estar instalados el software y la clave pública pgp del desarrollador ; .
A2. Instalación/ejecución del software VeraCrypt con privilegios de administrador
A3. Selección de parámetros de cifrado del sistema de la partición activaVeraCrypt – Sistema – Cifrar la unidad o partición del sistema – Normal – Cifrar la partición de Windows – Multiboot – (advertencia: «No se recomienda utilizar este método a usuarios inexpertos» y es cierto, aceptamos «Sí») – Disco de arranque («sí», incluso si no es así, sigue siendo «sí») – Número de discos del sistema «2 o más» – Varios sistemas en un solo disco «Sí» – No gestor de arranque de Windows «No» (de hecho «Sí», pero los gestores de arranque VeraCrypt/GRUB2 no comparten el MBR entre sí, más bien, en el MBR/pista de arranque solo se almacena la parte más pequeña del código del gestor de arranque, su parte principal se ubica dentro del sistema de archivos) – Multiboot – Ajustes de parámetros de cifrado…
Si te desvías de los pasos mencionados anteriormente (esquemas de cifrado por bloques del sistema), VeraCrypt mostrará una advertencia y no permitirá cifrar la partición.
En el siguiente paso, para la protección específica de datos, efectúa una «Prueba» y elige el algoritmo de cifrado. Si tu CPU es antiguo, lo más probable es que el algoritmo de cifrado Twofish sea el más rápido. Si tu CPU es potente, notarás la diferencia: AES — el cifrado según los resultados de la prueba será varias veces más rápido que sus competidores criptográficos. AES es un algoritmo de cifrado popular, la parte de hardware de los CPUs modernos está especialmente optimizada tanto para el «secreto» como para el «hackeo».
VeraCrypt soporta la posibilidad de cifrar discos en cascada con AES(Twofish)/и другими комбинациями. На старо-ядерном CPU Intel десятилетней давности (sin soporte de hardware para AES, cifrado en cascada A/T) la reducción del rendimiento es esencialmente imperceptible. (en CPUs AMD de la misma época/~parámetros – el rendimiento está ligeramente reducido). El SO funciona dinámicamente y el consumo de recursos para el cifrado transparente es imperceptible. A diferencia de, por ejemplo, la notable disminución del rendimiento debido a un entorno de escritorio de prueba inestable como Mate v1.20.1 (o v1.20.2, no recuerdo exactamente) En GNU/Linux, o debido al funcionamiento del subprograma de telemetría en Windows 7↑. Por lo general, los usuarios experimentados realizan pruebas de rendimiento de hardware antes de la encriptación. Por ejemplo, en Aida64/Sysbench/systemd-analyze blame y comparan con los resultados de las mismas pruebas después de la encriptación del sistema, refutando así el mito de que "la encriptación del sistema es perjudicial". La lentificación de la máquina y la incomodidad se hacen evidentes al realizar copias de seguridad/restauraciones de datos encriptados, ya que la propia operación de "copia de seguridad de datos del sistema" no se mide en ms, y se añaden los mencionados . Al final, cada usuario que tiene permiso para lidiar con criptografía establece un equilibrio entre el algoritmo de encriptación relativo a la satisfacción de los objetivos planteados, el grado de su paranoia y la comodidad de uso.
Es mejor dejar el parámetro PIM por defecto, para no tener que introducir los valores exactos de iteraciones cada vez que se carga el SO. VeraCrypt utiliza una gran cantidad de iteraciones para crear un "hash realmente lento". Un ataque a tal "crytoutil" mediante fuerza bruta/tablas arcoíris solo tiene sentido con una frase de contraseña "simple" y una lista de charset personal de la víctima. El precio por la resistencia de la contraseña es un retraso al ingresar correctamente la contraseña durante la carga del SO. (el montaje de volúmenes de VeraCrypt en GNU/Linux es significativamente más rápido).
Software libre para realizar ataques de fuerza bruta (extracción de la frase de contraseña del encabezado del disco VeraCrypt/LUKS) Hashcat. John the Ripper no puede "romper VeraCrypt", y al trabajar con LUKS no comprende la criptografía Twofish.
Debido a la resistencia criptográfica de los algoritmos de encriptación, los indomables criptopunks desarrollan software con otro vector de ataque. Por ejemplo, la extracción de metadatos/claves de la RAM. (ataque con botines fríos/acceso directo a la memoria), existe software especializado libre y no libre para estos fines.
Al finalizar la configuración/generación de "metadatos únicos" de la partición activa encriptada, VeraCrypt ofrecerá reiniciar la PC y probar la funcionalidad de su cargador de arranque. Después del reinicio/inicio de Windows, VeraCrypt se cargarán en modo de espera, solo será necesario confirmar el proceso de encriptación - Y.
En el paso final del cifrado del sistema, VeraCrypt te sugerirá crear una copia de seguridad del encabezado de la partición cifrada activa en forma de «veracrypt rescue disk.iso» — es necesario hacerlo obligatoriamente — en este software, tal operación es un requisito (en LUKS, como requerimiento – esto lamentablemente se omite, pero está subrayado en la documentación). El disco de rescate será útil para todos, y para algunos incluso más de una vez. Pérdida (reescritura de encabezado/MBR) la copia de seguridad del encabezado privará permanentemente el acceso a la partición descifrada con OS Windows.
A4. Creación de un USB/disk de rescate de VeraCryptPor defecto, VeraCrypt ofrece grabar «metadatos ~2-3 MB» en un disco compacto, pero no todas las personas tienen discos o unidades DVD-ROM, y crear un USB de arranque «VeraCrypt Rescue disk» será una sorpresa técnica para algunos: Rufus/GUIdd-ROSA ImageWriter y otro software similar no podrán cumplir con la tarea, porque además de copiar metadatos desplazados en el USB de arranque, es necesario realizar una copia/pegado fuera del sistema de archivos del dispositivo USB, en resumen, copiar correctamente el MBR/ruta en la memoria. Desde un sistema operativo GNU/Linux, se puede crear un USB de arranque utilizando la herramienta «dd», consultando esta tabla.

La creación de un disco de rescate en el entorno de Windows es diferente. El desarrollador de VeraCrypt no incluyó la solución a esta tarea en la oficial sobre «rescue disk», pero propuso una solución de otra manera: publicó un software adicional para crear «usb rescue disk» en acceso libre, en su foro de VeraCrypt. El archivador de este software para Windows es «creación de usb veracrypt rescue disk». Después guardar el rescue disk.iso, comenzará el proceso de cifrado del sistema de la partición activa. Durante el cifrado, el sistema operativo no se detiene, no es necesaria la reinicio del PC. Una vez finalizada la operación de cifrado, la partición activa queda completamente cifrada y se puede usar. Si al iniciar el PC no aparece el cargador de VeraCrypt, y la operación de restauración del encabezado no ayuda, entonces verifica la bandera «boot», debe estar establecida en la partición donde está Windows (independientemente del cifrado y otros sistemas operativos, ver tabla n.º 1).
Con esto, se completa la descripción del cifrado de bloque del sistema con OS Windows.
[B] LUKS. Cifrado GNU/Linux (~Debian) sistema operativo instalado. Algoritmo y Pasos
Para cifrar una distribución Debian / derivada instalada, es necesario asignar la partición preparada a un dispositivo de bloque virtual, trasladar al disco asignado GNU / Linux, e instalar / configurar GRUB2. Si no tienes un servidor en bruto y valoras tu tiempo, es conveniente utilizar GUI, mientras que la mayoría de los comandos de terminal descritos a continuación se asume que se introducen en "modo Chuck Norris".
B1. Arranque del PC desde un live usb de GNU / Linux
«Realizar una prueba de rendimiento de hardware»
lscpu && cryptsetup benchmark 
Si eres un afortunado propietario de una máquina potente con soporte de hardware para AES, los números se asemejarán a la parte derecha de la terminal; si eres afortunado, pero con hardware antiguo, se asemejarán a la parte izquierda.
B2. Particionado del disco. Montaje / formateo del sistema de archivos del disco duro lógico en Ext4 (Gparted)
B2.1. Creación de un encabezado cifrado para la partición sda7Voy a describir los nombres de las particiones según mi tabla de particiones, que se mostró anteriormente. Según tu particionado de disco, debes sustituir por tus propios nombres de particiones.
Asignación de cifrado del disco lógico (/dev/sda7 > /dev/mapper/sda7_crypt).
#Простое создание «LUKS-AES-XTS раздела»
cryptsetup -v -y luksFormat /dev/sda7Opciones:
* luksFormat - inicialización del encabezado LUKS;
* -y - frase de contraseña (no clave / archivo);
* -v - verbosidad (salida de información en la terminal);
* /dev/sda7 - tu disco lógico de la partición extendida (donde se planea trasladar / cifrar GNU / Linux).
Por defecto, el algoritmo de cifrado <LUKS1: aes-xts-plain64, Clave: 256 bits, hash del encabezado LUKS: sha256, RNG: /dev/urandom> (depende de la versión de cryptsetup).
#Проверка default-алгоритма шифрования
cryptsetup --help #самая последняя строка в выводе терминала.En ausencia de soporte de hardware para AES en la CPU, la mejor opción será crear una "partición LUKS-Twofish-XTS" extendida.
B2.2. Creación extendida de una "partición LUKS-Twofish-XTS"
cryptsetup luksFormat /dev/sda7 -v -y -c twofish-xts-plain64 -s 512 -h sha512 -i 1500 --use-urandom Opciones:
* luksFormat - inicialización del encabezado LUKS;
* /dev/sda7 tu futuro disco lógico cifrado;
* -v verbosidad;
* -y frase de contraseña;
* -c selección del algoritmo de cifrado de datos;
* -s tamaño de la clave de cifrado;
* -h algoritmo de hash / función criptográfica, se utiliza un generador de números aleatorios (—use-urandom) para generar una clave de cifrado / descifrado única para la cabecera del disco lógico, una clave secundaria de cabecera (XTS); la clave maestra única almacenada en la cabecera cifrada del disco, la clave secundaria XTS, todos estos metadatos y el subprograma de cifrado que utiliza la clave maestra y la clave secundaria XTS para cifrar / descifrar cualquier dato en la partición (excepto la cabecera de la partición) se almacenan en ~3 MB en la partición seleccionada del disco duro.
* -i iteraciones en milisegundos, en lugar de "cantidad" (retraso por tiempo al procesar la frase de contraseña, influye en el arranque del SO y en la resistencia criptográfica de las claves). Para mantener el equilibrio de resistencia criptográfica con una contraseña simple como «russian» se requiere aumentar el valor de -(i), con una contraseña compleja como «?8dƱob/øfh» el valor se puede reducir.
* —use-urandom generador de números aleatorios, genera claves y sal.
Después de hacer coincidir la partición sda7 > sda7_crypt (la operación es rápida, ya que se crea una cabecera cifrada con metadatos de ~3 MB y eso es todo), se debe formatear y montar el sistema de archivos sda7_crypt.
B2.3. Correspondencia
cryptsetup open /dev/sda7 sda7_crypt
#ejecutar este comando solicita la entrada de la frase de contraseña secreta.
opciones:
* open -corresponder la partición "con nombre";
* /dev/sda7 -disco lógico;
* sda7_crypt -nombre de correspondencia que se utiliza para montar la partición cifrada o inicializarla al arrancar el SO.
B2.4. Formateo del sistema de archivos sda7_crypt en ext4. Montaje del disco en el SO(Nota: en Gparted ya no será posible trabajar con la partición cifrada)
#форматирование блочного шифрованного устройства
mkfs.ext4 -v -L DebSHIFR /dev/mapper/sda7_crypt
opciones:
* -v -verbalización;
* -L -etiqueta del disco (que se mostrará en el explorador entre otros discos).
A continuación, se debe montar el dispositivo de bloque virtual cifrado /dev/sda7_crypt en el sistema
mount /dev/mapper/sda7_crypt /mntTrabajar con archivos en la carpeta /mnt llevará a la cifrado / descifrado automáticos de los datos en sda7.
Es más conveniente hacer coincidir y montar la partición en el explorador (nautilus/caja GUI), la partición ya estará en la lista de selección de discos, solo queda introducir la frase de contraseña para abrir / descifrar el disco. El nombre correspondiente será seleccionado automáticamente y no será «sda7_crypt», sino algo como /dev/mapper/Luks-xx-xx…
B2.5. Copia de seguridad de la cabecera del disco (metadatos ~3MB)Uno de los más importante operaciones que deben hacerse sin demora: copia de seguridad del encabezado «sda7_crypt». Si se sobrescribe o daña el encabezado (por ejemplo, al instalar GRUB2 en la partición sda7, etc.), los datos cifrados se perderán definitivamente sin posibilidad de recuperación, porque no se podrán regenerar las mismas claves, las claves se crean de manera única.
#Бэкап заголовка раздела
cryptsetup luksHeaderBackup --header-backup-file ~/Бэкап_DebSHIFR /dev/sda7
#Восстановление заголовка раздела
cryptsetup luksHeaderRestore --header-backup-file <file> <device> opciones:
* luksHeaderBackup —header-backup-file comando de respaldo;
* luksHeaderRestore —header-backup-file comando de restauración;
* ~ / Backup_DebSHIFR — archivo de copia de seguridad;
* /dev/sda7 -partición cuya copia de seguridad del encabezado cifrado del disco se debe guardar.
En este paso <creación y edición de la partición cifrada> ha terminado.
B3. Transferencia del sistema operativo GNU/Linux (sda4) a la partición cifrada (sda7)
Creamos la carpeta /mnt2 (Nota: todavía estamos trabajando con el usb en vivo, en el punto /mnt está montado sda7_crypt), y montamos nuestro GNU/Linux en /mnt2, que debe ser cifrado.
mkdir /mnt2
mount /dev/sda4 /mnt2
Realizamos la transferencia correcta del sistema operativo utilizando el software Rsync
rsync -avlxhHX --progress /mnt2/ /mntLas opciones de Rsync están descritas en el p.E1.
A continuación, es necesario realizar la desfragmentación de la partición del disco lógico
e4defrag -c /mnt/ #después de la verificación, e4defrag mostrará que el grado de desfragmentación de la partición ~ "0", este es un error que puede costarle una pérdida significativa de rendimiento!
e4defrag /mnt/ #realizamos la desfragmentación de GNU/Linux cifrada Tenga en cuenta: desfragmentar e4defrag en GNU/Linux cifrada de vez en cuando si tiene HDD.
La transferencia y la sincronización [GNU/Linux > GNU/Linux-cifrada] han terminado en este paso.
V4. Configuración de GNU/Linux en la partición cifrada sda7
Después de transferir exitosamente el sistema operativo /dev/sda4 > /dev/sda7, es necesario iniciar sesión en GNU/Linux en la partición cifrada y realizar la configuración adicional (sin reiniciar el PC) en relación con el sistema cifrado. Es decir, estar en el usb en vivo, pero ejecutar comandos «con respecto al raíz del sistema operativo cifrado». Simular una situación así será «chroot». Para obtener información rápidamente sobre qué sistema operativo está utilizando en este momento (si está cifrado o no, ya que los datos en sda4 y sda7 están sincronizados), desincronice los sistemas operativos. Cree en los directorios raíz (sda4/sda7_crypt) archivos vacíos de marcador, por ejemplo, /mnt/sistemaCifrado y /mnt2/sistemaDescifrado. Una verificación rápida de en qué sistema operativo se encuentra (también para el futuro):
ls /<Tab-Tab>B4.1. «Simulación de acceso al sistema operativo cifrado»
mount --bind /dev /mnt/dev
mount --bind /proc /mnt/proc
mount --bind /sys /mnt/sys
chroot /mnt
B4.2. Verificación de que se está operando en relación con el sistema cifrado
ls /mnt
#y vemos el archivo "/sistemaCifrado"
history
#en la salida del terminal debería aparecer el historial de comandos su del sistema operativo operativo.B4.3. Creación/configuración de swap cifrado, edición de crypttab/fstabDado que el archivo de intercambio se formatea en cada inicio del sistema operativo, no tiene sentido crear y asociar el swap con el disco lógico ahora, ni ingresar comandos como en p.B2.2. Para el swap, se generarán automáticamente sus propias claves de cifrado temporales en cada inicio. Ciclo de vida de las claves del swap: desmontaje/desactivación de la partición de swap (+limpieza de la RAM); o reiniciar el sistema operativo. Configuración del swap, abrimos el archivo que responde a la configuración de dispositivos de bloques cifrados (análogo al archivo fstab, pero que responde a la criptografía).
nano /etc/crypttab editamos
#«target name» «source device» «key file» «options»
swap /dev/sda8 /dev/urandom swap,cipher=twofish-xts-plain64,size=512,hash=sha512
Opciones
* swap -nombre asociado al cifrado /dev/mapper/swap.
* /dev/sda8 -utiliza tu partición lógica para el swap.
* /dev/urandom -generador de claves aleatorias de cifrado para el swap (con cada nuevo arranque del sistema operativo — se crean nuevas claves). El generador /dev/urandom es menos aleatorio que /dev/random, al fin y al cabo /dev/random se usa bajo circunstancias paranoicas peligrosas. Al arrancar el sistema operativo, /dev/random ralentiza el arranque por varios ± minutos (ver systemd-analyze).
* swap,cipher=twofish-xts-plain64,size=512,hash=sha512: -la partición sabe que es un swap y se formatea "de acuerdo"; algoritmo de cifrado.
#Открываем и правим fstab
nano /etc/fstab
editamos
# swap was on /dev/sda8 during installation
/dev/mapper/swap none swap sw 0 0
/dev/mapper/swap -имя , которое задали в crypttab.
Swap cifrado alternativo
Si por alguna razón no deseas dedicar toda una partición a un archivo de intercambio, puedes optar por un camino alternativo y mejor: crear un archivo de intercambio en un archivo en la partición cifrada con el sistema operativo.
fallocate -l 3G /swap #creación de un archivo de 3GB (operación casi instantánea)
chmod 600 /swap #configuración de permisos
mkswap /swap #creamos swap desde el archivo
swapon /swap #activamos nuestro swap
free -m #verificamos que el archivo de intercambio está activo y funcionando
printf "/swap none swap sw 0 0" >> /etc/fstab #si es necesario, después de reiniciar el swap será permanenteConfiguración del área de intercambio completada.
B4.4. Configuración de GNU/Linux cifrado (edición de archivos crypttab/fstab)El archivo /etc/crypttab, como mencioné anteriormente, describe dispositivos de bloques cifrados que se configuran durante el arranque del sistema.
#правим /etc/crypttab
nano /etc/crypttab
si ha asignado la partición sda7>sda7_crypt como en p.B2.1
# «target name» «source device» «key file» «options»
sda7_crypt UUID=81048598-5bb9-4a53-af92-f3f9e709e2f2 none luks
si ha asignado la partición sda7>sda7_crypt como en p.B2.2
# «target name» «source device» «key file» «options»
sda7_crypt UUID=81048598-5bb9-4a53-af92-f3f9e709e2f2 none cipher=twofish-xts-plain64,size=512,hash=sha512
si ha asignado la partición sda7>sda7_crypt como en p.B2.1 o B2.2, pero no quiere introducir de nuevo la contraseña para desbloquear y cargar el sistema operativo, puede sustituir la contraseña por una clave secreta / archivo aleatorio
# «target name» «source device» «key file» «options»
sda7_crypt UUID=81048598-5bb9-4a53-af92-f3f9e709e2f2 /etc/skey luks
Descripción
* none - indica que al cargar el sistema operativo, se requiere ingresar una frase de contraseña secreta para desbloquear la raíz.
* UUID - identificador de la partición. Para conocer su identificador, ingrese en la terminal (recuerde, todo este tiempo y en adelante, está trabajando en la terminal en un entorno chroot, y no en otra terminal live usb).
fdisk -l #verificación de todas las particiones
blkid #debería haber algo como esto
/dev/sda7: UUID=«81048598-5bb9-4a53-af92-f3f9e709e2f2» TYPE=«crypto_LUKS» PARTUUID=«0332d73c-07»
/dev/mapper/sda7_crypt: LABEL=«DebSHIFR» UUID=«382111a2-f993-403c-aa2e-292b5eac4780» TYPE=«ext4»
esta línea se ve al solicitar blkid desde la terminal live usb con sda7_crypt montado).
Tome el UUID precisamente de su sdaX (no de sdaX_crypt!, el UUID de sdaX_crypt se eliminará automáticamente al generar el config grub.cfg).
* cipher=twofish-xts-plain64,size=512,hash=sha512 - cifrado luks en modo avanzado.
* /etc/skey - archivo clave secreto que se introduce automáticamente para desbloquear la carga del sistema operativo (en lugar de introducir una tercera contraseña). El archivo puede ser cualquier cosa de hasta 8MB, pero los datos se leerán <1MB.
#Создание "генерация" случайного файла <секретного ключа> размером 691б.
head -c 691 /dev/urandom > /etc/skey
#Добавление секретного ключа (691б) в 7-й слот заголовка luks
cryptsetup luksAddKey --key-slot 7 /dev/sda7 /etc/skey#Проверка слотов "пароли/ключи luks-раздела"
cryptsetup luksDump /dev/sda7
Se verá aproximadamente así:
(hágalo usted mismo y lo verá).
cryptsetup luksKillSlot /dev/sda7 7 # eliminación de la clave/contraseña del slot 7/etc/fstab содержит описательную информацию о различных файловых системах.
#Правим /etc/fstab
nano /etc/fstab
# «file system» «mount poin» «type» «options» «dump» «pass»
# / was on /dev/sda7 during installation
/dev/mapper/sda7_crypt / ext4 errors=remount-ro 0 1
opción
* /dev/mapper/sda7_crypt - nombre de la asignación sda7>sda7_crypt, que se indica en el archivo /etc/crypttab.
La configuración de crypttab / fstab se ha completado.
B4.5. Edición de archivos de configuración. Punto claveB4.5.1. Edición del config /etc/initramfs-tools/conf.d/resume
#Если у вас ранее был активирован swap раздел, отключите его.
nano /etc/initramfs-tools/conf.d/resume
y comente (si existe) la línea «#» «resume». El archivo debe estar completamente vacío.
B4.5.2. Edición del config /etc/initramfs-tools/conf.d/cryptsetup
nano /etc/initramfs-tools/conf.d/cryptsetupdebe corresponder
# /etc/initramfs-tools/conf.d/cryptsetup
CRYPTSETUP=yes
export CRYPTSETUP
B4.5.3. Edición del config /etc/default/grub (este config es responsable de generar grub.cfg al trabajar con /boot cifrado)
nano /etc/default/grub agregue la línea «GRUB_ENABLE_CRYPTODISK=y»
el valor ‘y’, grub-mkconfig y grub-install verificarán la existencia de discos cifrados y generarán comandos adicionales necesarios para su acceso durante el arranque (insmod-ы <cryptomount/set root>).
debe ser algo similar
GRUB_DEFAULT=0
GRUB_TIMEOUT=1
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="acpi_backlight=vendor"
GRUB_CMDLINE_LINUX="quiet splash noautomount"
GRUB_ENABLE_CRYPTODISK=y
B4.5.4. Edición de la configuración /etc/cryptsetup-initramfs/conf-hook
nano /etc/cryptsetup-initramfs/conf-hook Verifica que la línea esté comentada .
En el futuro (y incluso ya ahora, este parámetro no tendrá ningún efecto, pero a veces interfiere con la actualización de la imagen initrd.img).
B4.5.5. Edición de la configuración /etc/cryptsetup-initramfs/conf-hook
nano /etc/cryptsetup-initramfs/conf-hookagregamos
KEYFILE_PATTERN="/etc/skey"
UMASK=0077
Esto empaquetará la clave secreta "skey" en initrd.img, la clave necesaria para desbloquear el root al iniciar el sistema operativo (si no se desea ingresar la contraseña nuevamente, la clave "skey" se proporcionará automáticamente).
B4.6. Actualización /boot/initrd.img [versión]Para empaquetar la clave secreta en initrd.img y aplicar las correcciones de cryptsetup, actualizamos la imagen
update-initramfs -u -k all durante la actualización de initrd.img (como se dice "Puede ser, pero no es seguro") aparecerán advertencias relacionadas con cryptsetup o, por ejemplo, una notificación sobre la pérdida de módulos de Nvidia: esto es normal. Después de actualizar el archivo, verifica que realmente se haya actualizado según la hora (en relación con el entorno chroot./boot/initrd.img). ¡Atención! antes de [update-initramfs -u -k all] asegúrate de que cryptsetup open /dev/sda7 sda7_crypt — ese es el nombre que debe aparecer en /etc/crypttab, de lo contrario, después del reinicio habrá un error de busybox)
En este paso, la configuración de los archivos de configuración está completa.
[C] Instalación y configuración de GRUB2/Protección
C1. Si es necesario, formatea la partición asignada para el cargador de arranque (la partición debe tener al menos 20 MB)
mkfs.ext4 -v -L GRUB2 /dev/sda6C2. Montar /dev/sda6 en /mntAsí que estamos trabajando en chroot, no habrá un directorio /mnt2 en el root, y la carpeta /mnt estará vacía.
montamos la partición GRUB2
mount /dev/sda6 /mntSi tienes una versión antigua de GRUB2, en el directorio /mnt/boot/grub/i386-pc (puede haber otra plataforma, por ejemplo, no "i386-pc") faltan los módulos criptográficos (en resumen, en la carpeta deben estar los módulos, incluyendo estos .mod: cryptodisk; luks; gcry_twofish; gcry_sha512; signature_test.mod), en ese caso, es necesario reinstalar GRUB2.
apt-get update
apt-get install grub2
¡Importante! Durante la actualización del paquete GRUB2 desde el repositorio, al preguntar "sobre la elección" de dónde instalar el cargador de arranque, es necesario rechazar la instalación (razón: intento de instalación de GRUB2 en "MBR" o en live usb). De lo contrario, dañará el encabezado/cargador de VeraCrypt. Después de actualizar los paquetes GRUB2 y cancelar la instalación, el cargador debe instalarse manualmente en el disco lógico, no en el «MBR». Si en su repositorio hay una versión obsoleta de GRUB2, intente desde el sitio oficial - no lo he verificado (he trabajado con cargadores recientes GRUB 2.02 ~BetaX).
C3. Instalación de GRUB2 en la partición extendida [sda6]Debe tener montada la partición [p.C.2]
grub-install --force --root-directory=\/mnt \/dev\/sda6 opciones
* —force -instala el cargador, omitiendo todas las advertencias que casi siempre existen y bloquean la instalación (bandera obligatoria).
* —root-directory -establece el directorio en la raíz de sda6.
* \/dev\/sda6 -su partición sdaX (no olvide entre \/mnt \/dev\/sda6).
C4. Creación del archivo de configuración [grub.cfg]Olvídese del comando «update-grub2» y use el comando completo para generar el archivo de configuración
grub-mkconfig -o \/mnt\/boot\/grub\/grub.cfg después de completar la generación/actualización del archivo grub.cfg, en la salida de la terminal deben aparecer líneas con los sistemas operativos encontrados en el disco («grub-mkconfig» puede encontrar y detectar sistemas operativos desde un usb en vivo si tiene un usb multiboot con Windows 10 y varios live distros — esto es normal). Si en la terminal hay «vacío», el archivo «grub.cfg» no se generó, entonces este es el caso en el que hay errores en Grub. (y muy probablemente el cargador proviene de la rama de pruebas del repositorio), reinstale GRUB2 desde fuentes confiables.
La instalación de «configuración simple» y la configuración de GRUB2 han finalizado.
C5. Prueba de la OS GNU/Linux encriptadaFinalizando correctamente la criptomisión. Abandonamos cuidadosamente el GNU/Linux encriptado (salida del entorno chroot).
umount -a #desmontar todas las particiones montadas de GNU/Linux encriptado
Ctrl+d #salir del entorno chroot
umount \/mnt\/dev
umount \/mnt\/proc
umount \/mnt\/sys
umount -a #desmontar todas las particiones montadas en el usb en vivo
reboot Después de reiniciar, el PC debe cargar el cargador de VeraCrypt.

*Introducir la contraseña para la partición activa - comenzará la carga del sistema operativo Windows.
*Presionar la tecla «Esc» transferirá el control a GRUB2; al seleccionar GNU/Linux encriptada, se requerirá la contraseña (sda7_crypt) para desbloquear \/boot\/initrd.img (si grub2 dice que uuid «no encontrado» - este es un problema del cargador grub2, debe reinstalarse, por ejemplo, desde la rama de pruebas/estables).

*Dependiendo de cómo haya configurado el sistema (ver p.B4.4/4.5), después de introducir correctamente la contraseña para desbloquear la imagen /boot/initrd.img, se requerirá una contraseña para cargar el núcleo/root del sistema operativo, o se insertará automáticamente la clave secreta «skey», evitando la necesidad de volver a introducir la frase de contraseña.

(captura de pantalla «inserción automática de la clave secreta»).
*A continuación, se llevará a cabo el familiar proceso de carga de GNU/Linux con la autenticación de la cuenta de usuario.

*Después de la autorización del usuario y su entrada al sistema operativo, es necesario actualizar de nuevo /boot/initrd.img (ver B4.6).
update-initramfs -u -k allY en caso de que haya líneas innecesarias en el menú GRUB2 (desde la captura del sistema operativo con live usb) deshacerse de ellas
mount /dev/sda6 /mnt
grub-mkconfig -o /mnt/boot/grub/grub.cfg
Resumen breve sobre el cifrado del sistema GNU/Linux:
- GNU/Linux está completamente cifrado, incluyendo /boot/kernel e initrd;
- la clave secreta está empaquetada en initrd.img;
- el esquema actual de autorización (ingreso de contraseña para desbloquear initrd; contraseña/claves para cargar el sistema operativo; contraseña de autorización de la cuenta de Linux).
La «configuración simple de GRUB2» para el cifrado del volumen bloqueado ha sido completada.
C6. Configuración avanzada de GRUB2. Protección del cargador con firma digital + protección mediante autenticación.GNU/Linux está completamente cifrado, pero no se puede cifrar el cargador – esta condición es dictada por el BIOS. Por esta razón, la carga en cadena cifrada de GRUB2 es imposible, pero se puede realizar/circular una carga en cadena simple, desde el punto de vista de la protección – no es necesario [ver P. F].
Para el GRUB2 'vulnerable', los desarrolladores han implementado un algoritmo de protección del cargador mediante 'firma/autenticación'.
- Con la protección del cargador 'con su propia firma digital', cualquier modificación externa de los archivos o el intento de cargar módulos adicionales en este cargador resultará en el bloqueo del proceso de carga.
- Con la protección del cargador mediante autenticación, para elegir la carga de alguna distribución o introducir comandos adicionales en CLI, será necesario ingresar el nombre de usuario y la contraseña del superusuario-GRUB2.
C6.1. Protección del cargador mediante autenticación.Verifique que esté trabajando en la terminal en el sistema operativo cifrado.
ls / #descubrir archivo de marcador.cree una contraseña de superusuario para autorización en GRUB2.
grub-mkpasswd-pbkdf2 #introduzca/repita la contraseña de superusuario. Obtenga el hash de la contraseña. Algo parecido a esto.
grub.pbkdf2.sha512.10000.DE10E42B01BB6FEEE46250FC5F9C3756894A8476A7F7661A9FFE9D6CC4D0A168898B98C34EBA210F46FC10985CE28277D0563F74E108FCE3ACBD52B26F8BA04D.27625A4D30E4F1044962D3DD1C2E493EF511C01366909767C3AF9A005E81F4BFC33372B9C041BE9BA904D7C6BB141DE48722ED17D2DF9C560170821F033BCFD8
montamos la partición de GRUB
mount /dev/sda6 /mnt editamos la configuración
nano -$ /mnt/boot/grub/grub.cfg verifique en el archivo que no haya banderas en «grub.cfg» como (» —unrestricted» «—user»,
agregue al final (antes de la línea ### END /etc/grub.d/41_custom ###)
«set superusers=»root»
hash de password_pbkdf2 root.
Debería ser algo así
# This file provides an easy way to add custom menu entries. Simply type the
# menu entries you want to add after this comment. Be careful not to change
# the ‘exec tail’ line above.
### END /etc/grub.d/40_custom ###### BEGIN /etc/grub.d/41_custom ###
if [ -f ${config_directory}/custom.cfg ]; then
source ${config_directory}/custom.cfg
elif [ -z «${config_directory}» -a -f $prefix/custom.cfg ]; then
source $prefix/custom.cfg;
fi
set superusers=«root»
password_pbkdf2 root grub.pbkdf2.sha512.10000.DE10E42B01BB6FEEE46250FC5F9C3756894A8476A7F7661A9FFE9D6CC4D0A168898B98C34EBA210F46FC10985CE28277D0563F74E108FCE3ACBD52B26F8BA04D.27625A4D30E4F1044962D3DD1C2E493EF511C01366909767C3AF9A005E81F4BFC33372B9C041BE9BA904D7C6BB141DE48722ED17D2DF9C560170821F033BCFD8
### END /etc/grub.d/41_custom ###
#
Si frecuentemente utiliza el comando «grub-mkconfig -o /mnt/boot/grub/grub.cfg» y no quiere hacer cambios cada vez en grub.cfg, incluya las líneas mencionadas arriba (usuario/contraseña) en un script personalizado de GRUB al final
nano /etc/grub.d/41_custom cat << EOF
set superusers=«root»
password_pbkdf2 root grub.pbkdf2.sha512.10000.DE10E42B01BB6FEEE46250FC5F9C3756894A8476A7F7661A9FFE9D6CC4D0A168898B98C34EBA210F46FC10985CE28277D0563F74E108FCE3ACBD52B26F8BA04D.27625A4D30E4F1044962D3DD1C2E493EF511C01366909767C3AF9A005E81F4BFC33372B9C041BE9BA904D7C6BB141DE48722ED17D2DF9C560170821F033BCFD8
EOF
Al generar la configuración «grub-mkconfig -o /mnt/boot/grub/grub.cfg», las líneas responsables de la autenticación se agregarán automáticamente a grub.cfg.
En este paso, la configuración de autenticación de GRUB2 está completa.
C6.2. Protección del cargador de arranque con firma digitalSe asume que ya tiene su clave PGP de cifrado personal (o cree una clave así). El sistema debe tener instalado software criptográfico: gnuPG; kleopatra/GPA; Seahorse. El software criptográfico le facilitará la vida en todos estos asuntos. Seahorse es una versión estable del paquete 3.14.0 (versiones posteriores, por ejemplo, V3.20, son deficientes y tienen errores significativos).
La clave PGP debe generarse/ejecutarse/agregarse solo en el entorno de su!
Generar una clave de cifrado personal
gpg --gen-keyExportar su clave
gpg --export -o ~/perskeyMonta el disco lógico en el sistema operativo si aún no está montado
mount /dev/sda6 /mnt #sda6 – partición de GRUB2limpiar la partición de GRUB2
rm -rf /mnt/Instale GRUB2 en sda6, colocando su clave personal en la imagen principal de GRUB «core.img»
grub-install --force --modules="gcry_sha256 gcry_sha512 signature_test gcry_dsa gcry_rsa" -k ~/perskey --root-directory=/mnt /dev/sda6 opciones
* --force -installa el cargador de arranque, omitiendo todas las advertencias que siempre existen (bandera obligatoria).
* --modules="gcry_sha256 gcry_sha512 signature_test gcry_dsa gcry_rsa" -indica a GRUB2 que cargue los módulos necesarios al iniciar la PC.
* -k ~/perskey -ruta hacia la «clave PGP» (una vez empaquetada la clave en la imagen, se puede eliminar).
* —root-directory -instalación del directorio boot en la raíz sda6
/dev/sda6 -ваш sdaХ раздел.
Generamos/actualizamos grub.cfg
grub-mkconfig -o /mnt/boot/grub/grub.cfgAñadimos al final del archivo «grub.cfg» la línea «trust /boot/grub/perskey» (forzar el uso de la clave pgp.) Dado que hemos instalado GRUB2 con un conjunto de módulos, incluyendo el módulo de firma «signature_test.mod», esto elimina la necesidad de agregar en la configuración comandos como «set check_signatures=enforce».
Debería verse algo así (líneas finales en el archivo grub.cfg)
### BEGIN /etc/grub.d/41_custom ###
if [ -f ${config_directory}/custom.cfg ]; then
source ${config_directory}/custom.cfg
elif [ -z «${config_directory}» -a -f $prefix/custom.cfg ]; then
source $prefix/custom.cfg;
fi
trust /boot/grub/perskey
set superusers=«root»
password_pbkdf2 root grub.pbkdf2.sha512.10000.DE10E42B01BB6FEEE46250FC5F9C3756894A8476A7F7661A9FFE9D6CC4D0A168898B98C34EBA210F46FC10985CE28277D0563F74E108FCE3ACBD52B26F8BA04D.27625A4D30E4F1044962D3DD1C2E493EF511C01366909767C3AF9A005E81F4BFC33372B9C041BE9BA904D7C6BB141DE48722ED17D2DF9C560170821F033BCFD8
### END /etc/grub.d/41_custom ###
#
No es necesario especificar el camino a «/boot/grub/perskey» en una partición específica del disco, por ejemplo hd0,6, para el cargador «root» se considera como la ruta predeterminada de la partición en la que GRUB2 está instalado. (ver set rot=..).
Firmamos GRUB2 (todos los archivos en todos los directorios /GRUB) con su clave «perskey».
Una solución sencilla para firmar (para el explorador nautilus/caja): instalamos desde el repositorio la extensión «seahorse» para el explorador. La clave debe haber sido añadida en el entorno su.
Abre el explorador desde sudo «/mnt/boot» – clic derecho – firmar. En la pantalla esto se ve así

La clave misma «/mnt/boot/grub/perskey» (copiar al directorio grub) también debe ser firmada con su propia firma. Verifique que en el directorio/subdirectorios aparecieron firmas de archivos [*.sig].
Firmamos «/boot» usando el método descrito anteriormente (nuestros kernel, initrd). Si su tiempo vale algo, este método ahorra escribir un script bash para firmar «múltiples archivos».
Para eliminar todas las firmas del cargador (si algo salió mal)
rm -f $(find /mnt/boot/grub -type f -name '*.sig')Para no tener que firmar el cargador después de actualizar el sistema, congelamos todos los paquetes de actualización relacionados con GRUB2.
apt-mark hold grub-common grub-pc grub-pc-bin grub2 grub2-commonEn este paso la configuración avanzada de GRUB2 ha finalizado.
C6.3. Prueba del cargador GRUB2, protegido con firma digital y autenticaciónGRUB2. Al seleccionar cualquier distribución de GNU/Linux o entrar en la CLI (línea de comandos) se requerirá la autorización del superusuario. Después de ingresar el nombre de usuario/contraseña correctos se requerirá la contraseña de initrd

Pantalla, autenticación exitosa del superusuario GRUB2.
Si se falsifica cualquiera de los archivos GRUB2/se realizan cambios en grub.cfg, o se elimina un archivo/firma, se carga un módulo malicioso.mod, aparecerá la advertencia correspondiente. La carga de GRUB2 se detendrá.

Captura de pantalla, intento de interferir en GRUB2 "desde fuera".
Con un arranque "normal" "sin interferencias", el estado del código de salida del sistema es "0". Por lo tanto, no se sabe si la protección funciona o no. (es decir, "con la protección del cargador de arranque por firma o sin ella" el estado es el mismo "0" durante el arranque normal — esto es malo).
¿Cómo verificar la protección con firma digital?
Método incómodo de verificación: falsificar/eliminar el módulo de GRUB2 utilizado, por ejemplo, eliminar la firma luks.mod.sig y recibir un error.
Método correcto: ingresar en la CLI del cargador y escribir el comando
trust_list Como respuesta, deberías obtener la huella "perskey"; si el estado es "0", significa que la protección mediante firma no funciona, verifica nuevamente p.C6.2.
En este paso, la configuración avanzada de "Protección de GRUB2 con firma digital y autenticación" ha terminado.
C7 Método alternativo de protección del cargador GRUB2 mediante hashEl método descrito anteriormente "Protección del cargador de CPU/Autenticación" es clásico. Debido a la imperfección de GRUB2, en condiciones paranoicas está sujeto a un ataque real, que expondré a continuación en p.[F]. Además, después de actualizar el SO/núcleo, es necesario volver a firmar el cargador.
Protección del cargador GRUB2 mediante hash
Ventajas sobre el clásico:
- Nivel de fiabilidad más alto (la hash/comprobación solo se lleva a cabo desde un recurso local cifrado. Se controla toda la partición dedicada a GRUB2 por cualquier modificación, mientras que todo lo demás está cifrado, en el esquema clásico de protección del cargador de CPU/Autenticación solo se controlan los archivos, pero no el espacio libre, donde "algo siniestro" se puede escribir).
- Registro cifrado (el esquema incluye un registro personal cifrado y legible).
- Velocidad (la protección/comprobación de toda la partición dedicada a GRUB2 se lleva a cabo prácticamente al instante).
- Automatización de todos los procesos criptográficos.
Desventajas frente al clásico.
- Falsificación de la firma (teóricamente, es posible encontrar una colisión específica de la función hash).
- Mayor nivel de complejidad (en comparación con el clásico, requiere un poco más de habilidades en el sistema operativo GNU/Linux).
¿Cómo funciona la idea de hash en GRUB2/sección?
La sección GRUB2 se firma, y durante el arranque del sistema, se verifica la integridad de la sección del cargador de arranque con un registro subsecuente en un entorno seguro (encriptado). En caso de una posible infiltración del cargador de arranque o de su sección, además de registrar la intrusión, se inicia
una verificación.
Cuatro veces al día se realiza una verificación similar que no sobrecarga los recursos del sistema.
Con el comando «-$ verificar_GRUB», se lleva a cabo una verificación instantánea en cualquier momento sin registrar, pero mostrando información en la CLI.
Con el comando «-$ sudo firmar_GRUB», se re-firma instantáneamente el cargador GRUB2/la sección y se registra su actualización. (necesario tras actualizar el sistema operativo/boot), y la vida continúa.
Implementación del método de hashing del cargador y su sección.
0) Firmaremos el cargador/sección GRUB, previamente montándolo en /media/username.
-$ hashdeep -c md5 -r /media/username/GRUB > /firmado.txt1) Creamos un script sin extensión en la raíz del sistema operativo encriptado ~/firmado, aplicándole los permisos de seguridad 744 y protección contra 'tontos'.
Llenamos su contenido.
#!/bin/bash
#Проверка всего раздела выделенного под загрузчик GRUB2 на неизменность.
#Ведется лог "о вторжении/успешной проверке каталога", короче говоря ведется полный лог с тройной вербализацией. Внимание! обратить взор на пути: хранить ЦП GRUB2 только на зашифрованном разделе OS GNU/Linux.
echo -e "******************************************************************n" >> '/var/log/podpis.txt' && date >> '/var/log/podpis.txt' && hashdeep -vvv -a -k '/podpis.txt' -r '/media/username/GRUB' >> '/var/log/podpis.txt'
a=`tail '/var/log/podpis.txt' | grep failed` #не использовать "cat"!!
b="hashdeep: Audit failed"
#Условие: в случае любых каких-либо изменений в разделе выделенном под GRUB2 к полному логу пишется второй отдельный краткий лог "только о вторжении" и выводится на монитор мигание gif-ки "warning".
if [[ "$a" = "$b" ]]
then
echo -e "****n" >> '/var/log/vtorjenie.txt' && echo "vtorjenie" >> '/var/log/vtorjenie.txt' && date >> '/var/log/vtorjenie.txt' & sudo -u username DISPLAY=:0 eom '/warning.gif'
fiEjecutamos el script desde su, se realizará la verificación del hash de la sección GRUB y su cargador, guardando el registro.
Crearemos o copiaremos, por ejemplo, un 'archivo malicioso' [virus.mod] en la sección GRUB2 y ejecutaremos una verificación/prueba temporal:
-$ hashdeep -vvv -a -k '/firmado.txt' -r '/media/username/GRUBEn la CLI deberíamos ver la intrusión en nuestra -ciudadela-#Урезанный лог в CLI
Mié ene 2 11:41 MSK 2020
/media/username/GRUB/boot/grub/virus.mod: Movido de /media/username/GRUB/1nononoshifr
/media/username/GRUB/boot/grub/i386-pc/mda_text.mod: Ok
/media/username/GRUB/boot/grub/grub.cfg: Ok
hashdeep: Auditoría fallida
Archivos de entrada examinados: 0
Archivos conocidos esperando: 0
Archivos coincidentes: 325
Archivos parcialmente coincidentes: 0
Archivos movidos: 1
Nuevos archivos encontrados: 0
Archivos conocidos no encontrados: 0 #как видим появилось «Files moved: 1 и Audit failed» означает, что проверка не прошла.
Debido a las características de la sección probada, en lugar de 'Nuevos archivos encontrados' > 'Archivos movidos'.
2) Colocamos un gif aquí > ~/warning.gif, establecemos permisos 744.
3) Configuramos fstab para montado automático de la sección GRUB durante el arranque.
-$ sudo nano /etc/fstabLABEL=GRUB /media/username/GRUB ext4 defaults 0 0
4) Realizamos la rotación del registro.
-$ sudo nano /etc/logrotate.d/firmado /var/log/podpis.txt {
diario
rotar 50
tamaño 5M
dateext
comprimir
demorar compresión
olddir /var/log/old
}/var/log/vtorjenie.txt {
mensual
rotar 5
tamaño 5M
dateext
olddir /var/log/old
}
5) Agregamos una tarea en cron.
-$ sudo crontab -e'/firmado'
0 */6 * * * '/firmado
6) Creamos alias permanentes.
-$ sudo su
-$ echo "alias firmar_GRUB='hashdeep -c md5 -r /media/username/GRUB > /firmado.txt'" >> /root/.bashrc && bash
-$ echo "alias verificar_GRUB='hashdeep -vvv -a -k '/firmado.txt' -r /media/username/GRUB'" >> .bashrc && bash
Tras actualizar el sistema operativo. -$ apt-get upgrade re-firmamos nuestra sección GRUB.
-$ firmar_GRUB
En este paso, la protección mediante hash de la partición GRUB ha finalizado.
[D] Borrado — destrucción de datos no cifrados
Elimina tus archivos personales de tal manera que "ni siquiera Dios pueda leerlos", según un representante de Carolina del Sur, Trey Gowdy.
Como siempre, existen diferentes "mitos y ", sobre la recuperación de datos después de haber sido eliminados del disco duro. Si crees en la ciberbrujería, o eres un miembro de la comunidad Dr. Web y nunca has intentado recuperar datos después de su eliminación / sobrescritura (por ejemplo, la recuperación usando R-studio), entonces el método propuesto probablemente no te será útil, usa lo que te sea más cercano.
Después de transferir con éxito GNU / Linux a una partición cifrada, la copia antigua debe ser eliminada de forma irreversible. Un método universal de limpieza: software para Windows / Linux, software GUI gratuito .
Rápido formateamos la partición, cuyos datos deben ser destruidos (con Gparted), iniciamos BleachBit, seleccionamos "Limpieza de espacio libre" – seleccionamos la partición (tu sdaX con la copia anterior de GNU / Linux), comenzará el proceso de limpieza. BleachBit limpia el disco en una sola pasada — esto es lo que "necesitamos", ¡pero! así funciona solo en teoría, si formateaste el disco y limpiaste en BB v2.0.
Atención! BB limpia el disco, dejando metadatos, los nombres de archivo se mantienen durante la eliminación de datos (Ccleaner — no deja metadatos).
Y el mito sobre la posibilidad de recuperación de datos no es del todo un mito.Bleachbit V2.0-2 fue un paquete inestable de OS Debian (y cualquier otro software similar: sfill; wipe-Nautilus -también han sido vistos en este oscuro asunto) tenía en realidad un error crítico: la función de "limpieza de espacio libre" no funciona correctamente en HDD / USB (ntfs / ext4). Este tipo de software, al limpiar el espacio libre, no sobrescribe todo el disco, como muchos usuarios piensan. Y algunos(muchos) archivos eliminados por el sistema operativo / software consideran que estos datos no están eliminados / son del usuario y al limpiar "ESP" omiten esos archivos. El problema es que después de una limpieza prolongada del disco "los archivos eliminados" se pueden recuperar incluso después de más de 3 pasadas de limpieza del disco. En GNU / Linux en Bleachbit
En GNU/Linux en Bleachbit 2.0-2 las funciones de eliminación permanente de archivos y carpetas funcionan de manera confiable, pero no la limpieza del espacio libre. En comparación, en Windows, el software CCleaner tiene la función 'OS para ntfs' que funciona correctamente, y Dios realmente no podrá leer los datos eliminados.
Y así, para eliminar por completo los datos "comprometidos" antiguos no cifrados, se necesita acceso directo de Bleachbit a estos datos, luego, usar la función "eliminar archivos/carpeta permanentemente".
Para eliminar "archivos eliminados por medios estándar del sistema operativo" en Windows, utilice CCleaner/BB con la función "OS". En GNU/Linux, sobre este problema (eliminación de archivos eliminados) es necesario obtener práctica por cuenta propia (eliminación de datos + intento independiente de recuperación y no debe confiar en la versión del software (si no es un backdoor, puede ser un bug)), solo de esta manera podrá comprender el mecanismo de este problema y deshacerse de los datos eliminados de forma definitiva.
Bleachbit v3.0 no se ha probado, quizás el problema ya se haya solucionado.
Bleachbit v2.0 funciona de manera honesta.
En este paso, la "limpieza del disco" se ha completado.
[E] Copia de seguridad universal de sistemas operativos cifrados
Cada usuario tiene su propio método de copia de seguridad de datos, pero los datos cifrados de los 'Sistemas Operativos' requieren un enfoque ligeramente diferente para la tarea. El software unificado, como 'Clonezilla' y programas similares no pueden trabajar directamente con datos cifrados.
Planteamiento de la tarea de copia de seguridad de dispositivos de bloques cifrados:
- universalidad: un mismo algoritmo/software de copia de seguridad para Windows/Linux;
- capacidad de trabajar en consola con cualquier live usb de GNU/Linux sin necesidad de descargar software adicional (pero aún recomiendo GUI);
- seguridad de las copias de seguridad: las 'imágenes' almacenadas deben estar cifradas/protegidas por contraseña;
- el tamaño de los datos cifrados debe corresponder al tamaño de los datos reales que se copian;
- extracción conveniente de archivos necesarios de la copia de seguridad (sin la necesidad de descifrar primero toda la partición).
Por ejemplo, copia de seguridad/recuperación a través de la utilidad 'dd'
dd if=/dev/sda7 of=/ruta/sda7.img bs=7M conv=sync,noerror
dd if=/ruta/sda7.img of=/dev/sda7 bs=7M conv=sync,noerrorCumple con casi todos los puntos establecidos, pero en el punto 4 no es satisfactorio, ya que copia toda la sección del disco en su totalidad, incluyendo el espacio libre, lo cual no es interesante.
Por ejemplo, hacer una copia de seguridad de GNU/Linux a través del archivador [tar» | gpg] es conveniente, pero para hacer copias de seguridad de Windows se necesita buscar otra solución, lo cual no es interesante.
E1. Copia de seguridad universal para Windows/Linux. Conjunto rsync (Grsync)+VeraCrypt volumenAlgoritmo para crear una copia de seguridad:
- creación de un contenedor cifrado (volumen/archivo) VeraCrypt para SO;
- transferencia/sincronización del SO usando Rsync en el contenedor criptográfico VeraCrypt;
- si es necesario, carga del volumen VeraCrypt en www.
La creación de un contenedor cifrado VeraCrypt tiene sus peculiaridades:
creación de un volumen dinámico (solo se puede crear un volumen dinámico en Windows, se puede usar también en GNU/Linux);
creación de un volumen normal, pero hay un requisito de "carácter paranoico" (según el desarrollador) – formateo del contenedor.
El volumen dinámico se crea prácticamente al instante en el SO Windows, pero al copiar datos desde el SO GNU/Linux > VeraCrypt DV, en general, el rendimiento de la operación de copia de seguridad disminuye considerablemente.
Un volumen normal Twofish de 70 GB se crea (digamos, en una PC de potencia media) en HDD ~ en media hora (reescribiendo los datos anteriores del contenedor en un solo paso, por requisitos de seguridad). Se eliminó la función de formateo rápido del volumen durante su creación en VeraCrypt Windows/Linux, por lo que la creación del contenedor es posible solo a través de "reescritura en un solo paso", o mediante la creación de un volumen dinámico de bajo rendimiento.
Creamos un volumen normal VeraCrypt (no dinámico/ntfs), no debería haber problemas.
Configuramos/creamos/abrimos el contenedor en VeraCrypt GUI > USB en vivo de GNU/Linux (el volumen se montará automáticamente en /media/veracrypt2, el volumen del SO Windows se montará en /media/veracrypt1). Creamos una copia de seguridad cifrada del SO Windows usando la GUI de rsync (grsync), marcando las casillas.

Esperar a que finalice el proceso. Una vez finalizada la copia de seguridad, tendremos un único archivo cifrado.
De manera similar, crear una copia de seguridad del SO GNU/Linux, desmarcando la opción de "compatibilidad con Windows" en la GUI de rsync.
Atención! el contenedor Veracrypt para "copia de seguridad de GNU/Linux" debe crearse en el sistema de archivos ext4. Si haces la copia de seguridad en un contenedor ntfs, perderás todos los derechos/grupos sobre tus datos al restaurar esa copia.
Todas las operaciones se pueden realizar también en la terminal. Opciones principales para rsync:
* -g - preservar grupos;
* -P —progress — estado del tiempo de trabajo sobre el archivo;
* -H - copiar enlaces duros tal como están;
* -a - modo archivado (varios flags rlptgoD);
* -v - verbalización.
Si se desea montar un "volumen Windows VeraCrypt" a través de la consola en el software cryptsetup, se puede crear un alias (su)
echo "alias veramount='cryptsetup open --veracrypt --tcrypt-system --type tcrypt /dev/sdaX Windows_crypt && mount /dev/mapper/ Windows_crypt /media/veracrypt1'" >> .bashrc && bash
Ahora, al ejecutar el comando "veramount pictures", se solicitará la frase de contraseña, y el volumen del sistema encriptado de Windows se montará en el SO.
Comando para montar/mapear el volumen del sistema VeraCrypt en cryptsetup
cryptsetup open --veracrypt --tcrypt-system --type tcrypt /dev/sdaX Windows_crypt
mount /dev/mapper/Windows_crypt /mntComando para montar/mapear la partición/contenedor VeraCrypt en cryptsetup
cryptsetup open --veracrypt --type tcrypt /dev/sdaY test_crypt
mount /dev/mapper/test_crypt /mntEn lugar de un alias, añadiremos (script al inicio) el volumen del sistema con el SO Windows y el disco lógico encriptado ntfs al inicio de GNU/Linux
Creamos un script y lo guardamos en ~/VeraOpen.sh
printf 'Ym9i' | base64 -d | cryptsetup open --veracrypt --tcrypt-system --type tcrypt /dev/sda3 Windows_crypt && mount /dev/mapper/Windows_crypt /media/Winda7 # decodificamos la contraseña en base64 (bob) y la enviamos a la solicitud de entrada de contraseña al montar el disco del sistema de Windows.
printf 'Ym9i' | base64 -d | cryptsetup open --veracrypt --type tcrypt /dev/sda1 ntfscrypt && mount /dev/mapper/ntfscrypt /media/ContenedorNtfs # de manera similar, pero montamos el disco lógico ntfs.
Otorgamos los derechos "correctos":
sudo chmod 100 /VeraOpen.shCreamos dos archivos idénticos (mismo nombre) en /etc/rc.local y ~/etc/init.d/rc.local
Llenamos los archivos
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will «exit 0» on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
sh -c "sleep 1 && '/VeraOpen.sh'" #после загрузки ОС, ждём ~ 1с и только потом монтируем диски.
exit 0Otorgamos los derechos "correctos":
sudo chmod 100 /etc/rc.local && sudo chmod 100 /etc/init.d/rc.local Listo, ahora al iniciar GNU/Linux no necesitamos ingresar contraseñas para montar discos encriptados ntfs, los discos se montan automáticamente.
Nota breve sobre lo descrito anteriormente en p.E1 en pasos (pero ahora para OS GNU/Linux)
1) Crear un volumen en fs ext4 > 4gb (para un archivo) Linux en Veracrypt [Caja de Criptografía].
2) Reiniciar en live usb.
3) ~$ cryptsetup open /dev/sda7 Lunux # mapeo de partición encriptada.
4) ~$ mount /dev/mapper/Linux /mnt # montaje de la partición encriptada en /mnt.
5) ~$ mkdir mnt2 # creación de un directorio para la futura copia de seguridad.
6) ~$ cryptsetup open --veracrypt --type tcrypt ~/Caja de Criptografía Caja de Criptografía && mount /dev/mapper/Caja de Criptografía /mnt2 # Mapeo del volumen de Veracrypt llamado "Caja de Criptografía" y montaje de la Caja de Criptografía en /mnt2.
7) ~$ rsync -avlxhHX --progress /mnt /mnt2/ # operación de copia de seguridad de la partición encriptada a la unidad encriptada de Veracrypt.
(p/s/ Atención! Si está trasladando un GNU/Linux cifrado de una arquitectura/máquina a otra, por ejemplo, de Intel > AMD (es decir, está restaurando una copia de seguridad de una partición cifrada a otra partición cifrada Intel > AMD), no olvide después de trasladar el sistema operativo cifrado, modificar la clave secreta en lugar de la contraseña, ya que la clave anterior ~ /etc/skey ya no servirá para otra partición cifrada, y no se recomienda crear una nueva clave con «cryptsetup luksAddKey» desde un chroot — es posible que ocurra un error; simplemente en ~ /etc/crypttab, indique temporalmente en lugar de «/etc/skey» «none», después de reiniciar y acceder al sistema operativo, recree su clave secreta de nuevo).
Como veteranos de TI, recordamos que es imprescindible hacer copias de seguridad de los encabezados de las particiones cifradas del sistema operativo Windows/Linux, de lo contrario, el cifrado puede volverse en su contra.
En este paso, la copia de seguridad de los sistemas operativos cifrados está completa.
[F] Ataque al cargador GRUB2
DetallesSi ha protegido su cargador con una firma digital y/o autenticación (ver p.C6.), eso no protegerá contra el acceso físico. Los datos cifrados seguirán siendo inaccesibles, pero eludir la protección (el restablecimiento de la protección de la firma digital) GRUB2 permite a un ciberdelincuente insertar su código en el cargador sin levantar sospechas (a menos que el usuario supervisara manualmente el estado del cargador, o no ideara su propio código de script arbitrario robusto para grub.cfg).
El algoritmo de ataque. El delincuente
* Arranca la PC desde un usb en vivo. Cualquier cambio (por el infractor) de los archivos notificará al verdadero propietario de la PC sobre la intrusión en el cargador. Pero una simple reinstalación de GRUB2 conservando grub.cfg (y la posterior posibilidad de editarlo) permitirá al delincuente editar cualquier archivo (en tal escenario, al iniciar GRUB2, no habrá notificación al verdadero usuario. El estado sigue siendo )
* Monta una partición no cifrada, guarda «/mnt/boot/grub/grub.cfg».
* Reinstala el cargador (eliminando «perskey» de la imagen core.img)
grub-install --force --root-directory=\/mnt \/dev\/sda6 * Devuelve «grub.cfg» > «/mnt/boot/grub/grub.cfg», y lo edita si es necesario, por ejemplo, añadiendo su módulo «keylogger.mod» a la carpeta de módulos del cargador, en «grub.cfg» > línea «insmod keylogger». O, por ejemplo, si el enemigo es astuto, después de reinstalar GRUB2 (todas las firmas permanecen en su lugar) Recoge la imagen base de GRUB2 utilizando «grub-mkimage con la opción (-s).» La opción «-s» permite cargar su configuración antes de cargar el principal «grub.cfg». La configuración puede constar de una sola línea: redirección a cualquier «modern.cfg», mezclado, por ejemplo, con ~400 archivos. (módulos+firmas) en la carpeta «/boot/grub/i386-pc». De esta manera, el atacante puede insertar código arbitrario y cargar módulos sin afectar «/boot/grub/grub.cfg», incluso si el usuario aplicó «hashsum» al archivo y lo mostró temporalmente en pantalla.
El atacante no necesitará hackear el login/contraseña del superusuario de GRUB2, solo tendrá que copiar las líneas (responsables de la autenticación) «/boot/grub/grub.cfg» en su «modern.cfg»
set superusers=«root»
password_pbkdf2 root grub.pbkdf2.sha512.10000.DE10E42B01BB6FEEE46250FC5F9C3756894A8476A7F7661A9FFE9D6CC4D0A168898B98C34EBA210F46FC10985CE28277D0563F74E108FCE3ACBD52B26F8BA04D.27625A4D30E4F1044962D3DD1C2E493EF511C01366909767C3AF9A005E81F4BFC33372B9C041BE9BA904D7C6BB141DE48722ED17D2DF9C560170821F033BCFD8
Y para el propietario del PC, seguirá aplicándose la verificación de autenticidad del superusuario GRUB2.
Carga encadenada (el cargador carga otro cargador), como se mencionó anteriormente, no tiene sentido (está destinado a otro propósito). Debido a la BIOS, no se puede cargar un cargador cifrado (en la carga encadenada se reinicia GRUB2 > GRUB2 cifrado, ¡error!). Sin embargo, si se sigue la idea de la carga encadenada, se puede estar seguro de que se carga efectivamente el cifrado (no modernizado) «grub.cfg» desde la partición cifrada. Y también es una falsa sensación de seguridad, porque todo lo que está indicado en el «grub.cfg» cifrado (carga de módulos) se combina con los módulos que se cargan desde el GRUB2 sin cifrar.
Si desea comprobarlo, asigne/cifre otra partición sdaY, copie GRUB2 en ella (la operación grub-install en la partición cifrada no es posible) y en «grub.cfg» (configuración sin cifrar) cambie líneas similares a estas
menuentry ‘GRUBx2’ —class parrot —class gnu-linux —class gnu —class os $menuentry_id_option ‘gnulinux-simple-382111a2-f993-403c-aa2e-292b5eac4780’ {
load_video
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
insmod part_msdos
insmod cryptodisk
insmod luks
insmod gcry_twofish
insmod gcry_twofish
insmod gcry_sha512
insmod ext2
cryptomount -u 15c47d1c4bd34e5289df77bcf60ee838
set root=’cryptouuid/15c47d1c4bd34e5289df77bcf60ee838’
normal /boot/grub/grub.cfg
}
líneas
* insmod -carga de los módulos necesarios para trabajar con el disco cifrado;
* GRUBx2 -nombre mostrado en la entrada del menú de arranque de GRUB2;
* cryptomount -u 15c47d1c4bd34e5289df77bcf60ee838 -ver fdisk -l (sda9);
* set root -establecimiento raíz;
* normal /boot/grub/grub.cfg -archivo ejecutable de configuración en la partición cifrada.
La confianza de que se carga el "grub.cfg" cifrado es una respuesta positiva a la introducción de la contraseña/desbloqueo de "sdaY" al seleccionar la opción "GRUBx2" en el menú de GRUB.
Al trabajar en CLI, para no confundirse (y verificar si la variable de entorno "set root" funcionó), cree archivos vacíos de marcador, por ejemplo, en la partición cifrada "\/shifr_grub", en la partición no cifrada "\/noshifr_grub". Verificación en CLI
cat \/Tab-TabComo se mencionó anteriormente, esto no ayudará a evitar la carga de módulos maliciosos si tales módulos están en su PC. Por ejemplo, un keylogger que puede guardar las pulsaciones de teclas en un archivo y mezclarse con otros archivos en "~\/i386", hasta que un atacante lo descargue con acceso físico a la PC.
La forma más sencilla de verificar que la protección de la firma digital está funcionando (no ha sido restablecida), y nadie ha intervenido el cargador, en CLI ingresamos el comando
list_trusted como respuesta obtenemos una impresión de nuestra "perskey", o no obtenemos nada si hemos sido atacados (también es necesario verificar "set check_signatures=enforce").
Un inconveniente significativo de este paso es que hay que introducir los comandos manualmente. Si se agrega este comando en "grub.cfg" y se protege el archivo con una firma digital, entonces la salida preliminar de la impresión de la clave en pantalla es demasiado corta en tiempo, y puede que no se logre ver la salida, recibiendo una carga de GRUB2.
No hay a quién presentar quejas: el desarrollador en su p.18.2 declara oficialmente
"Tenga en cuenta que, incluso con la protección con contraseña de GRUB, GRUB no puede evitar que alguien con acceso físico a la máquina altere la configuración del firmware de esa máquina (por ejemplo, Coreboot o BIOS) para hacer que la máquina arranque desde un dispositivo diferente (controlado por el atacante). GRUB es, en el mejor de los casos, solo un eslabón de una cadena de arranque seguro."
GRUB2 está demasiado cargado de funciones que pueden dar una sensación de falsa seguridad, y su desarrollo ya ha superado en funcionalidad a los sistemas operativos MS-DOS, y eso es solo un cargador. Es curioso que GRUB2 pueda convertirse en un SO en el "mañana", y que las máquinas virtuales GNU/Linux que opera.
Un pequeño vídeo sobre cómo restablecí la protección de la firma digital de GRUB2 y anuncié mi intervención al usuario real (asusté, y en lugar de lo que se muestra en el vídeo, se podría escribir código/mod no tan inocente).

Conclusiones:
1) El cifrado de disco completo en Windows es más fácil de implementar, y protegerse con una sola contraseña es más conveniente que con varias contraseñas en el cifrado de disco completo de GNU/Linux, para ser justos: lo último está automatizado.
2) El artículo fue escrito como relevante y detallado sencillo manual sobre el cifrado de disco completo VeraCrypt/LUKS en una máquina doméstica, que hoy en día es el mejor en la red (IMHO). El manual tiene más de 50k caracteres, por lo que no se abordaron algunos capítulos interesantes: sobre los criptógrafos que desaparecen/se mantienen en la sombra; sobre lo que pocas veces se escribe en los libros de GNU/Linux sobre criptografía; sobre el artículo 51 de la constitución de la Federación Rusa; sobre /запрете , sobre por qué es necesario cifrar la «raíz/boot». El manual resultó ser extenso, pero detallado (describiendo incluso los pasos simples), a su vez, esto te ahorrará un montón de tiempo cuando te dediques a lo que es un «cifrado real».
3) El cifrado de disco completo se realizó en Windows 7 de 64 bits; GNU/Linux Parrot 4x; GNU/Debian 9.0/9.5.
4) Se llevó a cabo un ataque exitoso en su cargador GRUB2.
5) El tutorial fue creado para ayudar a todos los paranoicos de la CEI, donde el trabajo con cifrado está permitido a nivel legislativo. Y en primer lugar para aquellos que desean implementar el cifrado de disco completo sin borrar sus sistemas configurados.
6) He revisado y actualizado mi manual, que es relevante en 2020.
[G] Documentación útil
- (febrero 2012 RU)
- /usr/share/doc/cryptsetup(-run) [локальный ресурс] (documentación oficial detallada sobre la configuración del cifrado en GNU/Linux usando cryptsetup)
- (documentación breve sobre la configuración del cifrado en GNU/Linux usando cryptsetup)
- (documentación de archlinux)
- (página de manual de arch)
- (página de manual de arch)
- .
Etiquetas: cifrado completo del disco, cifrado de particiones, cifrado de disco completo en Linux, cifrado completo del sistema LUKS1.
Solo los usuarios registrados pueden participar en la encuesta. , por favor.
¿Cifras?
17,1%Cifro todo lo que puedo. Tengo paranoia.14
34,2%Cifro solo datos importantes.28
14,6%A veces cifro, a veces olvido.12
34,2%No, no cifro, es incómodo y costoso.28
82 usuarios votaron. 22 usuarios se abstuvieron.
Fuente: habr.com
