root verrouillé sur EC2

8

J'étais en train de désactiver les connexions root sur une instance AWS EC2. Juste après avoir défini PermitRootLogin no et redémarré sshd, j'ai fermé le terminal par accident - avant de configurer les utilisateurs avec les privilèges sudo. Le résultat est que ma clé pour entrer dans l'instance en tant que root ne fonctionne pas (sshd l'interdit) et lorsque je me connecte à l'instance en utilisant mon utilisateur normal, je ne peux pas obtenir les privilèges root (le mot de passe root n'a jamais été défini). L'instance exécute ubuntu 8.10. Quelqu'un a une idée de comment résoudre ce problème?

Jeff Atwood
la source

Réponses:

9

Non, ne mettez pas fin à l'instance, tout n'est pas perdu !!

  1. démarrer une autre instance et arrêter la mauvaise instance.
  2. détachez le volume EBS de la mauvaise instance et attachez-le à la nouvelle instance.
  3. Montez-le dans la nouvelle instance (c'est-à-dire quelque chose comme sudo mount / dev / xvdf1 / mnt /)
  4. chroot dedans (sudo chroot / mnt) et tapez passwd.
  5. réinitialiser le mot de passe ou apporter les autres modifications que vous souhaitez (vi / etc / ssh / sshd_config, par exemple!)
  6. Appuyez sur Ctrl-D ou tapez exit pour quitter le chroot.
  7. umount / mnt
  8. détacher le volume EBS de votre instance temporaire
  9. rattacher ou prendre un instantané et créer une nouvelle AMI basée sur cet instantané
  10. Redémarrez la boîte fixe!

PS la prochaine fois, essayez Userify pour gérer les clés de vos utilisateurs :)

erreur fatale
la source
1
Remarque: cela ne fonctionnera pas si vous avez lancé l'instance à partir du marché AWS (ces instances ne peuvent pas avoir leurs volumes racine montés ailleurs). Cela inclut certaines distributions open source telles que CentOS.
fatal_error
3

Sans trouver de vulnérabilité, le seul moyen d'obtenir un accès root sur une machine Linux est de démarrer en mode mono-utilisateur et de réinitialiser le mot de passe. Cependant, vous n'avez pas d'accès de niveau KVM sur une instance EC2, ce n'est donc pas possible.

Vous devrez mettre fin à cette instance EC2 et en lancer une autre. Mais la désactivation des connexions root est contraire au paradigme général d'EC2. Amazon suggère que vous fournissiez une clé publique au moment du lancement de l'instance et que vous installiez un script d'initialisation dans /root/.ssh/authorized_keys, avec sshd configuré sur 'PermitRootLogin sans mot de passe' pour forcer les connexions par paires de clés uniquement. De cette façon, vous ne pouvez jamais vous verrouiller accidentellement sur votre compte root (à condition de ne pas perdre votre clé privée).

À l'avenir, je vous suggère de créer un utilisateur avec accès sudo, puis de démarrer une session «écran» dès que vous vous connectez afin qu'une déconnexion n'arrête / ne casse pas votre travail. Après avoir configuré et installé votre application, regroupez, téléchargez et regroupez votre AMI afin de pouvoir lancer de nouvelles instances si nécessaire.

Victor Trac
la source
+1 pour la suggestion d'écran, bien que je préfère tmux .
h0tw1r3
La solution ci-dessous - monter le volume EBS fonctionnerait dans ce cas - en supposant que l'instance a un EBS qui l'est.
AliGibbs
1

Avez-vous une AMI enregistrée avec les modifications que vous avez apportées à votre instance avant de désactiver les connexions root? Sinon, vous devrez revenir à l'AMI de base avec laquelle vous avez commencé et créer une nouvelle instance EC2.

gareth_bowles
la source
-1

Une façon de le faire est de trouver des vulnérabilités locales dans votre système qui peuvent vous accorder un shell racine. Obtenez la liste des logiciels qui sont installés dans la boîte et google / securityfocus chacun d'eux.


la source