Como melhor criptografar e descriptografar um diretório através da linha de comando ou script?

8

Eu tenho um diretório de arquivos de texto sob controle de versão bazar e manter uma cópia (um ramo, 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 seria capaz de ter um script executado no logout para verificar se o diretório está criptografado e criptografá-lo se não, tudo sem intervenção do usuário. No entanto, não quero que o diretório seja descriptografado no login. (Eu quero o script como um protetor contra o esquecimento de criptografar manualmente. Isso é especialmente importante para o netbook.)

Eu estou rodando ubuntu 10.04.1 e duas versões do crunchbang linux, uma derivada de ubuntu 9.04 , ou a de um snapshot do final de junho do repositório Debian Squeeze.

Qual é a melhor maneira de fazer isso?

(tentei marcar com encryption e directories , mas falta o representante para criar uma tag.)

    
por vanden 20.08.2010 / 11:04

4 respostas

5

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

crie um arquivo contêiner para o fs criptografado:

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

liga o arquivo contêiner ao dispositivo de loopback 0:

losetup container /dev/loop0

cria um dispositivo criptografado (-y pergunta por senha duas vezes; divisão de linha por \ ):

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

crie o 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 crypt:

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 os comprimentos de cifra e chave a serem usados, etc.

    
por 20.08.2010 / 12:17
4

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

Os sistemas Linux atuais oferecem várias maneiras de obter criptografia transparente. Você pode criptografar um volume inteiro com 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 puramente no território do usuário via fusível). (Os três que eu menciono estão disponíveis no Debian lenny e devem ser oferecidos por todas as suas distribuições.)

Você pode configurar os diretórios criptografados a serem montados quando você efetuar login via PAM ( libpam-mount package; opção recomendada para ecryptfs) ou através de seus scripts de perfil (opção recomendada para encfs). Observe que não há nenhum problema em "esquecer de criptografar manualmente", pois nada é gravado sem criptografia 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 swap. Outros locais a serem observados incluem /tmp (melhor resolvido tornando tmpfs ), /var/spool/cups se você imprimir documentos confidenciais e arquivos por aplicativo em seu diretório inicial, como caches da web / históricos (por exemplo, ~/.mozilla ). / p>     

por 20.08.2010 / 15:23
3

Que tal usar o gpgdir ? Isso deve ser roteirizado para login e logout. Você também pode selecionar subdiretórios que devem ser criptografados (pode ser que arquivos como .bash_rc permaneçam descriptografados, por exemplo).

Outra alternativa pode ser Truecrypt . Você pode criar um container para seus dados e criptografá-los / descriptografá-los via shell scripts.

    
por 20.08.2010 / 11:24
2

Você também pode usar o ecryptfs, que é padrão no Ubuntu e em suas distribuições derivadas. É o 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.

    
por 20.08.2010 / 14:04