Eu tenho um servidor doméstico rodando em um HP Proliant Microserver Gen7 com 10 GB de memória ECC rodando Debian 8 (jessie). No momento, tenho um pequeno disco de sistema (com backup usando rsnapshot) e 2 discos de armazenamento de 3 TB configurados como Raid 1 usando mdadm. Além disso, tenho grupos LVM para finalidades diferentes, um deles - é adicionalmente criptografado por dm-crypt / luks para manter dados privados.
Estou planejando comprar dois HD adicionais do mesmo tamanho para o pool de armazenamento e provavelmente configurar o servidor do zero, definitivamente usando o debian novamente, mas provavelmente sob a virtualização xenserver desta vez. Portanto, o pool de armazenamento seria de 4x 3 TB, com Raid1 deixando 6 TB utilizáveis, com Raid5 (ou raidz1) 9 TB.
Embora a combinação de mdadm/lvm/dm-crypt funcione bem, acho-a incrivelmente complexa, especialmente para planejar uma estratégia fácil de recuperação de desastres. Preciso pesquisar para cada uma das camadas qual é o melhor processo de backup e restauração de metadados, etc.
Em um mundo perfeito, eu faria de todo o armazenamento um pool raidz1 criptografado, MAS a criptografia ainda não chegou ao Zfs no Linux e, pela minha pesquisa, não está totalmente claro QUANDO se pode esperar que ela seja implementada
O Btrfs tem um pouco da mesma situação: pelo menos parece produção estável - mas, infelizmente - a criptografia também só chegará em um futuro imprevisível.
Portanto, dos sistemas de arquivos que eu prefiro usar, ambos não suportam criptografia nativamente no Linux (ainda). Bem, há um monte de instruções e tutoriais sobre como usar LVMs criptografados LUKS em conjunto com ZFS ou BtrFS. Existe a abordagem de usar o LVM sobre o ZFS ou o ZFS sobre o LVM - para mim, isso parece uma bagunça horrível.
Eu não gosto nada do conceito de EncFS, então essa também não é uma opção.
Esperançosamente, existem algumas opções das quais não ouvi falar, por isso minha pergunta aqui: O que mais existe para conseguir isso de um "fácil (como em extensível etc. como zfs, correção de erros) para gerenciar o sistema de arquivos para escolher no Linux para servidor doméstico, que pode ser criptografado completamente ou em partes?
ATUALIZAÇÃO de dezembro de 2017: ZFS no Linux com criptografia em breve: https://blog.heckel.xyz/2017/01/08/zfs-encryption-openzfs-zfs-on-linux/
Responder1
mdadm / lvm / dm-crypt é provavelmente sua melhor aposta - e não é tão complexo assim - você apenas lida com cada camada apropriadamente - ou, dependendo de suas necessidades, mdadm /dm-crypt/lvm (se você quiser que todos os LVs sejam compartilhar um único dispositivo com 1 senha)
Você está certo em não usar encfs -é inseguro.
Responder2
se você escolher a configuração do ZFS, eu sugeriria:
não use LVM, crie ZVOLs no topo do pool
para SO - partição GPT para pool ZFS não criptografado com espelho (ou raidz)
- para dados privados - use LUKS na partição GPT e, em seguida, crie um espelho de pool ZFS (ou raidz)
após a inicialização, você faz login via ssh, digita a senha para partições criptografadas e importa o pool que está no topo do LUKS e inicia as máquinas virtuais (é melhor escrever um script de shell)
então o esquema sugerido éGPT/LUKS/ZFS/dados ou ZVOL para VM
não esqueça de fazer uma partição BIOS (tamanho 1M) se você não usa boot UEFI também não esqueça de fazer uma partição para GRUB, tipo 150M
para io aleatório pesado, sugiro desativar a pré-busca do ZFS (echo 1 > /sys/module/zfs/parameters/zfs_prefetch_disable)
Responder3
Este é um conselho para todos que desejam alguns dados criptografados, sempre criptografar 100% de todo o armazenamento possível que está conectado ao computador, não importa se é a partição Grub, partição do sistema, partição inicial, partição de dados, swap, etc. CRIPTOGRAFAR TUDO.
Por que? Porque você não controla onde os dados são salvos pelos aplicativos/sistema.
Sequência de eventos de amostra do Disarter:
- Inicialização normal
- Use um aplicativo
- Abra um documento ‘privado’
- Falha no sistema (software ou hardware)
- A próxima inicialização não funciona
- Um dispositivo acabou com sua vida útil (não funciona novamente)
Você não pode apagar o que está nesse dispositivo (não está funcionando), você não pode ler, então, o que foi salvo lá? talvez algo 'privado'? Você não pode nem saber o que nem onde.
Mas outra pessoa (talvez com alguns milhões de dinheiro no bolso) cuidou disso, então você não pode colocar esse dispositivo no lixo, não até que você confirme que os dados 'privados' não estão lá... mas você não pode saber a menos que você dê o dispositivo para uma empresa, mas novamente 'privado' está em risco, talvez eles o 'copiem' (pessoa má que trabalha lá, etc.).
Pergunte o seguinte: você conhece cada linha fonte de todo o código que você usa (código de inicialização, código do sistema, código de aplicativos, etc), código fonte que você compila sozinho... e nunca usa nenhum tipo de 'binário'. . então você deve ter compilado com lápis e papel o compilador.
Caso contrário, você usa um código que não sabe o que faz.
Nota lateral: Se você precisar usar dados 'privados', nunca mais conecte esse computador à Internet... talvez alguma parte do aplicativo que você usou tenha salvo alguns dados e em um futuro longo os envie para servidores da Internet.
Exemplo extremo: você usa um aplicativo de gravação para ler um arquivo TXT, ele tem um código oculto para salvá-lo escondido em algum lugar... então, depois de alguns anos de atualizações, esse aplicativo (ou outro) tem um código oculto para ler os dados salvos ocultos e enviou-o para um servidor de Internet ou computador de terceiros, etc.
Os casos são extremos? Eu os aprendo da maneira mais difícil... no meu Linux, digite um troyan (dentro de um aplicativo que quero usar) aparentemente não faz nada (não tem conexão de soquete, etc), mas estava registrando algum tipo de 'gravação' no disco e fazendo uma gravação dupla... depois de quase duas semanas outro toyan pegou essa informação e tentou enviá-la para um IP.. meu Deus, eu tinha outro computador no 'meio' da minha conexão com a internet (sim, claro que estou e fiquei totalmente paranóico, isso me salvou) de 'descobrir' aquelas conexões e 'bloqueá-las'... sem falar que só uso 'Linux' já que com Windows isso não pode estar sob controle. Esses troyans estavam lá sem o conhecimento do autor do aplicativo, eles foram injetados quando o aplicativo foi armazenado no repositório. Espero que entenda, prefiro não dizer qual aplicativo foi 'consertado' desde agora... quem sabe desde quando!
Você acha que estou pensando apenas em troyan, coisas ocultas, etc., de jeito nenhum, lembre-se de swap, arquivos temporários, etc ... alguns aplicativos salvam o documento que você está usando / criando para ajudá-lo a não perder o que você fez , onde diabos eles salvam esses dados? Não é necessário em sua partição criptografada, talvez em SWAP, pasta temporária ou em geral onde o autor do aplicativo deseja, então você nem sempre pode saber onde ele está salvo... novamente criptografar tudo.
Ah, sim, grub.cfg pode residir dentro de um RAID0, LUKS sobre LUKS ... sobre LUKS, etc. Você só precisa de uma partição muito pequena para o estágio 1.5 ou 2 de 8 MiB ou menos em não formatado (bulk dump) para permitir que o Grub2 boot... procure a partição BIOS GRUB na internet.
Desculpe, ainda não experimentei o ZFS e não tenho certeza se os arquivos Grub (grub.cfg, etc) podem residir dentro de um ZFS ... mas testei tê-los em: Ext4 sobre LVM sobre LUKS sobre LVM sobre LUKS ... e assim por diante alguns níveis ... sobre LUKS sobre um GPT real (também em um MBR) sem partição EFI e inicializa ok ... só precisei adicionar as extensões 'crypto' e 'lvm', ao instalar o grub2 ... prefiro digitar meu próprio grub.cfg, então nunca uso nada além do grub2-install relacionado ao grub2 (novamente sou paranóico).
Eu sempre uso como bootloader principal meu próprio grub.cfg que chama outros bootloaders, dessa forma deixo o sistema gerenciar seu próprio bootloader sem tocar no principal que edito manualmente com um editor de texto.
Desculpe, sou um paranóico total.
O que você deve pensar? Se houver algum 'lugar' onde dados não criptografados possam ser gravados/lidos, qualquer tipo de dado 'privado' é uma falta total, às vezes pode ser escrito nessa parte não criptografada. Para estar seguro, nunca tenha nenhuma parte não criptografada.
PD: Se você usar uma partição EFI, lembre-se de que qualquer código pode ser gravado nela, pois ela não tem proteção alguma e é uma partição FAT32 não criptografável.
PPD: Onde podem ser armazenados os dados em um FAT32? Em qualquer lugar, também em espaço livre. E em Ext4? Exatamente o mesmo... sempre criptografe todo o armazenamento.