raiz bloqueada para fora do EC2

8

Eu estava no processo de desativar logins raiz em uma instância do AWS EC2. Logo após definir o PermitRootLogin no e reiniciar o sshd, fechei o terminal por acidente - antes de configurar usuários com privilégios de sudo. O resultado é que minha chave para acessar a instância como root não funciona (o sshd a proíbe) e, quando entro na instância usando meu usuário comum, não consigo obter privilégios de root (a senha raiz nunca foi definida). A instância está executando o ubuntu 8.10. Alguém tem alguma idéia de como posso corrigir isso?

Jeff Atwood
fonte

Respostas:

9

Não, não encerre a instância, nem tudo está perdido !!

  1. inicialize outra instância e desligue a instância incorreta.
  2. desanexe o volume EBS da instância incorreta e anexe-o à nova instância.
  3. Monte-o na nova instância (ou seja, algo como sudo mount / dev / xvdf1 / mnt /)
  4. chroot nele (sudo chroot / mnt) e digite passwd.
  5. redefina a senha ou faça outras alterações que desejar (vi / etc / ssh / sshd_config, por exemplo!)
  6. Pressione Ctrl-D ou digite exit para sair do chroot.
  7. umount / mnt
  8. desanexe o volume EBS da sua instância temporária
  9. reconecte ou faça um snap e crie uma nova AMI com base nesse instantâneo
  10. Inicialize a caixa fixa de volta!

PS da próxima vez, tente o Userify para gerenciar as chaves dos seus usuários :)

erro fatal
fonte
11
Nota: isso não funcionará se você lançou a instância no mercado da AWS (essas instâncias não podem ter seus volumes raiz montados em outro lugar). Isso inclui certas distribuições de código aberto, como o CentOS.
fatal_error
3

Sem encontrar uma vulnerabilidade, a única maneira de obter acesso root em uma máquina Linux é inicializar no modo de usuário único e redefinir a senha. No entanto, você não possui acesso no nível KVM em uma instância do EC2, portanto, isso não é possível.

Você precisará encerrar a instância do EC2 e iniciar outra. Desabilitar logins raiz é contra o paradigma geral do EC2. A Amazon sugere que você forneça uma chave pública no momento da inicialização da instância e tenha um script init instalado em /root/.ssh/authorized_keys, com o sshd configurado como 'PermitRootLogin sem senha' para forçar apenas os logins do par de chaves. Dessa forma, você nunca pode acidentalmente se bloquear da sua conta root (desde que você não perca sua chave privada).

No futuro, sugiro que você crie um usuário com acesso sudo e inicie uma sessão de 'tela' assim que fizer login, para que uma desconexão não pare / quebre seu trabalho. Depois de configurar e instalar seu aplicativo, agrupe, faça upload e agrupe sua AMI para que você possa iniciar novas instâncias quando necessário.

Victor Trac
fonte
+1 para a sugestão de tela, embora eu prefira tmux .
H0tw1r3 30/07
A solução abaixo - montar o volume do EBS funcionaria nesse caso - supondo que a instância tenha um EBS que seja.
precisa saber é o seguinte
1

Você tem uma AMI salva com as alterações feitas em sua instância antes de desativar os logins raiz? Caso contrário, você precisará voltar à AMI base com a qual iniciou e criar uma nova instância do EC2.

gareth_bowles
fonte
-1

Uma maneira de fazer isso é encontrar vulnerabilidades locais em seu sistema, que podem conceder a você um shell raiz. Obtenha uma lista dos softwares que estão instalados na caixa e google / securityfocus cada um deles.


fonte