Inicialização Automática e Protegendo um Servidor Linux com um Sistema de Arquivos Criptografado

16

Estou configurando alguns novos servidores Ubuntu e gostaria de proteger os dados contra roubo. O modelo de ameaça são os invasores que desejam o hardware ou invasores bastante ingênuos que desejam os dados.

Por favor, tome nota desta seção.

O modelo de ameaça não inclui invasores inteligentes que desejam os dados; Eu presumo que eles farão um ou mais dos seguintes procedimentos:

  1. Juntar um no-break ao cabo de energia para manter a máquina funcionando continuamente.

  2. Insira um par de pontes Ethernet entre o computador e o ponto de terminação de rede que interligará o tráfego em uma rede sem fio de alcance suficiente para que o host mantenha a conectividade de rede.

  3. Abra a caixa e use uma sonda no barramento de memória para pegar coisas interessantes.

  4. Use dispositivos TEMPEST para investigar o que o host está fazendo.

  5. Use meios legais (como uma ordem judicial) para forçar-me a divulgar os dados

  6. Etc. Etc.

Então, o que eu quero é ter alguns, ou idealmente todos, os dados no disco em uma partição criptografada, com o material chave necessário para acessá-lo em algum tipo de mídia externa. Dois métodos em que posso pensar para armazenar o material principal são:

  1. Armazene em um host remoto acessível através da rede e configure o suficiente da rede para recuperá-lo durante o processo de inicialização. A recuperação seria permitida apenas para o endereço IP atribuído ao host protegido (não permitindo acesso aos dados criptografados se fosse inicializado em outra conexão de rede) e poderia ser desabilitado pelos administradores se a máquina fosse descoberta roubada.

  2. Armazene em um dispositivo de armazenamento USB que seja feito de maneira muito mais difícil de roubar que o próprio host. Localizá-lo remotamente do host, como no final de um cabo USB de cinco metros que leva a outro canto da sala, ou até mesmo a outro quarto, provavelmente diminuiria significativamente as chances de invasores pegá-lo. Protegendo-o de alguma forma, por encade-lo a algo imóvel, ou até colocá-lo em um cofre, funcionaria ainda melhor.

Então, quais são minhas opções para configurar isso? Como eu disse antes, eu preferiria ter tudo (além de uma pequena partição de inicialização que não contenha / etc) criptografada, para que eu não precise me preocupar com onde eu estou colocando arquivos, ou onde eles estão está pousando acidentalmente.

Estamos executando o Ubuntu 9.04, se isso faz alguma diferença.

    
por Curt J. Sampson 02.07.2009 / 04:18

2 respostas

8

Eu conheço uma variante inteligente da Opção 1 chamada Mandos.

Ele usa uma combinação de um par de chaves GPG, Avahi, SSL e IPv6, todos adicionados ao seu disco RAM inicial para recuperar com segurança a senha da partição raiz. Se o servidor Mandos não estiver presente na rede local, seu servidor for um bloco criptografado ou o servidor Mandos não tiver visto uma pulsação do software cliente Mandos por um determinado período de tempo, ele ignorará as solicitações futuras para esse par de chaves e o servidor é um bloco criptografado na próxima vez que for inicializado.

Homepage de Mandos

LEIA-ME do Mandos

    
por 02.07.2009 / 05:53
6

Se você está apenas procurando se proteger contra invasores não técnicos, acho que sua melhor aposta é uma melhor segurança física.

Meu pensamento é assim:

Se você estiver procurando por uma bota que não exija interação humana para inserir material-chave, não encontrará nenhuma solução que esteja protegida contra roubo casual por um invasor com habilidades técnicas (ou mais apropriadamente, a capacidade de pagar alguém com habilidades técnicas).

Colocar material-chave em algo como um pendrive USB não ofereceria qualquer segurança real. O invasor pode simplesmente ler a chave do pen drive. O pen drive não pode saber se o computador em que ele está conectado está no computador do servidor ou no laptop do invasor. Tudo o que o atacante tem a fazer é ter certeza de que eles levam tudo ou, no caso da sua chave USB, no final de um cabo USB de 15 pés preso dentro de um cofre, basta conectar o cabo de extensão ao PC e ler a chave.

Se você for transferir a chave pela rede, provavelmente "criptografará" a mesma. Tudo o que o invasor precisa fazer é espionar o processo de digitação, roubar o servidor e, em seguida, fazer a engenharia reversa de qualquer "criptografia" que você fez quando enviou a chave pela rede. Por definição, o computador servidor que recebe uma chave "criptografada" da rede precisa ser capaz de "descriptografar" essa chave para usá-la. Então, na verdade, você não está criptografando a chave - você está apenas codificando.

Em última análise, você precisa de uma inteligência (artificial?) presente para inserir a chave no servidor. Uma que pode dizer "Eu sei que não estou divulgando a chave para ninguém além do computador servidor e sei que ela não foi roubada". Um humano pode fazer isso. Um pen drive USB não pode. Se você encontrar outra inteligência que possa fazer isso, então acho que você terá algo comercializável. > sorriso <

É mais provável, creio eu, que você perca a chave e destrua seus dados sem ganhar segurança. Em vez de sua estratégia com jogos de criptografia, acho que é melhor ter uma segurança física mais strong.

Editar:

Acho que estamos trabalhando a partir de diferentes definições do termo "modelo de ameaça", talvez.

Se o seu modelo de ameaça for o roubo de hardware, então a sua solução proposta re: criptografia de disco é, no meu entender, não fazer nada para neutralizar a ameaça. Sua solução proposta parece uma contramedida contra o roubo dos dados, não o roubo do hardware.

Se você quiser impedir que o hardware seja roubado, é necessário parafusá-lo, travá-lo, encaixá-lo em concreto, etc.

Eu já disse o que eu queria dizer: roubo dos dados, então não vou insistir nisso novamente, exceto para dizer: se você vai colocar a chave em um dispositivo físico e você pode é possível proteger o computador do servidor de ser roubado, então você não pode proteger o dispositivo de chave seja roubado também.

Acho que sua melhor solução "barata" é montar algum tipo de troca de chaves baseada em rede. Eu coloquei um ou mais humanos no loop para autenticar o "lançamento" da chave no caso de uma reinicialização. Isso causaria tempo de inatividade até que o humano "liberasse" a chave, mas pelo menos lhe daria a chance de descobrir por que uma "liberação" estava sendo solicitada e decidir se deveria ou não fazê-lo.

    
por 02.07.2009 / 04:34