Criptografando HD com Cryptsetup(dm-crypt)

Obs.: dos comandos abaixo podemos usar “open” no lugar de “luksOpen” e “close” no lugar de “luksClose“.  luksOpen e luksClose  são antiquados.

No artigo anterior vimos quais as opções podemos escolher para criptografar nosso disco. Também vimos que para dispositivos em bloco podemos usar uma das seguintes opções:

  • loop-AES
  • dm-crypt
  • TrueCrypt/VeraCrypt

Iremos usar aqui dm-crypt e sua ferramenta de gerenciamento, a cryptseup.

dm-crypt já é nativo no kernel linux, mas a ferramenta que a gerencia geralmente não e então cabe a nós a sua instalação.

Podemos usar qualquer dispositivo em bloco, seja um pen drive, HD externo ou partição de um disco/SSD. Aqui irei usar a partição sdb1 do meu disco /dev/sdb.

Atenção: os procedimentos abaixo irão apagar o conteúdo do disco, então escolha o disco corretamente e se houver arquivos faça backup.

Vamos instalar o cryptsetup.

Instalando Cryptsetup

 

No CentOS

sudo yum install cryptsetup  -y

 

No Debian

sudo apt install cryptsetup -y

 

Criptografando  com Cryptsetup

 

Vamos executar o comando “cryptsetup luksFormat /dev/sdb1”. Digite YES em maiúsculo e uma senha para o disco.

elder@server01:~$ sudo cryptsetup luksFormat /dev/sdb1  
AVISO: O dispositivo /dev/sdb1 já contém uma assinatura de superbloco "ext4".

WARNING!
========
Isto vai sobrescrever dados em /dev/sdb1 permanentemente.

Are you sure? (Type uppercase yes): YES
Digite a senha para /dev/sdb1: 
Verificar senha: 

 

No comando acima temos:

  • cryptsetup: ferramenta para criptografar usando dm-crypt.
  • luksFormat: opção da ferramenta cryptsetup para formatar o bloco.
  • /dev/sdb1: nosso bloco a ser criptografado.

 

Instalando um Sistema de Arquivos no Bloco

Agora iremos instalar um sistema de arquivos.  Podemos escolher qualquer sistema de arquivos. Em meu caso escolhi o ext4.

Após executado o comando anterior iremos usar a opção “luksOpen” para abrir o bloco /dev/sdb1 e então será gerado um dispositivo dentro de /dev/mapper/. O nome do dispositivo pode ser qualquer um que dermos. Irei dar o nome de hdCriptografado.

Execute o comando “cryptsetup luksOpen   /dev/sdb1   hdCriptografado”. Quando solicitado digite a senha que criamos acima para descriptografar o bloco.

elder@server01:~$ sudo cryptsetup luksOpen /dev/sdb1  hdCriptografado
Digite a senha para /dev/sdb1:

Foi criado o mapeamento /dev/mapper/hdCriptografado

Execute o comando abaixo para implantarmos o sistema de arquivos ext4

elder@server01:~$ sudo mkfs.ext4 /dev/mapper/hdCriptografado

 

Montando o Bloco

Vamos criar a pasta /media/meuHDCriptografado e após isso montar com o comando “mount /dev/mapper/hdCriptografado /media/meuHDCriptografado/

elder@server01:~$ sudo mkdir /media/meuHDCriptografado
elder@server01:~$ sudo mount /dev/mapper/hdCriptografado  /media/meuHDCriptografado/

Verifique a montagem com “df”

elder@server01:~$ df -h
Sist. Arq.                   Tam. Usado Disp. Uso% Montado em
udev                         480M     0  480M   0% /dev
..........
/dev/mapper/hdCriptografado  460M  2,3M  430M   1% /media/meuHDCriptografado

 

Verifique o tipo do bloco com

elder@server01:~$ sudo blkid
/dev/sda1: UUID="08d9728a-0edf-4f23-b06a-6cb3ee2fea50" TYPE="ext4" PARTUUID="143703ee-01"
..................
/dev/sdb1: UUID="f99af4a3-5af9-4804-913e-a89ac3d0fb45" TYPE="crypto_LUKS" PARTUUID="5e3dce61-01"
/dev/mapper/hdCriptografado: UUID="f7879354-d0c6-4e25-93df-3424b15c45b4" TYPE="ext4"

 

Desmontando e Desconectando o Mapeamento

Para desmontar o disco basta usar o comando umount.

elder@server01:~$ sudo umount /media/meuHDCriptografado

Agora desfaça o mapeamento hdCriptografado. Não precisa passar todo o caminho(/dev/mapper/hdCriptografado).

elder@server01:~$ sudo cryptsetup luksClose hdCriptografado

 

Bônus: Um Pouco mais Sobre LUKS

Como vimos acima, Luks é uma solução para criptografia de blocos(HD, SSDs, Partições…) usando o sistema de mapeamentos do kernel(/dev/mapper). Sabemos o que ele faz. Porém, desejo revisar, abaixo, o que ele faz e comentar sobre o que não faz.

O que LUKS faz?

  • Ele criptografa dispositivos em blocos e assim é apropriado para proteger seu pen drive, HD externos ou disco de um notebook.
  • Pode ser usado também para criptografar a memória swap.
  • Luks contém diversos slot(repartições) para guardar chaves e passphrases(senhas).

 

O que LUKS não faz?

  • Não é adequado para um cenário com mais de 8 usuários tendo distintas chaves para o mesmo dispositivo.
  • Ele não é adequado para aplicações que requerem criptografia a nível de arquivos. Como vimos, Luks cria uma camada abaixo do Sistema de Arquivos.

 

Uma coisa a se notar é que, assim como as demais ferramentas de criptografia em bloco, LUKS protege o bloco somente quando este não está montado, pois quando montado o disco está descriptografado e disponível para os usuários que tenham acesso ao servidor.

 

Qual o Cipher e Tamanho de Chave(key) Usado por LUKS?

Obs.: Cipher ou cypher é a mesma coisa que algorítimo de criptografia.

Aqui estamos falando de criptografia mas, nos passos acima, não precisamos definir qual algorítimo de criptografia ou o tamanho da chave usar. Isso aconteceu pois o LUKS trabalha por padrão com  uma chave com tamanho de 512 bits e com o cipher aes-xts-plain64 ou, em alguns outros casos, aes-cbc-assiv:sha256. Há opções disponíveis, mas vamos manter as padrões que atualmente são consideradas fortes.

Se quiser ver detalhes sobre o algorítimo de criptografia pode executar o comando abaixo. Levando em consideração que criptografamos o bloco /dev/sdb1:

sudo cryptsetup luksDump /dev/sdb1
....

Ou esse comando na unidade mapeada

sudo cryptsetup status hdCriptografado 
/dev/mapper/hdCriptografado is active.
  type:    LUKS2
  cipher:  aes-xts-plain64
  keysize: 512 bits
  key location: keyring
  device:  /dev/sdb1
  sector size:  512
  offset:  32768 sectors
  size:    374751 sectors
  mode:    read/write

 

Se quiser ver ciphers disponíveis execute:

cat /proc/crypto

 

Conclusão

Aqui criptografamos uma partição inteira. Se esse disco for furtado nossos dados não serão acessados.

Podemos ver que o sistema de arquivos fica acima do bloco criptografado. Por exemplo, temos o bloco /dev/sdb1 que está criptografado mas o  sistema de arquivos está em /dev/mapper/nome_qualquer.

 

Fonte: categoriaoutros, redhat

Leitor voraz e um dos administradores do GNU/Linux Brasil no Whatsapp, facebook, youtube e nesse dito site: www.gnulinuxbrasil.com.br

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *