[resolvido]: Dúvidas sobre criptografia de /home (LUKS, dm-crypt, eCryptfs, etc)

Iniciado por supershow, 08 de Setembro de 2009, 13:20

tópico anterior - próximo tópico

supershow

Olá pessoal,

Depois de ver algumas coisas comecei a pensar a respeito da implementação de criptografia do /home dos usuários. Mas me ocorreram algumas dúvidas um tanto quanto estruturais. O cenário chave é o seguinte: Tendo uma partição para o /home, e alguns usuários configurados para esse sistema  user1, user2, user3, etc. Tem como criptografar esse /home de modo que um usuários não possa ter acesso aos dados de outro, mesmo que tenha acesso físico ao computador (digamos tente usar um liveCD). A ressalva é de que o root tenha como descriptografar todos os homes (digamos por uma requisção legal). Tipo: o user1 não pode usar sua passphrase pra ver os dados de /home/user2, mas se o root quiser ele pode ver /home/user1, /home/user2, /home/user3, etc.

Esse cenário pode ainda ser expandido: os homes estando num servidor que atenda a dezenas/centenas de terminais clientes em que os usuários pudessem se logar sem complicações. Para piorar lembrei do cenário de tudo rodando sobre LDAP, ainda com a necessidade do home do usuário conter o profile dele do Windows - usar o servidor Linux de homes criptografado para logar em máquinas windows.

Andei dando uma pesquisada mas não consegui entender direito em relação ao acesso de múltiplos usuários ao /home. Quero o home todo criptografado (se alguém roubar a HD não tem direito de mexer), mas se o root precisar ele poder recuperar esses dados. Tipo: esconder os dados dos usuários de outros usuários e de ataques externos, mas não ter nó com auditoria, nem nada.

Pelo how-to que li no forum ( http://ubuntuforum-br.org/index.php/topic,21340.0.html ) o /home/fulano não ficaria todo criptografado, mas apenas o que o usuário movesse para um outro ponto de montagem.

Nesse link ele usa LVM ( http://blog.gnist.org/article.php?story=EncryptedSwapAndHomeUbuntu ), mas o caso é que pelo que entendi o /home é criptografado para um só usuário. Isso pode até ser funcional para um notebook, mas não para um cenário de vários usuários, nem muito menos do servidor+clientes.

Ainda olhei esse link ( http://www.brighthub.com/computing/linux/articles/8958.aspx ) que parece criar apenas uma área dentro de cada home para arquivos sensíveis. Esse do Arch ( http://wiki.archlinux.org/index.php/LUKS_Encrypted_Root ) também fala sobre LUKS e dm-crypt para criptografar partição, mas não consegui entender se supre o problema de múltiplos usuários. Esse pra o debian ( http://www.saout.de/tikiwiki/tiki-index.php?page=HOWTO ) continua sem me responder se esse /home pode ser usado por vários usuários. Imagina se tem 4 usuários no PC, ter de criar quatro partições uma pra cada fulano...

Acho que a pergunta chave é:
1. Quanto desse cenário é possível?

As outras seriam:
2. O cenário ampliado (servidor) é possível?
3. E pra integrar com clientes Windows?
4. Quais os defeitos que vocês vêem nesses cenários?

[ ]'s

Somnambulist [999th Night... ] - OTHAKU
Théo
Ubuntu 10.04

supershow

Finalmente achei algumas coisas e um colega me deu algumas respostas. Pesquisando novamente refraseei a busca e achei algo mais claro. Então vou tentar compartilhar com vocês esse conhecimento.

É possível utilizar sistemas de arquivos criptografados para fazer isso de cada pasta do home ser criptografada com uma chave diferente. O que impede de se alguém levar a HD os dados ficarem expostos. São sistemas de arquivos criptografados que rodem a nível de usuário como por exemplo o EncFS. Tem um how-to para ubuntu: https://help.ubuntu.com/community/EncryptedHomeDirectoryHowto. Eles criptografam cada arquivo/pasta de maneira independente. Existem vantagens e desvantagens em relação a criptografia de bloco:

Vantagens:
+ Não tem tamanho fixo. Conforme for usando cresce ou decresce, sem ter de manter uma partição com um tamanho engessado para os dados criptografados;
+ É possível que alguns diretórios no ponto de montagem existirem em dispositivos físicos diferentes, se um sistema de arquivos é montado sobre uma das subpastas da pasta raiz do sistema de arquivos criptografado;
+ Backup pode ser feito apenas nos arquivos que mudaram

Desvantagens:
- Visibilidade dos meta-dados. Isso implica que são visiveis: o número de arquivos, as permissões de leitura e escrita, o tamanho de cada arquivo, o tamanho aproximado de cada nome de arquivo (mesmo o nome do arquivo em si sendo criptografado).

Para o EncFS parece que é possível habilitar o root como "abridor de todas as portas" usando a diretiva de allow_root. Acho necessário que o root possa decodificar os dados tanto por razões legais (vai que mandam disponibilizar os arquivos de alguém), ou para o cenário mais óbvio: usuários esquecem as senhas. Teria de recuperar os arquivos (imagina o sysadmin dizer que o projeto de dois meses está irrecuperável?). Mas fazer com que o acesso físico ao computador/HD não permita que os dados alheios sejam visualizados mesmo por bisbilhoteiros que tenham uma conta no sistema (e uma chave de decriptografia).

Apesar das vantagens dos sistemas de arquivos criptográficos como o EncFS, quero um modo de fazer essas coisas num sistema de criptografia de bloco, apesar das desvantagens de criptografia de bloco. Só não sei se é possível.

P.S.: Um outro sistema de arquivos criptografados que não criptografa os nomes dos arquivos, mas o apenas conteúdo é o ecryptfs. O que daria visibilidade de hierarquia de pastas e nomes de arquivos (o que já pode ser dados sensíveis). How-to para ubuntu: https://wiki.ubuntu.com/EncryptedHomeFolder
Ubuntu 10.04

aleksandre

Supershow,
Com o Ubuntu 9.10 isso agora já vem implementado; mas você já deve saber disso.
Só ainda não sei qual é o sistema de criptografia e como funciona em sua totalidade.
Eu mesmo instalei o Karmic em meu laptop com criptografia do meu home mas estou preocupado como farei em uma possível atualização do sistema ou até mesmo, por um eventual acidente, ter que reinstalar o sistema.
Pior é que acabei sobrescrevendo a pasta oculta .gpg por outra que sempre uso em reinstalações e me preocupa se isso interferirá em alguma coisa.
No primeiro boot teve até um assistente pedindo pra eu anotar uma chave mas não tenho idéia de como usá-la no futuro.

Alguém tem idéia de como eu poderia descriptografar meu home fora do ambiente gráfico ou até mesmo através de um liveCD usando essa chave que o assistente me passou? Gostaria de testar para não ter problemas no futuro.