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