Como melhor criptografar e descriptografar um diretório via linha de comando ou script?

8

Eu tenho um diretório de arquivos de texto sob controle de versão do bazar e mantenho uma cópia (uma filial, na verdade) em cada uma das minhas máquinas. Eu quero criptografar e descriptografar o diretório através da linha de comando.

Idealmente, eu também poderia executar um script no logout para verificar se o diretório está criptografado e criptografá-lo, se não, tudo sem a intervenção do usuário. No entanto, não quero que o dir seja descriptografado no login. (Quero que o script seja uma proteção contra o esquecimento de criptografar manualmente. Isso é especialmente importante para o netbook.)

Estou executando ubuntu 10.04.1e duas versões do crunchbang linux, uma derivada da ubuntu 9.04, ou de um instantâneo do final de junho dos repositórios Debian Squeeze.

Qual é a melhor maneira de fazer isso?

(Tentei marcar com encryptione directories, mas não tenho o representante para criar uma tag.)

vanden
fonte

Respostas:

5

Você tem acesso administrativo às máquinas? Pode-se usar um dispositivo de loopback criptografado. Exemplo:

crie um arquivo de contêiner para o fs criptografado:

dd if=/dev/urandom of=container bs=1024k count=100 

vincular arquivo de contêiner ao dispositivo de loopback 0:

losetup container /dev/loop0

crie um dispositivo criptografado (-y solicita a senha duas vezes; a linha é dividida por \):

cryptsetup -c serpent-xts-essiv:sha256 -b 512 \
   -y create container /dev/loop0 

crie um sistema de arquivos ext2 no dispositivo criptografado (pode usar qualquer coisa realmente):

mkfs.ext2 /dev/mapper/container

monta o sistema de arquivos criptografado no diretório de criptografia:

mount /dev/mapper/container crypt

Para referência:

man cryptsetup && man losetup

Além disso, leia as práticas recomendadas de criptografia, para obter informações sobre como escolher códigos e comprimentos de chave, etc.

dsp
fonte
4

Parece que o que você procura não é uma maneira de criptografar e descriptografar diretórios, mas uma maneira de trabalhar com o armazenamento criptografado de forma transparente. Observe que o esquema que você propõe, com descriptografia e criptografia em massa, não é muito seguro: deixa as coisas não criptografadas se você não sair normalmente (falha de energia, falha no sistema, laptop roubado ...); e deixa rastros de seus dados confidenciais que um determinado invasor pode encontrar (os dados dos arquivos apagados ainda estão no disco, apenas difícil de encontrar).

Os sistemas Linux atuais oferecem várias maneiras de obter criptografia transparente. Você pode criptografar um volume inteiro com o dm-crypt ou uma de suas alternativas. Existem várias ferramentas disponíveis para criptografar uma árvore de diretórios específica, incluindo ecryptfs (que funciona no nível do kernel) e encfs (que funciona exclusivamente na área do usuário via fusível). (Os três que eu mencionei estão disponíveis no Debian lenny e devem ser oferecidos por todas as suas distribuições.)

Você pode configurar os diretórios criptografados para serem montados quando efetuar login via PAM ( libpam-mountpacote; opção recomendada para ecryptfs) ou através dos scripts de perfil (opção recomendada para encfs). Observe que não há problema em “esquecer de criptografar manualmente”, pois nada é gravado nunca criptografado no disco.

Para melhor proteção, você deve criptografar não apenas seus arquivos confidenciais, mas também outros locais onde dados confidenciais possam ser armazenados por programas. Pelo menos, você deve criptografar sua partição de troca. Outros locais a serem observados incluem /tmp(melhor resolvido criando tmpfs), /var/spool/cupsse você imprimir documentos confidenciais e arquivos por aplicativo em seu diretório pessoal, como caches / históricos da web (por exemplo ~/.mozilla).

Gilles 'SO- parar de ser mau'
fonte
3

Que tal usar o gpgdir ? Isso deve ser programável para login e logout. Você também pode selecionar subdiretórios que devem ser criptografados (você pode querer que os arquivos .bash_rcpermaneçam descriptografados, por exemplo).

Outra alternativa pode ser o Truecrypt . Você pode criar um contêiner para seus dados e criptografar / descriptografá-lo por meio de scripts de shell.

Bran, o Abençoado
fonte
2

Você também pode usar o ecryptfs, que é padrão no Ubuntu e suas distribuições derivadas. É isso que é usado quando o processo de instalação pergunta se você deseja criptografar seu diretório pessoal (http://www.linuxjournal.com/article/9400). A vantagem do ecryptfs é que você não precisa de uma partição separada ou de um arquivo montado em loopback para usá-lo.

Luc Stepniewski
fonte