root aus EC2 gesperrt

8

Ich war gerade dabei, Root-Anmeldungen auf einer AWS EC2-Instanz zu deaktivieren. Unmittelbar nach dem Festlegen von PermitRootLogin no und dem Neustart von sshd habe ich das Terminal bei einem Unfall geschlossen - bevor ich Benutzer mit sudo-Berechtigungen eingerichtet habe. Das Ergebnis ist, dass mein Schlüssel, um als Root in die Instanz zu gelangen, nicht funktioniert (sshd verbietet es) und wenn ich mich mit meinem regulären Benutzer bei der Instanz anmelde, kann ich keine Root-Berechtigungen erhalten (das Root-Passwort wurde nie festgelegt). Auf der Instanz wird Ubuntu 8.10 ausgeführt. Hat jemand eine Idee, wie ich das beheben kann?

Jeff Atwood
quelle

Antworten:

9

Nein, beenden Sie die Instanz nicht, es ist nicht alles verloren !!

  1. Starten Sie eine andere Instanz und fahren Sie die fehlerhafte Instanz herunter.
  2. Trennen Sie das EBS-Volume von der fehlerhaften Instanz und hängen Sie es an die neue Instanz an.
  3. Mounten Sie es in der neuen Instanz (dh so etwas wie sudo mount / dev / xvdf1 / mnt /)
  4. chroot hinein (sudo chroot / mnt) und passwd eingeben.
  5. Setzen Sie das Passwort zurück oder nehmen Sie andere Änderungen vor (z. B. vi / etc / ssh / sshd_config!).
  6. Drücken Sie Strg-D oder geben Sie exit ein, um die Chroot zu verlassen.
  7. umount / mnt
  8. Trennen Sie das EBS-Volume von Ihrer temporären Instanz
  9. Erneutes Anhängen oder Erstellen eines Schnappschusses und Erstellen eines neuen AMI basierend auf diesem Schnappschuss
  10. Booten Sie die feste Box wieder!

PS: Versuchen Sie das nächste Mal Userify , um die Schlüssel Ihrer Benutzer zu verwalten :)

fataler Fehler
quelle
1
Hinweis: Dies funktioniert nicht, wenn Sie die Instanz vom AWS-Marktplatz aus gestartet haben (für diese Instanzen können die Root-Volumes nicht an anderer Stelle bereitgestellt werden). Dies schließt bestimmte Open Source-Distributionen wie CentOS ein.
fatal_error
3

Ohne eine Sicherheitsanfälligkeit zu finden, besteht die einzige Möglichkeit, Root-Zugriff auf einem Linux-Computer zu erhalten, darin, in den Einzelbenutzermodus zu booten und das Kennwort zurückzusetzen. Sie haben jedoch keinen Zugriff auf KVM-Ebene auf eine EC2-Instanz, sodass dies nicht möglich ist.

Sie müssen diese EC2-Instanz beenden und eine andere starten. Das Deaktivieren von Root-Anmeldungen widerspricht jedoch dem allgemeinen Paradigma bei EC2. Amazon schlägt vor, dass Sie beim Start der Instanz einen öffentlichen Schlüssel angeben und ein Init-Skript in /root/.ssh/authorized_keys installieren, wobei sshd so konfiguriert ist, dass "PermitRootLogin ohne Kennwort" nur Schlüsselpaar-Anmeldungen erzwingt. Auf diese Weise können Sie sich niemals versehentlich von Ihrem Root-Konto sperren (vorausgesetzt, Sie verlieren Ihren privaten Schlüssel nicht).

In Zukunft schlage ich vor, dass Sie einen Benutzer mit Sudo-Zugriff erstellen und dann eine Bildschirmsitzung starten, sobald Sie sich anmelden, damit eine Unterbrechung Ihre Arbeit nicht stoppt / unterbricht. Nachdem Sie Ihre App konfiguriert und installiert haben, bündeln, laden und bündeln Sie Ihr AMI, damit Sie bei Bedarf neue Instanzen starten können.

Victor Trac
quelle
+1 für den Bildschirmvorschlag, obwohl ich tmux bevorzuge .
h0tw1r3
Die Lösung unter dem Mounten des EBS-Volumes würde in diesem Fall funktionieren, vorausgesetzt, die Instanz verfügt über ein EBS.
AliGibbs
1

Haben Sie eine AMI mit den Änderungen gespeichert, die Sie an Ihrer Instanz vorgenommen haben, bevor Sie die Root-Anmeldungen deaktiviert haben? Wenn nicht, müssen Sie zu dem Basis-AMI zurückkehren, mit dem Sie begonnen haben, und eine neue EC2-Instanz erstellen.

gareth_bowles
quelle
-1

Eine Möglichkeit besteht darin, lokale Schwachstellen in Ihrem System zu finden, die Ihnen eine Root-Shell gewähren können. Holen Sie sich eine Liste der Software, die in der Box installiert sind, und google / securityfocus jede davon.


quelle