Nachdem ich ein AMI mit Packer basierend auf dem Amazon Linux AMI erstellt habe, sehe ich, wenn ich eine Instanz dieses AMI starte und ssh-in, das temporäre Packer-Schlüsselpaar in der ~/.ssh/authorized_keys
Datei, was eine Sicherheitslücke darstellt. Ich hatte erwartet, dass diese Datei gelöscht wird, bevor das AMI gespeichert wurde.
Ich konnte dies umgehen, indem ich ~/.ssh/authorized_keys
in der Packer-Vorlage explizit löschte (Details unten).
Packer-Version
Packer v0.10.0
Host-Plattform
CentOS Linux-Version 7.2.1511 (Kern)
Debug-Protokollausgabe von PACKER_LOG=1 packer build template.json
.
Hier ist die Packer-Ausgabe:
https://gist.github.com/tleyden/4cc13b530f08bcaef04f5233bf43daee
Tut mir leid, ich habe PACKER_LOG=1 nicht gemacht, kann aber bei Bedarf erneut ausführen
Die _einfachste Beispielvorlage und die Skripte_, die benötigt werden, um den Fehler zu reproduzieren
Skript:
Verwenden des Jenkins Packer-Plugins und Übergeben von Variablen an den Packer über:
-var 'source_ami=${source_ami}' -var 'ssh_username=${ssh_username}' -var 'couchbase_server_package_name=${couchbase_server_package_name}' -var 'couchbase_server_package_url=${couchbase_server_package_url}' -var 'couchbase_sync_gateway_package_base_url=${couchbase_sync_gateway_package_base_url}' -var 'couchbase_sync_gateway_package=${couchbase_sync_gateway_package}' -var 'couchbase_server_version=${couchbase_server_version}' -var 'couchbase_sync_gateway_version=${couchbase_sync_gateway_version}' -var 'couchbase_server_edition=${couchbase_server_edition}' -var 'sync_gateway_edition=${sync_gateway_edition}'
Problemumgehung
Ich habe der Packer-Vorlage den folgenden Provisioner hinzugefügt:
{
"type": "shell",
"inline": [
"rm /home/ec2-user/.ssh/authorized_keys"
]
}
und nach dem Starten des AMI enthielt es nur den Schlüssel, der im AWS-Assistenten "Instanz starten" ausgewählt wurde, und nicht das temporäre Schlüsselpaar des Packers.
Vielen Dank, dass Sie sich die Zeit genommen haben, dies zu melden.
So funktioniert AWS oder genauer gesagt, wie cloud-init funktioniert. Was Sie als Problemumgehung beschreiben, ist eigentlich das, was Sie tun sollten.
Entschuldigung, dass ich einen toten Thread wiederbeleben muss, aber da ich ihn gefunden und dann weitere Informationen von Amazon gefunden habe, dachte ich, ich würde ihn hier für andere beitragen:
https://aws.amazon.com/articles/how-to-share-and-use-public-amis-in-a-secure-maner/
Kurz gesagt, sie empfehlen, Folgendes als Root auszuführen, um alle authorisierten_keys-Dateien zu entfernen:
find / -name "authorized_keys" -exec rm -f {} \;
Achtung: Der Befehl auf der verlinkten Seite verwendet eine Mischung aus normalen Bindestrichen (-) und etwas anderem, das Fehler zurückgibt. Das manuelle Eingeben des Befehls oder das Kopieren des obigen Befehls sollte funktionieren.
Ich werde dieses Problem sperren, da es seit _30 Tagen_ geschlossen ist ⏳. Dies hilft unseren Betreuern, die aktiven Probleme zu finden und sich darauf zu konzentrieren.
Wenn Sie ein ähnliches Problem gefunden haben, öffnen Sie bitte ein neues Problem und füllen Sie die Problemvorlage aus, damit wir alle Details erfassen können, die für die weitere Untersuchung erforderlich sind.
Hilfreichster Kommentar
Vielen Dank, dass Sie sich die Zeit genommen haben, dies zu melden.
So funktioniert AWS oder genauer gesagt, wie cloud-init funktioniert. Was Sie als Problemumgehung beschreiben, ist eigentlich das, was Sie tun sollten.