LUKS Desbloqueio automático de com o arquivo de chaves no servidor ubuntu remoto

1

Existe uma maneira de desbloquear automaticamente uma unidade LUKS no momento da inicialização com o arquivo-chave sendo armazenado em uma máquina remota. A ideia é garantir que os servidores possam reiniciar sem qualquer entrada do usuário. Os servidores estão em uma nuvem pública e não consigo criptografar a partição raiz. Deixar o arquivo-chave na máquina simplesmente derrotaria o propósito da criptografia.

Daí a idéia de ter o arquivo de chave em uma máquina remota conectando-se através de um canal seguro como o ssh.

Mandos parece fazer o que eu quero, mas tenho duas perguntas.
- Toda a documentação refere-se aos sistemas de arquivos raiz. Pode funcionar com qualquer unidade?
- A documentação afirma que só funciona em uma intranet, isso funcionaria se os servidores local e remoto se conectassem via VPN?

É a melhor solução? a única solução?

    
por ludofet 22.11.2017 / 17:18

4 respostas

1

Você tem várias soluções on-line (como aqui ) onde um pequeno servidor ssh (busybox + dropbear) é incluído no initrd para executá-lo no momento da inicialização antes da montagem do sistema de arquivos e deixá-lo ser contatado para fornecer a senha como entrada.

Você pode fazer algo em torno disso: no initrd, dentro do lançamento de um servidor sshd para aguardar a conexão remota, inicie uma conexão ssh com o host remoto armazenando chaves, com chaves ssh específicas, em ordem para obter o arquivo-chave (fazendo um scp), depois desbloqueando o sistema de arquivos local com a chave LUKS.

No entanto, não sem inconvenientes: é claro que você precisa excluir a chave LUKS baixada assim que o desbloqueio for feito ou você não ganhou nada. Ainda melhor se você encontrar uma maneira de tê-lo na RAM apenas pelo tempo necessário e não armazenado em qualquer lugar. Além disso, qualquer invasor capaz de ler o conteúdo de seu initrd pode encontrar a conexão ssh e sua chave ssh, contatar seu host remoto com eles e fazer o download da chave LUKS. Se isso acontecer, significa, no entanto, que o invasor está claramente segmentando você e dedicando tempo para estudar sua configuração específica. Isso está claramente fora do script infantil. Você deve pelo menos analisar cuidadosamente todas as conexões que baixaram a chave, os eventos devem estar vinculados a seus outros alertas de monitoramento mostrando que um determinado servidor está realmente reinicializando (o que novamente não protegerá você contra um invasor que tenha sido capaz de modificar seu initrd).

Você também tem que levar em conta casos em que a rede falha neste momento, scp não consegue conectar, etc ... Assim tendo ao mesmo tempo a opção do pequeno servidor sshd para poder conectar isso e depurar as coisas não é uma má ideia. Ou veja que tipo de soluções fora de banda seu provedor de nuvem pode oferecer.

    
por 22.11.2017 / 17:55
0

Mandos seems to do what I'm after but I've got two questions on it. - All the documentation refers to the root file systems. Can it work with any drive?

Bem, o pacote mandos-client supõe que você queira usá-lo para descriptografar o sistema de arquivos raiz, e todos os seus binários têm padrões que os tornam mais fáceis de usar no ambiente initramfs. Mas é certamente possível executá-lo em outro lugar. Para executar o binário "mandos-client" do ambiente normal do sistema, seriam necessárias estas opções: --seckey=/etc/keys/mandos/seckey.txt --pubkey=/etc/keys/mandos/pubkey.txt --network-hook-dir=/etc/mandos/network-hooks.d

  • The documentation states that it only works on an intranet, would that work if the local and remote servers connects via a VPN?

Sim, usando a opção --connect para mandos-client e configurando o servidor Mandos para usar um número de porta estática (usando a opção port no arquivo mandos.conf ). Normalmente, quando se deseja usar um servidor que não é da intranet, configurar um endereço IP e rotear no lado do cliente também é uma preocupação, mas como você não está criptografando a partição raiz, você não tem esse problema.

    
por 29.08.2018 / 20:42
0

tang e clevis pode conseguir isso mesmo com a partição raiz criptografada no CentOS 7 (e eu pessoalmente a uso para automatizar a inicialização na minha rede doméstica e no trabalho). Dê uma olhada e verifique se ele se conecta à sua VM.

    
por 29.08.2018 / 22:29
0

Eu usei o Mandos para armazenar e recuperar a frase secreta para desbloquear o sistema de arquivos raiz, permitir reinicializações não assistidas e simplesmente armazenar chaves para todos os outros volumes usados por esse sistema em um arquivo nesse volume raiz criptografado.

Eu usei mandos em uma conexão WAN (configurando o DHCP e o endereço IP do servidor mandos no sistema do cliente, em vez de confiar no Zeroconf, que só funciona na LAN local) sem se preocupar com uma conexão VPN.

    
por 29.08.2018 / 22:58