Wie verwalte ich private Schlüssel für EC2-verwaltete Schlüsselpaare sicher?

8

Um eine EC2-Instanz zu starten, benötigen Sie ein Schlüsselpaar. Wie gehen Sie mit der Situation um, in der ein Ingenieur mit Zugriff auf den privaten Schlüssel für dieses Schlüsselpaar das Unternehmen verlässt? Würde es funktionieren, unmittelbar nach dem Start der Instanz einen individuellen SSH-Zugriff hinzuzufügen und das ursprüngliche Schlüsselpaar zu deaktivieren?

Jeff
quelle
1
Neue Instanzen der EC2-Instanzen erneut bereitstellen und die alten mit dem alten Schlüsselpaar entfernen?
sdolgy

Antworten:

10

Wenn ein Mitarbeiter oder Auftragnehmer das Unternehmen verlässt, müssen Sie den privilegierten Zugriff auf Unternehmensressourcen deaktivieren. Dies beinhaltet (ohne darauf beschränkt zu sein) Ihre SSH-Hauptanliegen:

  1. Entfernen Sie den öffentlichen SSH-Schlüssel aus allen autorisierten Schlüsseldateien auf allen laufenden Instanzen. Ersetzen Sie sie durch einen neu generierten öffentlichen SSH-Schlüssel, der nur den Personen bekannt ist, die Zugriff haben sollten.

  2. Entfernen Sie alle Schlüsselpaareinträge in EC2, die den Verstorbenen bekannt waren, damit mit diesen Schlüsselpaaren keine neuen Instanzen gestartet werden können. Ersetzen Sie sie durch neue Schlüsselpaareinträge, möglicherweise mit denselben Namen, wenn Sie

Die von Ihnen vorgeschlagene alternative Methode ist ebenfalls gut und wird von mir verwendet: Deaktivieren Sie den anfänglichen SSH-Schlüssel und fügen Sie jedem Entwickler individuelle öffentliche SSH-Schlüssel hinzu, damit er sich mit seinem normalen privaten SSH-Schlüssel anmelden kann. Dies kann für die Anmeldung bei einem freigegebenen Konto oder für jeden Entwickler erfolgen, der sein eigenes Benutzerkonto erhält (mein bevorzugtes Konto).

Nachdem ein Mitarbeiter das Unternehmen verlassen hat, müssen Sie nicht nur laufende Server bereinigen, sondern auch den Prozess, bei dem die SSH-Schlüssel neuen Servern hinzugefügt werden. Wenn ein Mitarbeiter beitritt, müssen Sie das Gegenteil tun: Fügen Sie SSH-Schlüssel zu laufenden Servern hinzu und aktualisieren Sie den neuen Serverprozess.

Dies kann ein bisschen mehr Arbeit sein, um viele SSH-Schlüssel auf vielen Servern zu verwalten, aber hier kommt die Automatisierung ins Spiel.

Eric Hammond
quelle
3

Sie sollten diesen privaten Schlüssel niemals Endbenutzern geben. Endbenutzer sollten über eigene Anmeldemöglichkeiten verfügen, z. B. die Authentifizierung mit öffentlichem Schlüssel (unter Verwendung ihres eigenen kennwortgeschützten privaten Schlüssels), gefolgt von einer LDAP-Autorisierung.

Durch die Verteilung des privaten Schlüssels, den Sie von ec2 erhalten haben, können Benutzer nicht mehr bereitgestellt werden. Genau aus diesem Grund ist die Verwendung gemeinsamer Anmeldeinformationen durch alle Sicherheits- und Compliance-Bestimmungen vollständig verboten.

Wenn Sie die Verwendung freigegebener Anmeldeinformationen zulassen:

  • Es ist unmöglich, Protokolle zu verwenden, um zu wissen, wer wirklich auf einem Host ist / war
  • Es ist unmöglich, die Bereitstellung eines Benutzers aufzuheben, ohne die Bereitstellung aller Benutzer aufzuheben (einschließlich des Notfallzugriffs, für den dieser private EC2-Schlüssel wirklich gedacht ist).
kgilpin
quelle
2

Weitere Informationen finden Sie in der Dokumentation von Amazon zur Rotation von Zugriffsdaten .

Verwenden Sie so etwas wie eine Marionette oder ein solides SSH-Skript, um alle Instanzen des alten Schlüssels zu ersetzen, wenn Sie nicht alles neu starten möchten ... oder einfach alles neu starten möchten.

Jeff Ferland
quelle
Ich denke, er spricht nicht über die Kontoschlüssel, die Sie drehen können, sondern mehr über den privaten .pem-Schlüssel, um sich bei ssh anzumelden.
2
Die SSH-Anmeldung wird durch die Einträge ~ / .authorized_keys gesteuert. Diese werden anfänglich durch den EC2-Startprozess ausgesät, daher müssen Puppen oder Skripte verwendet werden, um sie zu ersetzen oder neu zu starten.
Jeff Ferland
in Ordung. Das wusste ich nicht :).
Ja, das ist richtig. Für normale Konten könnte sshd LDAP verwenden und somit einen Benutzer einmal von LDAP deaktivieren können. Die Startschlüssel werden jedoch von AWS verwaltet. Daher denke ich, dass die Marionetten- / Kochlösung zum Entfernen eines Startschlüssels aus der Datei "authorized_keys" jedes Servers der richtige Weg ist. Ich denke, ich möchte auch, dass jeder Administrator seinen eigenen AWS-Startschlüssel hat, daher entferne ich jeweils nur den Zugriff eines einzelnen Benutzers.
Jeff
@Jeff Wenn SSH so konfiguriert ist, dass es auf LDAP verweist und autorisierte_Tasten ignoriert, ist der Startschlüssel nur für die Steuerung des Starts und der Beendigung der Instanz von Bedeutung. Das hängt davon ab, wie Sie Ihr Image erstellen.
Jeff Ferland