LUKS: Criptografia de Dados de Disco Rígido Linux com Suporte NTFS no Linux

A sigla LUKS significa Linux Unified Key Setup, que é um método amplamente utilizado de criptografia de disco pelo Kernel do Linux e é implementado com o pacote cryptsetup.

O comando cryptsetup criptografa em tempo real um volume de disco usando uma chave de criptografia simétrica derivada da frase de senha fornecida sempre que um volume de disco, uma partição e até um disco inteiro (mesmo um pendrive) é montado na hierarquia do sistema de arquivos e usa o cifra aes-cbc-essiv:sha256.

Linux Hard Disk Encryption Using LUKS

Devido ao fato de o LUKS poder criptografar os dispositivos de bloco inteiros (discos rígidos, pendrives, discos flash, partições, grupos de volumes etc.) nos sistemas Linux, é amplamente recomendado para proteger mídias de armazenamento removíveis, discos rígidos de laptops ou arquivos de swap do Linux e não é recomendado para criptografia de nível de arquivo.

NTFS (New Technology File System) é um sistema de arquivos proprietário desenvolvido pela Microsoft.

O Ubuntu 14.04 oferece suporte total à criptografia LUKS e também suporte nativo ao NTFS para o Windows com a ajuda do pacote ntfs-3g.

Para provar meu ponto neste tutorial, adicionei um novo disco rígido (4º) na máquina Ubuntu 14.04 (a referência do sistema para o novo HDD adicionado é /dev/sdd), o qual será dividido em duas partições.

  1. Uma partição (/dev/sdd1 – primária) usada para criptografia LUKS.
  2. A segunda partição (/dev/sdd5 – estendida) formatada em NTFS para acessar dados em sistemas Linux e Windows.

Também as partições serão montadas automaticamente no Ubuntu 14.04 após a reinicialização.

Passo 1: Criar Partições de Disco

1. Após adicionar fisicamente seu disco rígido em sua máquina, use o comando ls para listar todos os /dev/dispositivos (o quarto disco é /dev/sdd).

# ls /dev/sd*
List Partitions in Linux

2. Em seguida, verifique seu novo HDD com o comando fdisk.

$ sudo fdisk –l /dev/sdd
Check Linux Hard Disk

Como nenhum sistema de arquivos foi escrito até o momento, o disco ainda não contém uma tabela de partição válida.

3. Os próximos passos dividem o disco rígido resultando em duas partições usando o utilitário de disco cfdisk.

$ sudo cfdisk /dev/sdd

4. A próxima tela abre o modo interativo do cfdisk. Selecione seu disco rígido Espaço Livre e navegue até a opção Novo usando as setas esquerda/direita.

cfdisk Interactive Mode

5. Escolha o tipo de partição como Primária e pressione Enter.

Select Your Partition Type

6. Anote o tamanho desejado da partição em MB.

Write Down Partition Size

7. Crie esta partição no Início do Espaço Livre do disco rígido.

Create a Partition

8. Em seguida, navegue até a opção de Tipo de partição e pressione Enter.

Partition Type

9. A próxima janela apresentará uma lista de todos os tipos de sistemas de arquivos e seus códigos de número (número hexadecimal). Esta partição será criptografada como Linux LUKS, então escolha o código 83 e pressione Enter novamente para criar a partição.

Enter File System Type

10. A primeira partição é criada e o prompt da utilidade cfdisk volta para o início. Para criar a segunda partição usada como NTFS, selecione o Espaço livre restante, vá para a opção Nova e pressione a tecla Enter.

Create New Partition

11. Desta vez, a partição será lógica estendida. Portanto, vá para a opção Lógica e pressione novamente Enter.

Select Logical Partition Type

12. Insira novamente o tamanho da sua partição. Para usar o espaço livre restante como nova partição, deixe o valor padrão no tamanho e apenas pressione Enter.

Enter Size of Partition

13. Escolha novamente o código do tipo de partição. Para o sistema de arquivos NTFS, selecione o código de volume 86.

Select Partition Type

14. Após revisar e verificar as partições, selecione Gravar, responda sim na próxima pergunta interativa e depois Sair para sair da utilidade cfdisk.

Write Partition Table to Disk
Confirm Changes
Quit to leave cfdisk utility

Parabéns! Suas partições foram criadas com sucesso e estão prontas para serem formatadas e usadas.

15. Para verificar novamente a Tabela de Partições do disco, emita o comando fdisk novamente, que mostrará informações detalhadas da tabela de partições.

$ sudo fdisk –l /dev/sdd
Confirm Parition Table

Passo 2: Criar Sistema de Arquivos da Partição

Sistema de Arquivos NTFS

16. Para criar o sistema de arquivos NTFS na segunda partição, execute o comando mkfs.

$ sudo mkfs.ntfs /dev/sdd5
Create NTFS Filesystem

17. Para disponibilizar a partição, ela deve ser montada no sistema de arquivos em um ponto de montagem. Monte a segunda partição no quarto disco rígido no ponto de montagem /opt usando o comando mount.

$ sudo mount /dev/sdd5 /opt

18. Em seguida, verifique se a partição está disponível e listada no arquivo /etc/mtab usando o comando cat.

$ cat /etc/mtab
Check Partition Availability

19. Para desmontar a partição, use o seguinte comando.

$ sudo umount /opt
EXT4 LUKS

20. Certifique-se de que o pacote cryptsetup está instalado no seu sistema.

$ sudo apt-get install cryptsetup		[On Debian Based Systems]

# yum install cryptsetup				[On RedHat Based Systems]

21. Agora é hora de formatar a primeira partição no quarto disco rígido com o sistema de arquivos ext4 emitindo o seguinte comando.

$ sudo luksformat  -t ext4  /dev/sdd1

Responda em maiúsculas SIM na pergunta “Tem certeza?” e digite três vezes a sua senha desejada.

Format Partition

Observação: Dependendo do tamanho da sua partição e da velocidade do HDD, a criação do sistema de arquivos pode levar um tempo.

22. Você também pode verificar o status do dispositivo de partição.

$ sudo cryptsetup luksDump  /dev/sdd1
Verify Partition Status

23. LUKS suporta no máximo 8 senhas adicionadas. Para adicionar uma senha, use o seguinte comando.

$ sudo cryptsetup luksAddKey /dev/sdd1
Add a Password

Para remover uma senha, use.

$ sudo cryptsetup luksRemoveKey /dev/sdd1
Remove a Password

24. Para que esta partição criptografada fique ativa, ela deve ter uma entrada de nome (ser inicializada) no diretório /dev/mapper com a ajuda do pacote cryptsetup.

Esta configuração requer a seguinte sintaxe de linha de comando:

$ sudo cryptsetup luksOpen  /dev/LUKS_partiton  device_name

Onde “nome_do_dispositivo” pode ser qualquer nome descritivo que você goste! (eu o nomeei de volume_criptografado). O comando real parecerá como mostrado abaixo.

$ sudo cryptsetup luksOpen  /dev/sdd1 crypted_volume
Active Encrypted Partition

25. Em seguida, verifique se o seu dispositivo está listado em /dev/mapper, diretório, link simbólico e status do dispositivo.

$ ls /dev/mapper
$ ls –all /dev/mapper/encrypt_volume
Verify Encrypted Partition
$ sudo cryptsetup –v status encrypt_volume
Encrypted Partition Status

26. Agora, para tornar o dispositivo de partição amplamente disponível, monte-o em seu sistema em um ponto de montagem usando o comando mount.

$ sudo mount  /dev/mapper/crypted_volume  /mnt
Mount Encrypted Partition

Como pode ser visto, a partição está montada e acessível para escrever dados.

27. Para torná-lo indisponível, basta desmontá-lo do seu sistema e fechar o dispositivo.

$ sudo umount  /mnt
$ sudo cryptsetup luksClose crypted_volume
Umount Encrypted Partition

Passo 3: Montar a Partição Automaticamente

Se você usa um disco rígido fixo e precisa que ambas as partições sejam automaticamente montadas pelo sistema após a reinicialização, você deve seguir estes dois passos.

28. Primeiro, edite o arquivo /etc/crypttab e adicione os seguintes dados.

$ sudo nano /etc/crypttab
  1. Nome do alvo: Um nome descritivo para o seu dispositivo (veja o ponto acima 22 em EXT4 LUKS).
  2. Drive de origem: A partição do disco rígido formatada para LUKS (veja o ponto acima 21 em EXT4 LUKS).
  3. Arquivo de chave: Escolha nenhum
  4. Opções: Especifique luks

A linha final terá a seguinte aparência.

encrypt_volume               /dev/sdd1          none       luks
Mount Partition Automatically

29. Em seguida, edite o arquivo /etc/fstab e especifique o nome do seu dispositivo, ponto de montagem, tipo de sistema de arquivos e outras opções.

$ sudo nano /etc/fstab

Na última linha, use a seguinte sintaxe.

/dev/mapper/device_name (or UUID)	/mount_point     filesystem_type     options    dump   pass

E adicione seu conteúdo específico.

/dev/mapper/encrypt_volume      /mnt    ext4    defaults,errors=remount-ro     0     0
Add Partition Entry in Fstab

30. Para obter o UUID do dispositivo, use o seguinte comando.

$ sudo blkid
Get Device UUID

31. Para adicionar também o tipo de partição NTFS criado anteriormente, use a mesma sintaxe acima em uma nova linha no arquivo fstab ( Aqui é usado redirecionamento de anexação de arquivo no Linux ).

$ sudo su -
# echo "/dev/sdd5	/opt	ntfs		defaults		0              0"  >> /etc/fstab
Add NTFS Partition in fstab

32. Para verificar as mudanças, reinicie sua máquina, pressione Enter após a mensagem de inicialização “Iniciando configuração do dispositivo de rede” e digite a frase de acesso do seu dispositivo.

Reboot Machine
Verify Partition is Mounted Automatically

Como pode ver, ambas as partições de disco foram montadas automaticamente na hierarquia do sistema de arquivos do Ubuntu. Como conselho, não use volumes automaticamente criptografados do arquivo fstab em servidores fisicamente remotos se não puder ter acesso à sequência de reinicialização para fornecer a senha do seu volume criptografado.

As mesmas configurações podem ser aplicadas a todos os tipos de mídia removível, como pendrive, memória flash, disco rígido externo, etc, para proteger dados importantes, secretos ou sensíveis em caso de espionagem ou roubo.

Source:
https://www.tecmint.com/linux-hard-disk-encryption-using-luks/