Quando instalei o Ubuntu 10.04 e, agora, 10.10, me foi oferecida a opção de ativar o "LVM criptografado" para o meu disco rígido. Depois de escolher essa opção, minha senha é solicitada durante a inicialização para descriptografar o LVM.
Agora, estou pensando em configurar um servidor sem cabeça que execute o Linux (não necessariamente o Ubuntu), mas estou preocupado que, como o servidor não tenha cabeça, não será possível decifrá-lo durante a inicialização. Eu seria capaz de fazer o SSH durante a inicialização para inserir minha senha para o LVM criptografado? Se sim, como faço para configurá-lo? Ou há outra solução? Novamente, essa pergunta NÃO é específica para o Ubuntu. Obrigado.
zless /usr/share/doc/cryptsetup/README.remote.gz
Respostas:
Para versões mais recentes do ubuntu, por exemplo, 14.04, achei uma combinação de @dragly e as respostas deste post de blog muito úteis. Parafrasear:
(No servidor) Instale o Dropbear
(No servidor) Copie e atribua permissões para o login raiz de chave pública / privada
lembre-se de alterar o usuário para o seu nome de usuário no servidor
(No cliente) Buscar chave privada do servidor
(No cliente) Adicione uma entrada ao ssh config
(No servidor) Crie este arquivo em
/etc/initramfs-tools/hooks/crypt_unlock.sh
(No servidor) Torne esse arquivo executável
Atualize o initramfs
Desative o serviço dropbear na inicialização para que o openssh seja usado após a partição ser descriptografada
Você Terminou. Experimente. Verifique a postagem do blog vinculada acima para obter instruções sobre como configurar o servidor com um endereço IP estático, se você precisar fazer isso.
fonte
/etc/initramfs-tools/root/.ssh/authorized_keys
, mesmo que ele ainda copie a chave privada do Dropbear, que pode ser totalmente desconsiderada. Seguir o restante das instruções funciona para mim, o que significa que essa deve ser a resposta aceita (uma vez que reflete essa alteração), porque ela usa apenas chaves públicas.Um guia para fazer essa configuração com o BusyBox e o Dropbear é mostrado nesta postagem do blog . O early-ssh não funcionou para mim e aparentemente não é mais necessário.
Resumi o que você precisa fazer a seguir. Para mais detalhes, dê uma olhada na postagem acima:
Instale o BusyBox e o Dropbear no seu servidor
Atualize seu initramfs no servidor
Copie a chave privada gerada pelo dropbear na sua máquina cliente. Talvez você precise copiar isso para um novo diretório e alterar a propriedade para fazer isso. No seu servidor, faça o seguinte:
Lembre-se de substituir o usuário pelo seu nome de usuário. Os logins de senha não parecem funcionar.
Agora você pode transferir a chave privada com scp chamando o seguinte em seu cliente :
Configure o arquivo ~ / .ssh / config do seu cliente para facilitar o login. Abra-o com um editor de texto e adicione o seguinte:
Mude o Host para o que quiser e HostName para o nome do seu servidor. Deixe o usuário ser root. Parece ser o único usuário aceito no Dropbear. Salve e feche o arquivo.
Reinicie o servidor e aguarde o prompt da senha. Dê ao Dropbear alguns segundos para detectar e configurar sua conexão com a internet. Conecte-se ao seu servidor com o seguinte comando no seu cliente :
Quando estiver logado, emita o seguinte comando no seu servidor . Veja a postagem do blog para obter detalhes:
Levará algum tempo (30 segundos) antes de você digitar sua senha. Digite-o quando solicitado.
Feche a conexão digitando
Seu servidor agora deve ter desbloqueado seu disco rígido criptografado e inicializado normalmente.
(Muito obrigado ao autor original da postagem do blog!)
fonte
Eu acho que o early-ssh fornece o que você está procurando:
Já existe um pacote .deb disponível, então você provavelmente está bem com o Ubuntu.
fonte
Dê uma olhada no leia-me do cryptsetup para isso em
/usr/share/doc/cryptsetup/README.remote.gz
(pacote Ubuntucryptsetup
). Existe um guia completo para fazer isso. É semelhante à resposta de dragly , mas acho que isso é um pouco mais elegante. (Chaves formatadas pelo Dropbear, passando a senha por meio de um FIFO em vez de um script de shell frágil etc.)Obrigado ao jap por me indicar isso em um canal diferente.
fonte
read -s -p
.Se você deseja inicializar de forma autônoma e remota, consulte Mandos (que eu e outros escrevemos):
Em resumo, o servidor de inicialização obtém a senha pela rede, de forma segura. Consulte o README para obter detalhes.
fonte
Servidor sem cabeça? Se tiver uma porta serial, use-a.
O GRUB pode ser configurado para funcionar na porta serial. Seu kernel também pode ser configurado, use a porta serial para emitir as mensagens de inicialização iniciais, digitar a senha para desbloquear suas unidades e fazer login. (Se o servidor suportar BIOS serial, ative-o também. Você nunca precisará se conectar um monitor para a máquina).
Sempre é uma boa idéia ter uma maneira "não relacionada à rede" de acessar um servidor sem cabeça.
fonte
No arch linux, existe um pacote AUR dropbear_initrd_encrypt que faz o que você deseja fora da caixa. Funciona muito bem para interfaces com fio. Eu tive que cortá-lo um pouco para wireless.
fonte
Infelizmente, nenhuma das respostas acima funcionou para mim. Além disso, copiar uma chave privada do servidor parece paradoxal.
De qualquer forma, as seguintes instruções foram elaboradas:
Inicialize o seu servidor conectando e desbloqueando a partição criptografada através do seu CLIENT
Instale pacotes obrigatórios (no SERVER)
Anexe as chaves públicas desejadas ao arquivo allowed_keys do SERVER
Basta copiar e colar suas chaves públicas
/etc/dropbear-initramfs/authorized_keys
no SERVERCrie o script de desbloqueio
Crie o seguinte script em
/etc/initramfs-tools/hooks/crypt_unlock.sh
Torne executável:
Crie um IP estático (ou pule esta etapa para usar o DHCP)
Edite
/etc/initramfs-tools/initramfs.conf
para adicionar (ou alterar) a linha:Atualizar initialramfs
Desative o serviço dropbear na inicialização para que o openssh seja usado após a partição ser descriptografada
Testando
ssh [email protected] [-i ~/.ssh/id_rsa]
fonte
No debian 9 (stable), esta solução estava desatualizada. Durante a instalação, recebo um aviso
dropbear: WARNING: Invalid authorized_keys file, remote unlocking of cryptroot via SSH won't work!
e não consegui encontrar as chaves necessárias. Este método é realmente simples e me foi explicado no ótimo canal #debian (obrigado novamente):Primeiro, verifique se
busybox
,dropbear
edropbear-initramfs
está instaladodepois adicione sua chave pública (na maioria das vezes
~/.ssh/id_rsa.pub
) ao arquivo/etc/dropbear-initramfs/authorized_keys
.Atualize
initramfs
para ter em conta as alterações:: update-initramfs -uIsso é tudo!
Observe que, se você deseja evitar um conflito entre as chaves entre
dropbear
eopenssh
(elas compartilham o mesmo ip, mas usam uma chave diferente), convém colocar no cliente~/.ssh/config
algo assim:Em seguida, basta conectar usando:
e depois de receber um prompt, digite como sugerido pelo prompt do busybox:
e digite sua senha.
Desfrutar!
fonte
Eu escrevi um papel Ansible que faz isso por você. Apenas pegue a função debops-contrib.dropbear_initramfs e execute-a. Consulte a documentação da função para obter detalhes.
fonte
Estou usando a técnica explicada por outras pessoas nesta página (SSH no initramfs com um
IP
parâmetro do kernel para configurar a rede) há alguns anos para desbloquear remotamente servidores Ubuntu Linux sem cabeça (12.02, 14.04, 16.04 e 18.04).Até cheguei ao ponto de desenvolver um programa Python ( unlock-remote-system ) que faz o verdadeiro desbloqueio para mim, porque o processo de fazer isso manualmente parecia um pouco frágil e comecei a temer reiniciar meus servidores, por isso, no espírito de "se dói, vale a pena automatizar" codifiquei meu conhecimento em Python 😇 (e isso de fato tornou muito mais fácil fazer reinicializações regulares para aplicar atualizações de segurança).
Desde então, decidi compartilhar também minhas anotações pessoais sobre criptografia de disco raiz remota com o mundo. A página vinculada contém alguns detalhes sobre o procedimento (também algumas dicas que não são mencionadas aqui) e pretendo mantê-lo atualizado.
fonte