Versão em vídeo desta seção pode estar disponível no canal do Guia Foca no YouTube: Criptografia com o eCrypt.
O eCryptfs permite fazer criptografia a nível do sistema de arquivos. Ele
consiste na criptografia de uma pasta dentro do sistema de arquivo
chamada de Private
. O suporte nativo ao eCryptFS foi
adicionado oficionalmente a partir do kernel 2.6.19
e
para ele funcionar, precisa que o suporte do kernel
ao módulo ecryptfs
esteja incluído na distribuição.
OBS: No Debian
, o pacote ecryptfs-utils
foi removido da Buster (Debian 10) devido a bugs na
desmontagem automática do diretório Private
, mantendo o conteúdo acessível
para usuários com privilégios (BUG 765854). Este problema pode ser contornado adicionando-se
o ecyrptfs-umount-private no .bash_logout
(no
entanto não é possível prever esse funcionamento em quedas de conexões inesperadas).
O pacote ecryptfs-utils
pode ser instalado no sistema adicionado o
repositório da stretch
em /etc/apt/sources.list
.
Após isso, execute o comando: apt-get install ecryptfs-utils
O padrão do ecryptfs é a montagem automatica da pasta no login dos sistema.
É requerido o suporte a key retention no kernel. Assim como habilitar
o suporte criptográfico a CBC, ECB, MD5 e AES. Em Miscelaneous filesystem
,
e também habilitar o suporte a eCrypt filesystem layer support
(que
gera o módulo do kernel ecryptfs).
NOTA: O eCryptfs é ainda experimental, embora mais seguro que o EncFS. Como o formato interno pode mudar, é recomendável manter um backup de arquivos.
Para fazer a configuração manual
do eCryptfs, primeiro selecione um diretório que receberá o
conteúdo criptografado e também um ponto de montagem com o comando:
O sistema perguntará a forma de criptografia desejada:
1) Frase Senha 2) tspi
Selecione a opção 1, você será perguntado do cifra que será usada (a AES é uma boa escolha):
Select cipher: 1) aes: blocksize = 16; min keysize = 16; max keysize = 32 2) blowfish: blocksize = 8; min keysize = 16; max keysize = 56 3) des3_ede: blocksize = 8; min keysize = 24; max keysize = 24 4) twofish: blocksize = 16; min keysize = 16; max keysize = 32 5) cast6: blocksize = 16; min keysize = 16; max keysize = 32 6) cast5: blocksize = 8; min keysize = 5; max keysize = 16
Após isso, será mostrada a mensagem pedindo para selecionar o tamanho de bits da chave:
Select key bytes: 1) 16 2) 32 3) 24 Selection [16]: 3
Após isso, selecione ser texto plano deverá ser ativado:
Enable plaintext passthrough (y/n) [n]: n
Após, ser o nome do arquivo também deverá ser encriptado (isso é importante para reduzir risco de ataques dirigidos a arquivos específicos):
Enable filename encryption (y/n) [n]: n Attempting to mount with the following options: ecryptfs_unlink_sigs ecryptfs_key_bytes=56 ecryptfs_cipher=blowfish ecryptfs_sig=7261b2ffab9ae159 WARNING: Based on the contents of [~/.ecryptfs/sig-cache.txt], it looks like you have never mounted with this key before. This could mean that you have typed your passphrase wrong.
Em seguida, o ecrypt perguntará se deseja prosseguir com a montagem:
Would you like to proceed with the mount (yes/no)? : yes
Agora você será perguntado se deseja adicionar a assinatura ao arquivo sig-cache.txt, para evitar o warning de montagem no futuro. Responda 'yes' para evitar novas mensagens sobre esse warning:
Would you like to append sig [9c21b2ffab9ae159] to [/~/.ecryptfs/sig-cache.txt] in order to avoid this warning in the future (yes/no)? : yes Successfully appended new sig to user sig cache file Mounted eCryptfs
Note que o cache de assinaturas é adicionado automaticamente em
~/.ecryptfs/sig-cache.txt
evitando o warning de que foi a primeira vez que montou o arquivo. É importante
observar as opções de montagem usadas:
ecryptfs_unlink_sigs ecryptfs_key_bytes=56 ecryptfs_cipher=blowfish ecryptfs_sig=7261b2ffab9ae159
Após isso, o diretório será montado e tudo que for gravado em
~/origem
, será gravado criptografado em ~/destino
:
/dev/vda1 ext2 236M 37M 187M 17% /boot /dev/mapper/lpi303--debian--vg-home ext4 428M 7.9M 386M 3% /home tmpfs tmpfs 100M 0 100M 0% /run/user/0 /home/guiafoca/origem ecryptfs 3.5G 1.7G 1.6G 52% /home/guiafoca/destino
Caso tenha obtido o erro:
Error mounting eCryptFS: [-2] No such file or directory
, verifique se tanto
o diretório de origem ou destino existem em sua máquina. Caso estiver criando
uma nova criptografia, crie os diretórios com o comando
mkdir -p ~/origem ~/destino
e repita os passos para criar os sistema de arquivos criptografado.
Na hora de remontar o sistema, ele perguntará novamente todos os dados, basta preencher corretamente, e seu conteúdo será novamente disponibilizado na pasta especificada. caso digite a frase senha ERRADA, o sistema mostrará o seguinte alerta:
WARNING: Based on the contents of [~/.ecryptfs/sig-cache.txt], it looks like you have never mounted with this key before. This could mean that you have typed your passphrase wrong. Would you like to proceed with the mount (yes/no)? : no Aborting mount.
Caso prossiga, os arquivos criptografados anteriormente serão listados, mas ao tentar abrir o conteúdo, o ecryptfs retornará:
cat: teste2.txt: Input/output error
OBS: O sistema de criptografia garante privacidade nos arquivos, mas eles podem ser removidos por qualquer usuário do sistema permissões aprioriadas.
O ecryptfsd é um daemon userspace que executa operações sob o ponto
de montagem eCryptfs. Ele requisita serviços de chave pública do
módulo do kernel, enviando os mesmos via /dev/ecryptfs
. O
ecryptfsd somente precisa ser executado quando a monatgem é
feita usando módulo chave pública.
Todas as chamadas ao
ecryptfsd
são servidas sob o contexto do usuário que rodou o daemon.
O utilitário ecryptfs-setup-private pode ser usado para configurar o diretório
privado. Nesse caso, os utilitários ecryptfs-mount-private são usados para
configurar a criptografia disponibilizando os dados de forma padronizada em ~/Private
e o ecryptfs-umount-private para desmontar o filesystem ~/Private
A seguinte estrutura é usada nessa situação:
~/Private
- conteúdo descriptografado do ecrypfs
~/.Private
- Contém o conteúdo criptografado, em diretório oculto
A seguinte estrutura é criado em ~/.ecryptfs
:
-rw-r--r-- 1 gleydson gleydson 0 jul 2 11:25 auto-mount -rw-r--r-- 1 gleydson gleydson 0 jul 2 11:25 auto-umount -rw------- 1 gleydson gleydson 23 jul 2 11:25 Private.mnt -rw------- 1 gleydson gleydson 34 jul 2 11:25 Private.sig -rw------- 1 gleydson gleydson 42 jul 2 11:25 wrapped-passphrase
Para criar o diretório privado de usuário, execute o seguinte procedimento:
Execute o >ecryptfs-setup-private
Será solicitado sua senha de login no sistema para continuar
Enter your login password [guiafoca]:
Será pedido a senha para montagem do sistema de arquivos criptografado. Selecione uma senha cuidadosamente seguindo os critérios de NNNNNNNN:
Enter your mount passwphrase:
ATENÇÃO: Guarde sua frase senha e armazene-a em um local seguro. Caso perca a frase-senha, não conseguirá mais ter acesso aos dados!
Será exibida as seguintes mensagens de validação da montagem/desmontagem e leitura: ************************************************************************ YOU SHOULD RECORD YOUR MOUNT PASSPHRASE AND STORE IT IN A SAFE LOCATION. ecryptfs-unwrap-passphrase ~/.ecryptfs/wrapped-passphrase THIS WILL BE REQUIRED IF YOU NEED TO RECOVER YOUR DATA AT A LATER TIME. ************************************************************************ Done configuring. Testing mount/write/umount/read... Inserted auth tok with sig [cffe18c2df6fd3b2] into the user session keyring Inserted auth tok with sig [c70fae191ab3be11] into the user session keyring Inserted auth tok with sig [cffe18c2df6fd3b2] into the user session keyring Inserted auth tok with sig [c70fae191ab3be11] into the user session keyring Testing succeeded. Logout, and log back in to begin using your encrypted directory.
Agora, faça logout, e novamente login para poder começar a usar seu diretório
~/Private
montado.
Você pode desmontar o diretório no momento que desejar, mas ao invés de usar o comando
umount, utilize:
ecryptfs-umount-private. Para montar novamente o diretório
~/.Private
sem a necessidade
de logout/login, use ecryptfs-mount-private.
Para validar se a senha e conteúdo podem ser corretamente acessados e descriptografados, use o comando:
ecryptfs-unwrap-passphrase ~/.ecryptfs/wrapped-passphrase
Caso deseje migrar um diretório home existente para criptografia, isso é possível com
o ecryptfs. Quando o home é criptografado, assim que fizer o logon,
os dados estarão disponíveis de forma automatica, e o /home/usuario
deixará de ficar montado assim que o usuário fizer logout (usando o pam_ecryptfs
):
Como root, rode: ecryptfs-migrate-user -u usuario
Será perguntada a passpharase do usuário, que deverá ser fornecida (siga os critérios de segurança em NNNNNNNN)
Peça para o usuário logar no sistema e ver se o sistema montou corretamente
seu home. Se estiver tudo ok, o diretório de migração /home/usuario.XXXXXXX
poderá ser removido
Rode ecryptfs-unwrap-passphrase
e salve o código aleatório gerado
para que a montagem funcione automaticamente com o pam_ecryptfs
,
é necessário que a frase senha de acesso esteja sincronizada
com o login de usuário, e que o módulo seja configurado no PAM com:
auth required pam_ecryptfs.so unwrap password optional pam_ecryptfs.so session optional pam_ecryptfs.so unwrap
Para configurar a montagem automática do eCryptFS, proceda da seguinte forma:
Monte o sistema de arquivos atual: mount -t ecryptfs /root/testecripto /mnt
Pegue os parametros de montagem do /etc/mtab
:
grep 'ecryptfs' /etc/mtab /root/testeecryptfs /mnt ecryptfs rw,relatime,ecryptfs_sig=5251a2b3b9ae159,ecryptfs_cipher=blowfish,ecryptfs_key_bytes=56,ecryptfs_unlink_sigs 0 0
Adicione a linha no /etc/fstab
adicionando os parâmetros, user
e noauto
:
Desmote o compartilhamento montado
Adicione sua frase-senha do keyring via utilitário ecryptfs-manager
,
usando a opção 1
.
Monte o diretório com: mount -i /mnt' (a opção -i
impede
o mount de chamar o helper ecryptfs externo).
O diretório deverá agora ser montado automaticamente.
Agora que o diretório montou usando o keyring, limpe a chave da sessão de usuário com o keyctl clear @u
Adicione o comando mount no ~/.bash_profile
:
mount -i /mnt
Finalmente adicione isto ao seu arquivo /etc/pam/login
, após o
pam_unix.so
:
auth required pam_ecryptfs.so
No RedHat, pode ser usado o script src/utils/ecryptfs-setup-pam.sh
para
fornecer essa montagem automática
O ecrypt não deve ser usado para criptografar dispositivos de rede NFS . O EncFS (veja NNNNNNNN) é uma melhor opção nessa situação.
Nomes maiores que 143 caracteres não podem ser encriptados com a opção
FNEK (File Name Encryption Key
).
Caso crie arquivos de imagem com o truncate (comando muito usado para criação de imagens em virtualização ou de arquivos vazios, por ex: truncate -s 10G teste.img, será produzido um arquivo criptografado de 10Gb no sistema de arquivos origem.
Copyright © 1999-2020 - Gleydson Mazioli da Silva