
Atualização do seu próprio guia para criptografia de disco completo na internet V0.2.
Estratégia de cowboy:
[A] criptografia de sistema de bloco para Windows 7 instalada;
[B] criptografia de sistema de bloco para GNU/Linux (Debian) sistema instalado (incluindo /boot);
[C] configuração do GRUB2, proteção do carregador de inicialização com assinatura digital/autenticação/hash;
[D] limpeza — destruição de dados não criptografados;
[E] backup universal de sistemas operacionais criptografados;
[F] ataque objetivo — carregador GRUB2;
[G] documentação útil.
╭───Diagrama #quarto 40# :
├──╼ Windows 7 instalado — criptografia de sistema completo, não oculto;
├──╼ GNU/Linux instalado (Debian e distribuições derivadas) — criptografia de sistema completo não oculto(/, incluindo /boot; swap);
├──╼ carregadores independentes: carregador VeraCrypt instalado no MBR, carregador GRUB2 instalado na partição estendida;
├──╼ instalação/reinstalação do SO não é necessária;
└──╼ software criptográfico usado: VeraCrypt; Cryptsetup; GnuPG; Seahorse; Hashdeep; GRUB2 – livre/gratuito.
O diagrama acima resolve parcialmente o problema da "inicialização de um boot em um pen drive", permitindo desfrutar de sistemas operacionais Windows/Linux criptografados e trocar dados por um "canal criptografado" de um SO para outro.
Ordem de inicialização do PC (uma das opções):
- ligar a máquina;
- carregar o carregador VeraCrypt (a entrada correta da senha continuará a inicialização do Windows 7);
- pressionar a tecla "Esc" carregará o carregador GRUB2;
- carregador GRUB2 (seleção de distribuição/GNU/Linux/CLI), solicitará autenticação do superusuário GRUB2 ;
- após a autenticação bem-sucedida e seleção da distribuição, será necessário inserir a senha para desbloquear "/boot/initrd.img";
- após a inserção das senhas corretas no GRUB2, será "necessário" inserir a senha (a terceira senha, senha BIOS ou senha da conta de usuário GNU/Linux – não considerar) para desbloquear e iniciar o SO GNU/Linux, ou preenchimento automático da chave secreta (duas senhas + chave, ou senha + chave);
- uma invasão externa na configuração do GRUB2 congelará o processo de inicialização do GNU/Linux.
Complicado? Certo, vamos automatizar os processos.
Ao particionar o disco rígido (tabela MBR) o PC pode ter não mais do que 4 partições primárias, ou 3 primárias e uma estendida, além de uma área não particionada. A partição estendida, ao contrário da primária, pode conter subpartições. (discos lógicos=partição estendida). Em outras palavras, a «partição estendida» no HDD substitui o LVM para a tarefa atual: a criptografia completa do sistema. Se o seu disco está particionado em 4 partições principais, você precisará usar lvm ou transformar (com formatação) a partição principal em estendida, ou utilizar corretamente todas as quatro partições e deixar tudo como está, alcançando o resultado desejado. Mesmo que você tenha apenas uma partição no disco, o Gparted pode ajudar a dividir o HDD (em partições adicionais) sem perda de dados, mas ainda assim com um pequeno custo por tais ações.
O esquema de particionamento do disco rígido, em relação ao qual a verbalização de todo o artigo será feita, é apresentado na tabela abaixo.

Tabela (nº 1) das partições de 1TB.
Algo semelhante deve estar presente no seu.
sda1 — partição principal nº 1 NTFS (criptografado);
sda2 — partição estendida marcadora;
sda6 — disco lógico (onde o carregador GRUB2 está instalado);
sda8 — swap (arquivo de paginação criptografado/nem sempre);
sda9 — disco lógico de teste;
sda5 — disco lógico para curiosos;
sda7 — SO GNU/Linux (SO movido para disco lógico criptografado);
sda3 — partição principal nº 2 com SO Windows 7 (criptografado);
sda4 — partição principal nº 3 (onde havia GNU/Linux não criptografado, usado para backup/nem sempre).
[A] Criptografia de bloco do sistema Windows 7
A1. VeraCrypt
Inicialização a partir de , ou a partir de um espelho da versão de instalação do software criptográfico VeraCrypt (no momento da publicação do artigo v1.24-Update3, a versão portátil do VeraCrypt não é adequada para criptografia do sistema). Verifique a soma de verificação do software baixado
$ Certutil -hashfile "C:VeraCrypt Setup 1.24.exe" SHA256
e compare o resultado obtido com a CS divulgada no site do desenvolvedor do VeraCrypt.
Se o software HashTab estiver instalado, é ainda mais simples: clique com o botão direito (VeraCrypt Setup 1.24.exe)-propriedades-soma de hashes dos arquivos.
Para verificar a assinatura do programa, é necessário que o software e a chave pública pgp do desenvolvedor estejam instalados ; .
A2. Instalação/início do software VeraCrypt com direitos de administrador
A3. Escolha das opções de criptografia do sistema da partição ativaVeraCrypt – Sistema – Criptografar partição/disk do sistema – Normal – Criptografar partição do Windows – Múltipla inicialização – (aviso: «Não é recomendado para usuários inexperientes usar este método» e isso é verdade, concordamos «Sim») – Disco inicial ("sim", mesmo que não seja assim, de qualquer forma "sim") – Número de discos do sistema "2 ou mais" – Múltiplos sistemas em um único disco "Sim" – Não é um carregador do Windows "Não" (na prática "Sim", mas os carregadores VeraCrypt/GRUB2 não compartilham o MBR entre si, mais precisamente, no MBR/pista de inicialização é armazenada apenas a menor parte do código do carregador, a maior parte se encontra dentro do sistema de arquivos) – Inicialização múltipla – Configurações de parâmetros de criptografia…
Se você se desviar dos passos descritos acima (esquemas de criptografia em bloco do sistema), então o VeraCrypt emitirá um aviso e não permitirá criptografar a partição.
Na próxima etapa, em direção à proteção direcionada dos dados, realize um "Teste" e escolha o algoritmo de criptografia. Se você tiver um CPU antigo, provavelmente o algoritmo de criptografia mais rápido será o Twofish. Se o CPU for poderoso, você notará a diferença: o AES – a criptografia segundo os resultados do teste será várias vezes mais rápida que seus concorrentes criptográficos. O AES – é um algoritmo de criptografia popular, a parte de hardware dos CPUs modernos é especialmente otimizada tanto para o "segredo" quanto para o "quebrar".
O VeraCrypt suporta a possibilidade de criptografar discos em cascata com AES(Twofish)/и другими комбинациями. На старо-ядерном CPU Intel десятилетней давности (sem suporte de hardware para AES, criptografia em cascata A/T) a diminuição de desempenho é essencialmente imperceptível. (no CPU AMD da mesma época/~parâmetros – o desempenho é ligeiramente reduzido). O sistema operacional funciona dinamicamente e o consumo de recursos para a criptografia transparente é imperceptível. Em contraste, como por exemplo, uma redução perceptível de desempenho devido à utilização de um ambiente desktop de teste instável Mate v1.20.1 (ou v1.20.2 não me lembro exatamente) No GNU/Linux ou devido ao funcionamento do subprograma de telemetria no Windows 7↑. Geralmente, usuários experientes realizam testes de desempenho de hardware antes da criptografia. Por exemplo, com Aida64/Sysbench/systemd-analyze blame e comparam com os resultados desses mesmos testes após a criptografia do sistema, assim, provando para si mesmos o mito de que 'a criptografia de sistema é prejudicial'. A lentidão da máquina e o desconforto são perceptíveis ao fazer backup/restaurar dados criptografados, pois a própria operação de 'backup de dados do sistema' não é medida em milissegundos, e adiciona aquele mesmo . No final, cada usuário que pode trabalhar com criptografia estabelece um equilíbrio entre o algoritmo de criptografia em relação à satisfação das tarefas, o nível de sua paranoia e a conveniência de uso.
É melhor deixar o parâmetro PIM como padrão, para que ao carregar o sistema operacional não seja necessário inserir os valores exatos de iterações toda vez. O VeraCrypt aplica um enorme número de iterações para criar um 'hash realmente lento'. Um ataque a essa 'criptoarmadilha' pelo método de força bruta/tabelas arco-íris só faz sentido com uma 'frase de senha' curta e uma lista de charset pessoal da vítima. O preço pela robustez da senha é o atraso ao inserir a senha correta ao carregar o sistema operacional. (montagem de volumes do VeraCrypt em GNU/Linux é significativamente mais rápida).
Software livre para realizar ataque de força bruta (extração da frase de senha do cabeçalho do disco VeraCrypt/LUKS) Hashcat. John the Ripper não consegue 'quebrar o Veracrypt', e ao trabalhar com LUKS não compreende a criptografia Twofish.
Devido à resistência criptográfica dos algoritmos de criptografia, os criptomantes indomáveis desenvolvem software com outro vetor de ataque. Por exemplo, extração de metadados/chaves da RAM (ataque com bot no frio/acesso direto à memória), existe software livre e não livre especializado para esses fins.
Após configurar/gerar 'metadados únicos' da partição ativa criptografada, o VeraCrypt solicitará reiniciar o PC e testar o funcionamento do seu carregador. Após o reboot/início do Windows, o VeraCrypt deverá ser carregado em modo de espera, restando apenas confirmar o processo de criptografia — Y.
Na etapa final da criptografia do sistema, o VeraCrypt irá propor criar um backup do cabeçalho da partição criptografada ativa como "veracrypt rescue disk.iso" — isso deve ser feito obrigatoriamente — neste software, tal operação é um requisito (no LUKS, como requisito — infelizmente, isso foi omitido, mas ressaltado na documentação). O disco de resgate será útil para todos, e alguns poderão precisar dele mais de uma vez. A perda (sobrescrever cabeçalho/MBR) do backup do cabeçalho privará permanentemente o acesso à partição descriptografada com o Windows OS.
A4. Criando um disco/USB de resgate VeraCryptPor padrão, VeraCrypt propõe gravar "metadados ~2-3MB" em um CD, mas nem todas as pessoas possuem discos ou unidades de DVD-ROM, e criar um pen drive inicializável "VeraCrypt Rescue disk" será uma surpresa técnica para alguns: Rufus/GUIdd-ROSA ImageWriter e outros softwares similares — não conseguirão executar a tarefa, pois além de copiar os metadados deslocados para o pen drive, é necessário realizar um copy/paste fora do sistema de arquivos do dispositivo USB, em resumo, copiar corretamente o MBR/trilha para o drive USB. A partir do OS GNU/Linux, você pode criar um pen drive inicializável usando a ferramenta "dd", consultando esta tabela.

Criar um disco de resgate no ambiente Windows é diferente. O desenvolvedor do VeraCrypt não incluiu uma solução para essa tarefa na documentação oficial sobre "disco de resgate", mas propôs uma solução de outra forma: disponibilizou um software adicional para criar um "usb rescue disk" em acesso livre, em seu fórum VeraCrypt. O arquivador desse software para Windows – "criação de usb veracrypt rescue disk". Após salvar o rescue disk.iso, começará o processo de criptografia em bloco da partição ativa. Durante a criptografia, o funcionamento do OS não é interrompido e não é necessária a reinicialização do PC. Ao final da operação de criptografia, a partição ativa fica completamente criptografada e pode ser utilizada. Se ao iniciar o PC o carregador do VeraCrypt não aparece e a operação de recuperação do cabeçalho não ajuda, verifique a flag "boot", que deve estar ativada na partição onde o Windows está presente (independentemente da criptografia e de outros sistemas operacionais, veja a tabela nº 1).
Assim, a descrição da criptografia em bloco do sistema com o Windows é encerrada.
[B] LUKS. Criptografia GNU/Linux (~Debian) do sistema operativo instalado. Algoritmo e Passos
Para criptografar a distribuição Debian/derivada instalada, é necessário mapear a partição preparada para um dispositivo de bloco virtual, transferir para o disco GNU/Linux mapeado e instalar/configurar o GRUB2. Se você não tem um servidor em estado bruto e valoriza seu tempo, é melhor usar a interface gráfica (GUI), enquanto a maioria dos comandos de terminal descritos abaixo devem ser inseridos no "modo Chuck Norris."
B1. Inicializando o PC com live usb GNU/Linux
Realizar um teste de criptografia de desempenho do hardware
lscpu && cryptsetup benchmark 
Se você é o feliz proprietário de uma máquina poderosa com suporte de hardware para AES, os números serão parecidos com a parte direita do terminal; se você for sortudo, mas com hardware antigo, aparecerão na parte esquerda.
B2. Particionamento do disco. Montagem/formatação do sistema de arquivos lógico HDD em Ext4 (Gparted)
B2.1. Criando o cabeçalho criptografado da partição sda7A descrição dos nomes das partições será feita aqui e adiante conforme a tabela de partições que apresentei anteriormente. De acordo com o seu particionamento, você deve inserir seus próprios nomes de partições.
Mapeamento da criptografia do disco lógico (/dev/sda7 > /dev/mapper/sda7_crypt).
#Простое создание «LUKS-AES-XTS раздела»
cryptsetup -v -y luksFormat /dev/sda7Opções:
* luksFormat - inicialização do cabeçalho LUKS;
* -y - frase de senha (não chave/arquivo);
* -v - verbosidade (saída de informações no terminal);
* /dev/sda7 - seu disco lógico da partição estendida (para onde o GNU/Linux será transferido/criptografado).
Por padrão, o algoritmo de criptografia <LUKS1: aes-xts-plain64, Chave: 256 bits, Hash do cabeçalho LUKS: sha256, RNG: /dev/urandom> (depende da versão do cryptsetup).
#Проверка default-алгоритма шифрования
cryptsetup --help #самая последняя строка в выводе терминала.Na ausência de suporte de hardware para AES na CPU, a melhor escolha será criar uma partição estendida "LUKS-Twofish-XTS".
B2.2. Criação estendida da partição "LUKS-Twofish-XTS"
cryptsetup luksFormat /dev/sda7 -v -y -c twofish-xts-plain64 -s 512 -h sha512 -i 1500 --use-urandom Opções:
* luksFormat - inicialização do cabeçalho LUKS;
* /dev/sda7 seu futuro disco lógico criptografado;
* -v verbosidade;
* -y frase de senha;
* -c seleção do algoritmo de criptografia de dados;
* -s tamanho da chave de criptografia;
* -h algoritmo de hashing/função criptográfica utilizado pelo gerador de números aleatórios (—use-urandom) para gerar uma chave de criptografia/descriptografia única para o cabeçalho da unidade lógica, a chave secundária do cabeçalho (XTS); chave mestre única armazenada no cabeçalho criptografado do disco, chave XTS secundária, todos esses metadados e o subprograma de criptografia, que, utilizando a chave mestre e a chave XTS secundária, criptografam/descriptografam quaisquer dados na partição. (exceto o cabeçalho da partição) são armazenados em ~3MB na partição selecionada do disco rígido.
* -i iterações em milissegundos, em vez de "quantidade" (atraso de tempo ao processar a frase de senha, afeta o carregamento do sistema operacional e a resistência criptográfica das chaves). Para manter o equilíbrio de resistência criptográfica para uma senha simples como "russian", é necessário aumentar o valor -(i), enquanto para uma senha complexa como "?8dƱob/øfh" o valor pode ser diminuído.
* —use-urandom gerador de números aleatórios, gera chaves e sal.
Após a associação da partição sda7 > sda7_crypt (a operação é rápida, pois um cabeçalho criptografado com metadados de ~3MB é criado e é isso), é necessário formatar e montar o sistema de arquivos sda7_crypt.
B2.3. Associação
cryptsetup open /dev/sda7 sda7_crypt
# A execução deste comando solicita a entrada da frase de senha secreta.
opções:
* open - associar a partição "com o nome";
* /dev/sda7 - disco lógico;
* sda7_crypt - nome da associação usado para montar a partição criptografada ou inicializá-la durante o carregamento do sistema operacional.
B2.4. Formatação do sistema de arquivos sda7_crypt em ext4. Montando o disco no sistema operacional(Nota: com o Gparted, não será mais possível trabalhar com a partição criptografada)
#форматирование блочного шифрованного устройства
mkfs.ext4 -v -L DebSHIFR /dev/mapper/sda7_crypt
opções:
* -v - verbosidade;
* -L - etiqueta do disco (que aparece no explorador entre outros discos).
Em seguida, deve-se montar o dispositivo de bloco virtual criptografado /dev/sda7_crypt no sistema
mount /dev/mapper/sda7_crypt /mntTrabalhar com arquivos na pasta /mnt levará à criptografia/descriptografia automática dos dados em sda7.
É mais conveniente associar e montar a partição no explorador (nautilus/caja GUI), a partição já estará na lista de escolha de discos, basta inserir a frase de senha para abrir/descriptografar o disco. O nome associado será selecionado automaticamente e não será "sda7_crypt", mas algo como /dev/mapper/Luks-xx-xx…
B2.5. Backup do cabeçalho do disco (metadados ~3MB)Um dos mais importantes operações que precisam ser feitas sem demora — backup do cabeçalho "sda7_crypt". Se o cabeçalho for sobrescrito/danificado (por exemplo, instalando o GRUB2 na partição sda7 e assim por diante), os dados criptografados serão perdidos permanentemente sem qualquer possibilidade de recuperação, pois não será possível regenerar as mesmas chaves, as chaves são geradas de forma única.
#Бэкап заголовка раздела
cryptsetup luksHeaderBackup --header-backup-file ~/Бэкап_DebSHIFR /dev/sda7
#Восстановление заголовка раздела
cryptsetup luksHeaderRestore --header-backup-file <file> <device> opções:
* luksHeaderBackup —header-backup-file comando de backup;
* luksHeaderRestore —header-backup-file comando de restauração;
* ~/Backup_DebSHIFR — arquivo de backup;
* /dev/sda7 -partição cujo backup do cabeçalho criptografado do disco precisa ser salvo.
Nesta etapa está concluída.
B3. Transferência do sistema operacional GNU/Linux (sda4) para a partição criptografada (sda7)
Criamos a pasta /mnt2 (Nota — ainda estamos trabalhando com o live usb, na ponto /mnt está montado sda7_crypt), e montamos nosso GNU/Linux em /mnt2, que precisa ser criptografado.
mkdir /mnt2
mount /dev/sda4 /mnt2
Realizamos a transferência correta do sistema usando o software Rsync
rsync -avlxhHX --progress /mnt2/ /mntAs opções do Rsync estão descritas na p.E1.
Em seguida, é necessário realizar a desfragmentação da partição do disco lógico
e4defrag -c /mnt/ #após a verificação, e4defrag indicará que o grau de desfragmentação da partição~"0", isso é um equívoco que pode custar uma perda significativa de desempenho!
e4defrag /mnt/ #realizamos a desfragmentação do GNU/Linux criptografado Tome como regra: faça e4defrag no GNU/Linux criptografado de tempos em tempos se você tiver HDD.
A transferência e sincronização [GNU/Linux > GNU/Linux-criptografado] nesta etapa estão concluídas.
B4. Configuração do GNU/Linux na partição criptografada sda7
Após a transferência bem-sucedida do sistema operacional /dev/sda4 > /dev/sda7, é necessário entrar no GNU/Linux na partição criptografada e realizar a configuração adicional (sem reiniciar o computador) relativa ao sistema criptografado. Ou seja, estar no live usb, mas executar os comandos "em relação à raiz do sistema operacional criptografado". Simular uma situação como essa será "chroot". Para obter informações rapidamente sobre qual sistema você está trabalhando atualmente (se criptografado ou não, já que os dados em sda4 e sda7 estão sincronizados), dessincronize os sistemas. Crie nos diretórios raiz (sda4/sda7_crypt) arquivos-vazios marcadores, por exemplo, /mnt/sistemaCriptografado e /mnt2/sistemaDescriptografado. Uma verificação rápida de qual sistema você está (incluindo para o futuro):
ls /B4.1. «Simulação de acesso ao sistema operacional criptografado»
mount --bind /dev /mnt/dev
mount --bind /proc /mnt/proc
mount --bind /sys /mnt/sys
chroot /mnt
B4.2. Verificação de que a operação está sendo feita em relação ao sistema criptografado
ls /mnt
#e vemos o arquivo "/sistemaCriptografado"
history
#no output do terminal deve aparecer o histórico de comandos su do sistema operacional ativo.B4.3. Criação/configuração de swap criptografado, edição do crypttab/fstabComo o arquivo de swap é formatado a cada inicialização do sistema operacional, não faz sentido criar e mapear swap com a unidade lógica agora, e digitar os comandos como em p.B2.2. Para o swap, a cada inicialização serão geradas automaticamente suas chaves de criptografia temporárias. Ciclo de vida das chaves do swap: desmontagem/desativação da partição swap (+limpeza da RAM); ou reinicialização do sistema operacional. Configuração do swap, abrimos o arquivo responsável pela configuração de dispositivos de blocos criptografados (análogo ao arquivo fstab, mas responsável pelo criptográfico).
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
Opções
* swap - nome mapeado durante a criptografia /dev/mapper/swap.
* /dev/sda8 - utilize sua unidade lógica para swap.
* /dev/urandom - gerador de chaves aleatórias de criptografia para swap (com cada nova inicialização do sistema operacional — novos chaves criadas). O gerador /dev/urandom é menos aleatório do que /dev/random, já que /dev/random é utilizado em circunstâncias paranoicas perigosas. Durante a inicialização, /dev/random retarda a inicialização por alguns ± minutos (veja systemd-analyze).
* swap,cipher=twofish-xts-plain64,size=512,hash=sha512: - a partição sabe que é swap e é formatada "adequadamente"; algoritmo de criptografia.
#Открываем и правим 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 criptografado alternativo
Se por algum motivo você não quiser dedicar toda uma partição para o arquivo de swap, pode seguir um caminho alternativo e melhor: criar um arquivo de swap dentro de um arquivo em uma partição criptografada com o sistema operacional.
fallocate -l 3G /swap #criação de um arquivo de 3GB (operação quase instantânea)
chmod 600 /swap #configuração de permissões
mkswap /swap #cria um arquivo de swap a partir do arquivo
swapon /swap #ativamos nosso swap
free -m #verificamos se o arquivo de swap está ativado e funcionando
printf "/swap none swap sw 0 0" >> /etc/fstab #se necessário, após reinicialização o swap será permanenteConfiguração da partição swap concluída.
B4.4. Configuração do GNU/Linux criptografado (edição dos arquivos crypttab/fstab)O arquivo /etc/crypttab, como mencionado anteriormente, descreve dispositivos de bloco criptografados que são configurados durante a inicialização do sistema.
#правим /etc/crypttab
nano /etc/crypttab
se você mapeou a partição sda7>sda7_crypt como em p.B2.1
# «target name» «source device» «key file» «options»
sda7_crypt UUID=81048598-5bb9-4a53-af92-f3f9e709e2f2 none luks
se você mapeou a partição sda7>sda7_crypt como em 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
se você mapeou a partição sda7>sda7_crypt como em p.B2.1 ou B2.2, mas não quer inserir a senha novamente para desbloquear e iniciar o sistema operacional, em vez da senha você pode usar uma chave secreta / arquivo aleatório
# «target name» «source device» «key file» «options»
sda7_crypt UUID=81048598-5bb9-4a53-af92-f3f9e709e2f2 /etc/skey luks
Descrição
* none - indica que ao iniciar o sistema operacional, é necessário inserir uma frase secreta para desbloquear a raiz.
* UUID - identificador da partição. Para saber seu identificador, digite no terminal (lembrete, durante todo este tempo e daqui para frente, você está operando no terminal em um ambiente chroot, e não em outro terminal live usb).
fdisk -l # verificar todas as partições
blkid # deve ser algo semelhante
/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»
essa linha é visível ao solicitar blkid no terminal live usb com sda7_crypt montado).
Você deve pegar o UUID exatamente do seu sdaX (não sdaX_crypt!, o UUID sdaX_crypt será automaticamente removido ao gerar o arquivo de configuração grub.cfg).
* cipher=twofish-xts-plain64,size=512,hash=sha512 - criptografia luks em modo avançado.
* /etc/skey - arquivo-chave secreto que é inserido automaticamente para desbloquear a inicialização do sistema operacional (em vez de inserir a terceira senha). O arquivo pode ser qualquer um até 8MB, mas os dados serão lidos <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
Vai parecer algo assim:
(faça você mesmo e veja).
cryptsetup luksKillSlot /dev/sda7 7 # remoção da chave/senha do 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
opção
* /dev/mapper/sda7_crypt - nome do mapeamento sda7>sda7_crypt, que está especificado no arquivo /etc/crypttab.
A configuração de crypttab/fstab foi concluída.
B4.5. Edição dos arquivos de configuração. Ponto chaveB4.5.1. Edição da configuração /etc/initramfs-tools/conf.d/resume
#Если у вас ранее был активирован swap раздел, отключите его.
nano /etc/initramfs-tools/conf.d/resume
e comente (se existir) a linha «#» «resume». O arquivo deve estar completamente vazio.
B4.5.2. Edição da configuração /etc/initramfs-tools/conf.d/cryptsetup
nano /etc/initramfs-tools/conf.d/cryptsetupdeve corresponder
# /etc/initramfs-tools/conf.d/cryptsetup
CRYPTSETUP=yes
export CRYPTSETUP
B4.5.3. Edição da configuração /etc/default/grub (este arquivo de configuração é responsável pela capacidade de gerar grub.cfg ao trabalhar com /boot criptografado)
nano /etc/default/grub adicionamos a linha «GRUB_ENABLE_CRYPTODISK=y»
o valor ‘y’, grub-mkconfig e grub-install verificarão a presença de discos criptografados e gerarão comandos adicionais necessários para acessá-los durante a inicialização (insmod-ы ).
deve ter uma aparência semelhante
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. Edição do arquivo de configuração /etc/cryptsetup-initramfs/conf-hook
nano /etc/cryptsetup-initramfs/conf-hook verifique se a linha está comentada .
No futuro (e mesmo já agora, esse parâmetro não terá importância, mas às vezes impede a atualização da imagem initrd.img).
B4.5.5. Edição do arquivo de configuração /etc/cryptsetup-initramfs/conf-hook
nano /etc/cryptsetup-initramfs/conf-hookadicionamos
KEYFILE_PATTERN="/etc/skey"
UMASK=0077
Isto embalará a chave secreta "skey" em initrd.img, a chave é necessária para desbloquear a raiz durante o boot do OS (se não quiser digitar a senha novamente, a chave "skey" é inserida automaticamente).
B4.6. Atualizando /boot/initrd.img [versão]Para embalar a chave secreta em initrd.img e aplicar correções no cryptsetup, atualizamos a imagem
update-initramfs -u -k all ao atualizar initrd.img (como dizem "Possível, mas não é certo") aparecerão avisos relacionados ao cryptsetup, ou, por exemplo, notificações sobre a perda de módulos Nvidia — isso é normal. Após a atualização do arquivo, verifique se ele realmente foi atualizado pelo horário (relativo ao ambiente chroot./boot/initrd.img). Atenção! antes de [update-initramfs -u -k all] certifique-se de que o cryptsetup open /dev/sda7 sda7_crypt — esse é o nome que deve aparecer em /etc/crypttab, caso contrário, após reiniciar aparecerá o erro busybox)
Neste passo, a configuração dos arquivos de configuração está concluída.
[C] Instalação e configuração do GRUB2/Proteção
C1. Se necessário, formate a partição dedicada para o carregador de inicialização (é suficiente que a partição tenha pelo menos 20MB)
mkfs.ext4 -v -L GRUB2 /dev/sda6C2. Montando /dev/sda6 em /mntComo estamos trabalhando em chroot, não haverá o diretório /mnt2 na raiz, e a pasta /mnt — estará vazia.
montando a partição GRUB2
mount /dev/sda6 /mntSe você tem uma versão antiga do GRUB2, o diretório /mnt/boot/grub/i-386-pc (pode haver outra plataforma, por exemplo, não "i386-pc") não contém módulos criptográficos (em resumo, a pasta deve conter módulos incluindo estes .mod: cryptodisk; luks; gcry_twofish; gcry_sha512; signature_test.mod), neste caso, o GRUB2 precisa ser reinstalado.
apt-get update
apt-get install grub2
Importante! Durante a atualização do pacote GRUB2 a partir do repositório, na pergunta "onde instalar" o carregador, é necessário recusar a instalação (razão — tentativa de instalação do GRUB2 – no "MBR" ou em live usb)Caso contrário, você danificará o cabeçalho/carregador do VeraCrypt. Após atualizar os pacotes do GRUB2 e cancelar a instalação, é necessário instalar o carregador manualmente no disco lógico, e não no 'MBR'. Se a versão do GRUB2 em seu repositório estiver desatualizada, tente a partir do site oficial – não verificado (funcionou com carregadores novos GRUB 2.02 ~BetaX).
C3. Instalação do GRUB2 na partição estendida [sda6]A partição [p.C.2] deve estar montada
grub-install --force --root-directory=/mnt /dev/sda6 opções
* --force - instale o carregador, ignorando todos os avisos que quase sempre existem e bloqueiam a instalação (flag obrigatória).
* --root-directory - definindo o diretório <boot/grub> na raiz de sda6.
* /dev/sda6 - sua partição sdaX (não esqueça do <espaço> entre /mnt /dev/sda6).
C4. Criando o arquivo de configuração [grub.cfg]Esqueça o comando 'update-grub2', e use o comando completo para gerar o arquivo de configuração
grub-mkconfig -o /mnt/boot/grub/grub.cfg depois que a geração/atualização do arquivo grub.cfg estiver concluída, deverão aparecer linhas no terminal com os sistemas operacionais encontrados no disco ('grub-mkconfig' pode encontrar e captar um sistema operacional a partir de um live usb, se você tiver um pen drive de multiboot com Windows 10 e vários distros 'live' — isso é normal). Se o terminal estiver 'vazio', o arquivo 'grub.cfg' não foi gerado, este é exatamente o caso em que há bugs no GRUB (e provavelmente o carregador é da branch de teste do repositório), reinstale o GRUB2 a partir de fontes confiáveis.
A instalação e configuração 'simples' do GRUB2 foi concluída.
C5. Teste a prova do sistema operacional GNU/Linux criptografadoConclua corretamente a criptomissão. Saia cuidadosamente do GNU/Linux criptografado (saindo do ambiente chroot).
umount -a # desmonta todas as partições montadas do GNU/Linux criptografado
Ctrl+d # sai do ambiente chroot
umount /mnt/dev
umount /mnt/proc
umount /mnt/sys
umount -a # desmonta todas as partições no live usb
reboot Após reiniciar, o carregador VeraCrypt deve aparecer.

* A entrada da senha para a partição ativa começará a carregar o sistema operacional Windows.
* Pressionar a tecla 'Esc' passará o controle para o GRUB2; ao selecionar o GNU/Linux criptografado – será necessário a senha (sda7_crypt) para desbloquear /boot/initrd.img (se o grub2 reportar uuid 'não encontrado' — isso é um problema do carregador grub2, ele deve ser reinstalado, por exemplo, a partir da branch de teste/estável).

*Dependendo de como você configurou o sistema (veja a seção B4.4/4.5), após a entrada correta da senha para desbloquear a imagem /boot/initrd.img, será necessária a senha para carregar o kernel/root do sistema operacional ou a chave secreta "skey" será automaticamente inserida, eliminando a necessidade de reinserção da frase da senha.

(captura de tela "inserção automática da chave secreta").
*Em seguida, ocorrerá o processo familiar de inicialização do GNU/Linux com autenticação do usuário.

*Após a autorização do usuário e o login no sistema operacional, é necessário atualizar novamente o /boot/initrd.img. (veja V4.6).
update-initramfs -u -k allE em caso de linhas extras no menu GRUB2 (a partir do sistema operacional com live usb) remova-as
mount /dev/sda6 /mnt
grub-mkconfig -o /mnt/boot/grub/grub.cfg
Resumo sobre a criptografia de sistema do GNU/Linux:
- GNU/Linux está totalmente criptografado, incluindo /boot/kernel e initrd;
- a chave secreta está embutida no initrd.img;
- o esquema atual de autenticação (entrada da senha para desbloquear initrd; senha/chave para carregar o sistema operacional; senha de autenticação da conta Linux).
A «configuração simples do GRUB2» de criptografia de partição de bloco foi concluída.
C6. Configuração avançada do GRUB2. Proteção do carregador com assinatura digital + proteção com autenticação.GNU/Linux está totalmente criptografado, mas o carregador não pode ser criptografado – essa condição é ditada pela BIOS. Por esse motivo, o encadeamento criptografado de inicialização do GRUB2 é impossível, mas uma inicialização encadeada simples está disponível, do ponto de vista da proteção – não é necessário [veja a seção F].
Para o GRUB2 "vulnerável", os desenvolvedores implementaram um algoritmo de proteção do carregador com "assinatura/autenticação".
- Ao proteger o carregador com "sua assinatura digital", qualquer modificação externa dos arquivos ou a tentativa de carregar módulos adicionais neste carregador resultará em bloqueio do processo de inicialização.
- Ao proteger o carregador com autenticação, para escolher a inicialização de qualquer distribuição ou inserir comandos adicionais no CLI, será necessário inserir o login e a senha do superusuário-GRUB2.
C6.1. Proteção do carregador com autenticação.Verifique se você está trabalhando no terminal em um sistema operacional criptografado.
ls / #para descobrir o arquivo marcador.crie uma senha de superusuário para autenticação no GRUB2.
grub-mkpasswd-pbkdf2 #insira/reinsira a senha do superusuário. Obtenha o hash da senha. Algo parecido com isso.
grub.pbkdf2.sha512.10000.DE10E42B01BB6FEEE46250FC5F9C3756894A8476A7F7661A9FFE9D6CC4D0A168898B98C34EBA210F46FC10985CE28277D0563F74E108FCE3ACBD52B26F8BA04D.27625A4D30E4F1044962D3DD1C2E493EF511C01366909767C3AF9A005E81F4BFC33372B9C041BE9BA904D7C6BB141DE48722ED17D2DF9C560170821F033BCFD8
montando a partição GRUB
mount /dev/sda6 /mnt editando a configuração
nano -$ /mnt/boot/grub/grub.cfg verifique no arquivo se não existem marcas em "grub.cfg" (como "—unrestricted" "—user")
adicione no final (antes da linha ### END /etc/grub.d/41_custom ###)
"set superusers='root'"
password_pbkdf2 root hash.
Deve ser algo assim
# 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 ###
#
Se você frequentemente usa o comando "grub-mkconfig -o /mnt/boot/grub/grub.cfg" e não quer fazer alterações em grub.cfg a cada vez, adicione as linhas acima (login/senha) no script de usuário do GRUB no final
nano /etc/grub.d/41_custom cat << EOF
set superusers='root'
password_pbkdf2 root grub.pbkdf2.sha512.10000.DE10E42B01BB6FEEE46250FC5F9C3756894A8476A7F7661A9FFE9D6CC4D0A168898B98C34EBA210F46FC10985CE28277D0563F74E108FCE3ACBD52B26F8BA04D.27625A4D30E4F1044962D3DD1C2E493EF511C01366909767C3AF9A005E81F4BFC33372B9C041BE9BA904D7C6BB141DE48722ED17D2DF9C560170821F033BCFD8
EOF
Ao gerar a configuração "grub-mkconfig -o /mnt/boot/grub/grub.cfg", as linhas responsáveis pela autenticação serão adicionadas automaticamente a grub.cfg.
Nesta etapa, a configuração de autenticação do GRUB2 está concluída.
6.2. Protegendo o carregador com assinatura digitalPressupõe-se que você já possua sua chave PGP de criptografia (ou crie uma chave assim). O sistema deve ter software criptográfico instalado: gnuPG; kleopatra/GPA; Seahorse. O software crypto tornará sua vida muito mais fácil em todos esses casos. Seahorse - versão estável do pacote 3.14.0 (versões superiores, como V3.20 - são incompletas e têm bugs significativos).
A chave PGP deve ser gerada/iniciada/adicionada apenas no ambiente su!
Gerar uma chave de criptografia pessoal
gpg --gen-keyExportar sua chave
gpg --export -o ~/perskeyMonte o disco lógico no sistema operacional se ainda não estiver montado
mount /dev/sda6 /mnt #sda6 - partição GRUB2limpe a partição GRUB2
rm -rf /mnt/Instale o GRUB2 em sda6, colocando sua chave pessoal na imagem principal do GRUB "core.img"
grub-install --force --modules="gcry_sha256 gcry_sha512 signature_test gcry_dsa gcry_rsa" -k ~/perskey --root-directory=/mnt /dev/sda6 opções
* --force - instala o carregador, ignorando todos os avisos que sempre existem (flag obrigatória).
* --modules="gcry_sha256 gcry_sha512 signature_test gcry_dsa gcry_rsa" - instrui o GRUB2 a carregar os módulos necessários ao inicializar o PC.
* -k ~/perskey - caminho para a "chave PGP" (depois de embalar a chave na imagem, ela pode ser excluída).
* —root-directory -instalação do diretório boot na raiz sda6
/dev/sda6 -ваш sdaХ раздел.
Gerando/atualizando grub.cfg
grub-mkconfig -o /mnt/boot/grub/grub.cfgAdicione ao final do arquivo «grub.cfg» a linha «trust /boot/grub/perskey» (forçar o uso da chave pgp.) Como instalamos o GRUB2 com um conjunto de módulos, incluindo o módulo de assinatura «signature_test.mod», isso elimina a necessidade de adicionar ao config comandos como «set check_signatures=enforce».
Deve parecer algo assim (linhas finais no arquivo 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 ###
#
O caminho para «/boot/grub/perskey» não precisa ser especificado para uma partição de disco específica, como hd0,6, pois para o carregador a «raiz» é o caminho padrão da partição onde o GRUB2 está instalado (veja set rot=..).
Assinando o GRUB2 (todos os arquivos em todos os diretórios /GRUB) com sua chave «perskey».
Uma solução simples para assinar (para o gerenciador de arquivos nautilus/caja): instale do repositório a extensão «seahorse» para o gerenciador de arquivos. A chave deve ter sido adicionada ao ambiente su.
Abra o gerenciador de arquivos via sudo «/mnt/boot» – botão direito – assinar. Na tela isso se parece com

A própria chave «/mnt/boot/grub/perskey» (copiar para o diretório grub) também deve ser assinado com sua própria assinatura. Verifique se no diretório/subdiretórios as assinaturas dos arquivos [*.sig] apareceram.
Assinamos «/boot» pelo método descrito acima (nossos kernel, initrd). Se seu tempo vale algo, esse método evita ter que escrever um script bash para assinar «muitos arquivos».
Para remover todas as assinaturas do carregador (se algo der errado)
rm -f $(find /mnt/boot/grub -type f -name '*.sig')Para não assinar o carregador após a atualização do sistema, congelamos todos os pacotes de atualização relacionados ao GRUB2.
apt-mark hold grub-common grub-pc grub-pc-bin grub2 grub2-commonNeste passo a configuração avançada do GRUB2 é concluída.
C6.3. Teste de proof-test do carregador GRUB2, protegido por assinatura digital e autenticaçãoGRUB2. Ao selecionar qualquer distribuição GNU/Linux ou entrar no CLI (linha de comando) será necessária a autorização do superusuário. Após inserir o login/senha corretos, será solicitado a senha do initrd

Captura de tela, autenticação bem-sucedida do superusuário do GRUB2.
Se qualquer um dos arquivos GRUB2 for adulterado/modificado no grub.cfg, ou se um arquivo/assinação for excluído, ou um módulo malicioso for carregado, uma advertência correspondente aparecerá. O carregamento do GRUB2 será interrompido.

Captura de tela, tentativa de interferir no GRUB2 "de fora".
Durante a inicialização "normal" "sem intervenção", o status de saída do sistema é "0". Portanto, não se sabe se a proteção está funcionando ou não. (ou seja, "com proteção de inicialização usando assinatura ou sem ela" o status normal é o mesmo "0" — isso é ruim).
Como verificar a proteção por assinatura digital?
Maneira inconveniente de verificar: falsificar/remover o módulo GRUB2 usado, por exemplo, removendo a assinatura luks.mod.sig e obtendo um erro.
Maneira correta: entrar no CLI do carregador e digitar o comando
trust_list A resposta deve retornar o hash "perskey", se o status for "0", significa que a proteção por assinatura não está funcionando, verifique novamente 7.2.
Neste passo, a configuração avançada "Proteção do GRUB2 por assinatura digital e autenticação" está completa.
S7 Método alternativo de proteção do carregador GRUB2 usando hashing.O método descrito acima "Proteção do carregador de CPU/Autenticação" é um clássico. Devido à imperfeição do GRUB2, em condições paranoicas, ele é suscetível a um ataque real, que explicarei abaixo na seção [F]. Além disso, após a atualização do sistema operacional/núcleo, é necessário reinscrever o carregador.
Proteção do carregador GRUB2 utilizando hashing.
Vantagens em relação ao clássico:
- Nível de confiabilidade mais alto. (o hashing/verificação ocorre apenas a partir de um recurso local criptografado. Todo o espaço dedicado ao GRUB2 é monitorado para quaisquer alterações, enquanto o restante é criptografado; no esquema clássico de proteção do carregador de CPU/Autenticação, apenas os arquivos são monitorados, mas não o espaço livre, onde "algo maligno" pode ser adicionado).
- Registro criptografado. (o esquema adiciona um log criptografado legível).
- Velocidade (a proteção/verificação de toda a partição dedicada ao GRUB2 ocorre quase instantaneamente).
- Automatização de todos os processos criptográficos.
Desvantagens em relação ao clássico.
- Falsificação de assinatura. (teoricamente, pode haver a possibilidade de uma colisão na função hash especificada).
- Maior nível de complexidade. (em comparação com o clássico, exige um pouco mais de habilidades no sistema operacional GNU/Linux).
Como funciona a ideia de hashing no GRUB2/partição.
A seção GRUB2 é ‘assinada’, durante o boot do SO, é feita uma verificação da integridade da seção de boot, com a subsequente logagem em um ambiente seguro (criptografado). Em caso de comprometimento do bootloader ou de sua seção, além do log de invasão, é acionado um
negócio.
Quatro vezes ao dia ocorre uma verificação similar, que não sobrecarrega os recursos do sistema.
Com o comando «-$ verificação_GRUB» é realizada uma verificação instantânea a qualquer momento sem logagem, mas com a saída de informações no CLI.
Com o comando «-$ sudo assinatura_GRUB» é feita uma re-assinatura instantânea do GRUB2/da seção e sua logagem atualizada (necessário após a atualização do SO/boot), e a vida continua.
Implementação do método de hashing do bootloader e sua seção
0) Vamos assinar o bootloader/seção GRUB, previamente montando-o em /media/username
-$ hashdeep -c md5 -r /media/username/GRUB > /podpis.txt1) Criamos um script sem extensão na raiz do SO criptografado ~ /podpis, aplicamos a ele as permissões necessárias 744 de segurança e proteção contra ‘idiotas’.
Preenchemos seu conteúdo
#!/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'
fiExecutamos o script a partir de su, ocorrerá uma verificação de hashing da seção GRUB e seu bootloader, salve o log.
Vamos criar ou copiar, por exemplo, ‘um arquivo malicioso’ [virus.mod] para a seção GRUB2 e executar uma verificação/teste temporário:
-$ hashdeep -vvv -a -k '/podpis.txt' -r '/media/username/GRUBNo CLI devemos ver a invasão em nossa ‘cidadela’#Урезанный лог в CLI
Qua jan 2 11::41 MSK 2020
/media/username/GRUB/boot/grub/virus.mod: Moved from /media/username/GRUB/1nononoshifr
/media/username/GRUB/boot/grub/i386-pc/mda_text.mod: Ok
/media/username/GRUB/boot/grub/grub.cfg: Ok
hashdeep: Audit failed
Input files examined: 0
Known files expecting: 0
Files matched: 325
Files partially matched: 0
Files moved: 1
New files found: 0
Known files not found: 0 #как видим появилось «Files moved: 1 и Audit failed» означает, что проверка не прошла.
Devido às características da seção testada, em vez de ‘New files found’ > ‘Files moved’
2) Colocamos o gif aqui > ~/warning.gif, definimos as permissões 744.
3) Configuramos o fstab para montagem automática da seção GRUB durante a inicialização
-$ sudo nano /etc/fstabLABEL=GRUB /media/username/GRUB ext4 defaults 0 0
4) Realizamos a rotação do log
-$ sudo nano /etc/logrotate.d/podpis /var/log/podpis.txt {
daily
rotate 50
size 5M
dateext
compress
delaycompress
olddir /var/log/old
}/var/log/vtorjenie.txt {
monthly
rotate 5
size 5M
dateext
olddir /var/log/old
}
5) Adicionamos uma tarefa ao cron
-$ sudo crontab -e‘/podpis’
0 */6 * * * ‘/podpis
6) Criamos aliases permanentes
-$ sudo su
-$ echo "alias assinatura_GRUB='hashdeep -c md5 -r /media/username/GRUB > /podpis.txt'" >> /root/.bashrc && bash
-$ echo "alias verificação_GRUB='hashdeep -vvv -a -k '/podpis.txt' -r /media/username/GRUB'" >> .bashrc && bash
Após a atualização do SO -$ apt-get upgrade reassinar nossa seção GRUB
-$ assinatura_GRUB
Nesta etapa, a proteção por hash da partição GRUB foi concluída.
[D] Limpeza — destruição de dados não criptografados
Elimine seus arquivos pessoais de forma tão completa que "até Deus não consegue lê-los", segundo o representante da Carolina do Sul, Trey Gowdy.
Como costuma haver diferentes "mitos e ", sobre a recuperação de dados após serem excluídos do disco rígido. Se você acredita em cybermisticismo, ou é um membro da comunidade Dr. Web e nunca tentou recuperar dados após sua exclusão/substituição (por exemplo, recuperação usando R-studio), então o método proposto provavelmente não será adequado, use o que for mais próximo de você.
Após a migração bem-sucedida do GNU/Linux para a partição criptografada, a cópia antiga deve ser excluída sem possibilidade de recuperação de dados. O método universal de limpeza: software para Windows/Linux, um software GUI livre .
Rápido formate a partição, cujos dados precisam ser destruídos (usando Gparted), inicie o BleachBit, selecione "Limpeza de espaço livre" – escolha a partição (seu sdaX com a cópia anterior do GNU/Linux), o processo de limpeza começará. O BleachBit limpa o disco em uma única passada — isso é o que "precisamos", mas! isso só funciona na teoria, se você formatou o disco e limpou no software BB v2.0.
Atenção! O BB limpa o disco, deixando metadados, os nomes dos arquivos permanecem ao eliminar dados (Ccleaner — não deixa metadados).
E o mito sobre a possibilidade de recuperação de dados não é exatamente um mito.Bleachbit V2.0-2 era um pacote instável do Debian (e qualquer outro software semelhante: sfill; wipe-Nautilus - também foram notados neste trabalho sujo) tinha na verdade um erro crítico: a função "limpeza de espaço livre" não funciona corretamente em HDDs/pen drives (ntfs/ext4). Software desse tipo, ao limpar espaço livre, não regrava todo o disco, como muitos usuários pensam. E alguns (muitos) dados excluídos pelo sistema operacional/software são considerados não excluídos/usuários, e ao limpar o "ESP" esses arquivos são ignorados. O problema é que após uma limpeza prolongada do disco "arquivos excluídos" podem ser recuperados mesmo após 3+ passagens de limpeza do disco.
No GNU/Linux no Bleachbit 2.0-2 as funções de exclusão permanente de arquivos e pastas funcionam de maneira confiável, mas não a limpeza de espaço livre. Para comparação: no Windows, no software CCleaner, a função "SOP para ntfs" funciona corretamente, e Deus realmente não conseguirá ler os dados excluídos.
Então, para excluir completamente os dados "comprometedores" não criptografados antigos, é necessário o acesso direto do Bleachbit a esses dados, e em seguida, utilizar a função "exclusão de arquivos/pastas de forma permanente".
Para excluir "arquivos excluídos pelos recursos nativos do sistema operacional" no Windows, utilize CCleaner/BB com a função "SOP". No GNU/Linux, você deve (exclusão de arquivos excluídos) ter prática por conta própria (exclusão de dados + tentativa própria de recuperação e não deve confiar na versão do software (a menos que seja uma backdoor, pode ser um bug)), apenas assim você conseguirá entender o mecanismo deste problema e se livrar dos dados excluídos de forma definitiva.
O Bleachbit v3.0 não foi testado, talvez o problema já tenha sido corrigido.
O Bleachbit v2.0 funciona honestamente.
Neste passo, a "limpeza do disco" está concluída.
[E] Backup universal de sistemas operacionais criptografados
Cada usuário tem seu próprio método de backup de dados, mas os dados criptografados de "sistemas operacionais" requerem uma abordagem um pouco diferente para a tarefa. Um software unificado, como por exemplo "Clonezilla" e softwares semelhantes, não conseguem trabalhar diretamente com dados criptografados.
Definição da tarefa de backup de dispositivos de bloco criptografados:
- universalidade — algoritmo/software de backup idêntico para Windows/Linux;
- a capacidade de trabalhar no console com qualquer live usb GNU/Linux sem a necessidade de baixar software adicional (mas eu ainda recomendo GUI);
- segurança dos backups — as "imagens" armazenadas devem ser criptografadas/senhadas;
- o tamanho dos dados criptografados deve corresponder ao tamanho dos dados reais sendo copiados;
- extração conveniente dos arquivos necessários do backup (sem a necessidade de descriptografar primeiro toda a partição).
Por exemplo, backup/recuperação através da utilidade "dd"
dd if=/dev/sda7 of=/caminho/sda7.img bs=7M conv=sync,noerror
dd if=/caminho/sda7.img of=/dev/sda7 bs=7M conv=sync,noerrorAtende quase todos os itens da tarefa estabelecida, mas no item 4 não resiste a críticas, pois copia toda a seção do disco, incluindo o espaço livre — não é interessante.
Por exemplo, o backup GNU/Linux através do arquivador [tar» | gpg] é conveniente, mas para backup do Windows é necessário procurar outra solução — não é interessante.
E1. Backup universal de Windows/Linux. Conjunto rsync (Grsync) + VeraCrypt volumeAlgoritmo de criação de backup:
- criação de container criptografado (volume/arquivo) VeraCrypt para o SO;
- transferência/sincronização do SO usando o software Rsync para o container criptografado VeraCrypt;
- se necessário, carregamento do volume VeraCrypt em www.
A criação do container criptografado VeraCrypt tem suas particularidades:
criação de volume dinâmico (a criação de DT está disponível apenas no Windows, mas pode ser usado no GNU/Linux);
criação de volume normal, mas há exigências de natureza 'paranoica' (segundo o desenvolvedor) – formatação do container.
O volume dinâmico é criado praticamente instantaneamente no Windows, mas ao copiar dados do SO GNU/Linux > VeraCrypt DT, no geral, o desempenho da operação de backup é significativamente reduzido.
Um volume normal Twofish de 70 GB é criado (digamos assim, em um PC de potência média) em HDD ~ em meia hora (sobrescrevendo os dados antigos do container em uma única passagem, devido à exigência de segurança). No VeraCrypt Windows/Linux, a função de formatação rápida do volume foi removida ao criá-lo, portanto, a criação do container só é possível por meio de 'sobrescrição em uma única passagem', ou pela criação de um volume dinâmico de baixo desempenho.
Criamos um volume normal VeraCrypt (não dinâmico/ntfs), não deve haver problemas.
Configuramos/criamos/abrimos o container na interface gráfica do VeraCrypt > GNU/Linux live usb (o volume será montado automaticamente em /media/veracrypt2, o volume do Windows será montado em /media/veracrypt1). Criamos um backup criptografado do SO Windows usando a interface gráfica do rsync (grsync), marcando as opções.

Aguarde a conclusão do processo. Ao final do backup, teremos um arquivo criptografado.
Da mesma forma, criar um backup do SO GNU/Linux, desmarcando a opção na interface gráfica do rsync 'compatibilidade com Windows'.
Atenção! o container Veracrypt para 'backup GNU/Linux' deve ser criado no sistema de arquivos ext4. Se você fizer um backup em um container ntfs, ao restaurar essa cópia, perderá todas as permissões/grupos sobre todos os seus dados.
Todas as operações podem ser realizadas no terminal. As principais opções para rsync:
* -g - manter grupos;
* -P —progress — status do tempo de trabalho no arquivo;
* -H - copiar hard links como estão;
* -a - modo arquivo (vários flags rlptgoD);
* -v - verbosidade.
Se você deseja montar o "volume Windows VeraCrypt" através do console no software cryptsetup, pode criar um 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
Agora, ao executar o comando "veramount pictures", aparecerá um pedido para inserir a senha, e o volume do sistema Windows criptografado será montado no sistema operacional.
Montar/associar o volume do sistema VeraCrypt no comando cryptsetup
cryptsetup open --veracrypt --tcrypt-system --type tcrypt /dev/sdaX Windows_crypt
mount /dev/mapper/Windows_crypt /mntMontar/associar a partição/container VeraCrypt no comando cryptsetup
cryptsetup open --veracrypt --type tcrypt /dev/sdaY test_crypt
mount /dev/mapper/test_crypt /mntAo invés do alias, adicionaremos (script de inicialização automática) o volume do sistema com o Windows e o disco lógico criptografado ntfs à inicialização do GNU/Linux
Criamos um script e o salvamos em ~/VeraOpen.sh
printf 'Ym9i' | base64 -d | cryptsetup open --veracrypt --tcrypt-system --type tcrypt /dev/sda3 Windows_crypt && mount /dev/mapper/Windows_crypt /media/Winda7 #decodifica a senha de base64 (bob) e a envia para o pedido de entrada de senha ao montar o disco do sistema operacional Windows.
printf 'Ym9i' | base64 -d | cryptsetup open --veracrypt --type tcrypt /dev/sda1 ntfscrypt && mount /dev/mapper/ntfscrypt /media/ContainerNtfs #de forma similar, mas montamos o disco lógico ntfs.
Definindo as permissões "corretas":
sudo chmod 100 /VeraOpen.shCriamos dois arquivos idênticos (mesmo nome!) em /etc/rc.local e ~/etc/init.d/rc.local
Preenchemos os arquivos
#!/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 0Definindo as permissões "corretas":
sudo chmod 100 /etc/rc.local && sudo chmod 100 /etc/init.d/rc.local Pronto, agora durante a inicialização do GNU/Linux não precisamos inserir senhas para montar os discos criptografados ntfs, os discos são montados automaticamente.
Nota resumida sobre o que foi descrito acima no item E1 em etapas (mas agora para o OS GNU/Linux)
1) Criar um volume no fs ext4 > 4gb (para arquivo) Linux no Veracrypt [Crypto Box].
2) Reinicie com live usb.
3) ~$ cryptsetup open /dev/sda7 Lunux #associando a partição criptografada.
4) ~$ mount /dev/mapper/Linux /mnt #montando a partição criptografada em /mnt.
5) ~$ mkdir mnt2 #criando um diretório para o backup futuro.
6) ~$ cryptsetup open --veracrypt --type tcrypt ~/CryptoBox CryptoBox && mount /dev/mapper/CryptoBox /mnt2 #Associando o volume Veracrypt chamado 'CryptoBox' e montando o CryptoBox em /mnt2.
7) ~$ rsync -avlxhHX --progress /mnt /mnt2/ #operação de backup da partição criptografada no volume criptografado Veracrypt.
(p/s/ Atenção! Se você está migrando um GNU/Linux criptografado de uma arquitetura/máquina para outra, por exemplo, de Intel > AMD (ou seja, restaurando um backup de uma partição criptografada para outra partição criptografada Intel > AMD), não se esqueça de, após a migração do sistema operacional criptografado, alterar a chave secreta em vez da senha, pois a chave anterior ~ /etc/skey - já não servirá para outra partição criptografada, e criar uma nova chave com "cryptsetup luksAddKey" não é recomendado a partir do chroot - pode ocorrer um erro. Basta, em ~ /etc/crypttab, indicar temporariamente "none" em vez de " /etc/skey", após reiniciar e entrar no sistema operacional, recrie sua chave secreta novamente).
Como veteranos de TI, devemos sempre fazer backups separados dos cabeçalhos de partições criptografadas dos sistemas operacionais Windows/Linux, ou a criptografia se voltará contra você mesmo.
Neste ponto, o backup de sistemas operacionais criptografados está completo.
[F] Ataque ao carregador GRUB2
DetalhesSe você protegeu seu carregador com assinatura digital e/ou autenticação (veja p.C6.), isso não irá proteger contra acesso físico. Os dados criptografados continuarão inacessíveis, mas a proteção pode ser contornada (reset da proteção da assinatura digital) O GRUB2 permite que um cibercriminoso insira seu código no carregador, sem levantar suspeitas (a menos que o usuário monitore manualmente o estado do carregador ou crie seu próprio código de script seguro para grub.cfg).
Algoritmo do ataque. O invasor
* Inicia o PC com live usb. Qualquer alteração (pelo invasor) em arquivos irá alertar o verdadeiro dono do PC sobre a invasão ao carregador. Mas a simples reinstalação do GRUB2 mantendo grub.cfg (e a possível edição posterior) permite que o invasor edite quaisquer arquivos (neste cenário, ao iniciar o GRUB2, o alerta para o verdadeiro usuário não acontecerá. O status permanece )
* Monta a partição não criptografada e salva " /mnt/boot/grub/grub.cfg".
* Reinstala o carregador (removendo "perskey" da imagem core.img)
grub-install --force --root-directory=/mnt /dev/sda6 * Retorna "grub.cfg" > " /mnt/boot/grub/grub.cfg", editando se necessário, por exemplo, adicionando seu módulo "keylogger.mod" na pasta de módulos do carregador, na linha "insmod keylogger" em grub.cfg. Ou, por exemplo, se o inimigo for traiçoeiro, após reinstalar o GRUB2 (todas as assinaturas permanecem no lugar) ele compila a imagem principal do GRUB2 usando "grub-mkimage com a opção (-c)." A opção "-c" permite carregar sua configuração antes de carregar o "grub.cfg" principal. A configuração pode consistir em apenas uma linha: redirecionamento para qualquer "modern.cfg", misturado, por exemplo, com ~400 arquivos (módulos+assinaturas) na pasta "/boot/grub/i386-pc". Nesse caso, um invasor pode inserir código arbitrário e carregar módulos, sem tocar no "/boot/grub/grub.cfg", mesmo que o usuário tenha aplicado "hashsum" ao arquivo e temporariamente o exibido na tela.
Um atacante não precisará quebrar o login/senha de superusuário do GRUB2, apenas deverá copiar as linhas (responsáveis pela autenticação) "/boot/grub/grub.cfg" para seu "modern.cfg"
set superusers='root'
password_pbkdf2 root grub.pbkdf2.sha512.10000.DE10E42B01BB6FEEE46250FC5F9C3756894A8476A7F7661A9FFE9D6CC4D0A168898B98C34EBA210F46FC10985CE28277D0563F74E108FCE3ACBD52B26F8BA04D.27625A4D30E4F1044962D3DD1C2E493EF511C01366909767C3AF9A005E81F4BFC33372B9C041BE9BA904D7C6BB141DE48722ED17D2DF9C560170821F033BCFD8
E para o dono do PC, a verificação de autenticidade do superusuário do GRUB2 ainda será válida.
Boot chaining (o carregador carrega outro carregador), como mencionado anteriormente, não faz sentido (ela é destinada a outro propósito). Devido ao BIOS, não é possível carregar um carregador criptografado (na cadeia de inicialização, ocorre a reinicialização do GRUB2 > GRUB2 criptografado, erro!). No entanto, se ainda assim utilizar a ideia de boot chaining, pode-se ter certeza de que está sendo carregado realmente o criptografado (não modernizado) "grub.cfg" da partição criptografada. E isso também é uma falsa sensação de segurança, porque tudo que está especificado no "grub.cfg" criptografado (carregamento de módulos) se combina com os módulos carregados do GRUB2 não criptografado.
Se você quiser verificar isso, então destaque/cripte outra partição sdaY, copie para ela o GRUB2 (a operação grub-install na partição criptografada não é possível) e no "grub.cfg" (configuração não criptografada) modifique linhas semelhantes 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
}
linhas
* insmod -carregamento dos módulos necessários para funcionamento com disco criptografado;
* GRUBx2 -nome da linha exibida no menu de inicialização do GRUB2;
* cryptomount -u 15c47d1c4bd34e5289df77bcf60ee838 -veja fdisk -l (sda9);
* set root -definição do root;
* normal /boot/grub/grub.cfg -arquivo de configuração executável na partição criptografada.
A confiança de que o arquivo "grub.cfg" criptografado é carregado corretamente é uma resposta positiva ao inserir a senha/desbloquear "sdaY" ao selecionar a opção "GRUBx2" no menu GRUB.
Ao trabalhar no CLI, para não se confundir (e verificar se a variável de ambiente "set root" foi executada), crie arquivos vazios como marcadores, por exemplo, na partição criptografada "\/shifr_grub", e na partição não criptografada "\/noshifr_grub". Verificação no CLI
cat \/Tab-TabComo mencionado anteriormente, isso não ajudará contra a carga de módulos maliciosos, caso tais módulos estejam em seu PC. Por exemplo, um keylogger que pode armazenar as teclas pressionadas em um arquivo e se misturar com outros arquivos em "~\/i386", até que seja baixado pelo atacante com acesso físico ao PC.
A maneira mais simples de verificar se a proteção por assinatura digital está ativamente funcionando (não redefinida), e ninguém interveio no carregador, no CLI digitamos o comando
list_trusted em resposta recebemos um instantâneo de nossa "perskey", ou nada, se fomos atacados (também é necessário verificar "set check_signatures=enforce").
Um grande inconveniente desse passo é digitar os comandos manualmente. Se essa comando for adicionada ao "grub.cfg" e a configuração protegida por assinatura digital, a exibição preliminar do instantâneo da chave na tela será muito curta no tempo, e pode-se não conseguir visualizar a saída, resultando no carregamento do GRUB2.
Em termos de responsável, não se pode reclamar de ninguém: o desenvolvedor declara oficialmente em seu p.18.2
"Note que mesmo com a proteção por senha do GRUB, o GRUB em si não pode impedir que alguém com acesso físico à máquina altere a configuração do firmware dessa máquina (por exemplo, Coreboot ou BIOS) para fazer com que a máquina inicialize a partir de um dispositivo diferente (controlado pelo atacante). O GRUB é, no melhor dos casos, apenas um elo em uma cadeia de inicialização segura."
O GRUB2 é excessivamente sobrecarregado com funções que podem criar uma falsa sensação de segurança, e seu desenvolvimento já superou a funcionalidade do sistema operacional MS-DOS, sendo que ele é apenas um carregador. Curiosamente, o GRUB2 – "amanhã" pode se tornar um sistema operacional, e as máquinas virtuais GNU/Linux o carregam.
Um pequeno vídeo sobre como eu sobreei a proteção por assinatura digital do GRUB2 e declarei minha invasão ao usuário real (assustei, e ao invés do que é mostrado no vídeo – pode-se escrever um código arbitrário não inofensivo/.mod).

Conclusões:
1) A criptografia de sistema em bloco para Windows é mais fácil de implementar, e a proteção com uma única senha é mais conveniente do que a proteção com várias senhas em criptografias de sistema em bloco GNU/Linux, para ser justo: a última é automatizada.
2) O artigo foi escrito como um guia relevante e detalhado simples para a criptografia de disco inteiro VeraCrypt/LUKS em uma única máquina doméstica, que é, até hoje, o melhor disponível na internet russa (na minha opinião). O guia contém mais de 50 mil caracteres, por isso não foram abordados alguns tópicos interessantes: sobre criptógrafos que desaparecem/permanecem nas sombras; sobre o que poucos livros de GNU/Linux falam sobre criptografia; sobre o artigo 51 da constituição da Federação da Rússia; sobre /запрете , sobre a necessidade de criptografar a "partição raiz/boot". O guia acabou sendo extenso, mas detalhado (descrevendo até mesmo passos simples), por sua vez, isso economizará muito do seu tempo quando você começar a fazer a "verdadeira criptografia".
3) A criptografia de disco inteiro foi realizada no Windows 7 64; GNU/Linux Parrot 4x; GNU/Debian 9.0/9.5.
4) Realizei um ataque bem-sucedido ao meu carregador GRUB2.
5) O tutorial foi criado para ajudar todos os paranoicos da CEI, onde o trabalho com criptografia é legalmente permitido. E, em primeiro lugar, para aqueles que desejam aplicar criptografia de disco inteiro sem remover seus sistemas configurados.
6) Reestruturei e atualizei meu guia, que é relevante em 2020.
[G] Documentação útil
- (fevereiro de 2012 RU)
- /usr/share/doc/cryptsetup(-run) [локальный ресурс] (documentação oficial detalhada para configuração de criptografia em GNU/Linux usando cryptsetup)
- (documentação resumida sobre configuração de criptografia em GNU/Linux usando cryptsetup)
- (documentação do archlinux)
- (página do manual do arch)
- (página do manual do arch)
- .
Tags: criptografia de disco completo, criptografia de partição, criptografia de disco inteiro Linux, criptografia de sistema completo LUKS1.
Apenas usuários registrados podem participar da pesquisa. , por favor.
Você está criptografando?
17,1%Eu criptografo tudo que é possível. Estou paranoico.
34,2%Eu criptografo apenas dados importantes.
14,6%Às vezes eu criptografo, às vezes esqueço.
34,2%Não, não criptografo, é inconveniente e custoso.
82 usuários votaram. 22 usuários se abstiveram.
Fonte: habr.com
