Amazon Linux AMIに基づいてpackerを使用してAMIを作成した後、そのAMIのインスタンスを起動してsshを実行すると、セキュリティホールである~/.ssh/authorized_keys
ファイルに一時的なpackerキーペアが表示されます。 AMIが保存される前にそのファイルが削除されることを期待していました。
パッカーテンプレートの~/.ssh/authorized_keys
を明示的に削除することで、これを回避することができました(詳細は以下を参照)。
パッカーバージョン
パッカーv0.10.0
ホストプラットフォーム
CentOS Linuxリリース7.2.1511(コア)
PACKER_LOG=1 packer build template.json
からのデバッグログ出力。
パッカーの出力は次のとおりです。
https://gist.github.com/tleyden/4cc13b530f08bcaef04f5233bf43daee
申し訳ありませんが、PACKER_LOG = 1を実行しませんでしたが、必要に応じて再実行できます
バグを再現するために必要な_最も単純なサンプルテンプレートとスクリプト_
テンプレート: https :
脚本:
Jenkins Packerプラグインを使用し、次の方法で変数をpackerに渡します。
-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}'
回避策
次のプロビジョナーをパッカーテンプレートに追加しました。
{
"type": "shell",
"inline": [
"rm /home/ec2-user/.ssh/authorized_keys"
]
}
AMIを起動した後は、AWSの「インスタンスの起動」ウィザードで選択されたキーのみが含まれ、パッカーの一時キーペアは含まれていませんでした。
これを報告するために時間を割いていただきありがとうございます。
これがAWSの仕組み、より具体的にはcloud-initの仕組みです。 回避策として説明するのは、実際には何をすべきかです。
デッドスレッドを復活させて申し訳ありませんが、それを見つけてアマゾンからより多くの情報を見つけたので、私は他の人のためにここでそれを提供すると思いました:
https://aws.amazon.com/articles/how-to-share-and-use-public-amis-in-a-secure-manner/
つまり、rootとして以下を実行して、authorized_keysファイルをすべて削除することをお勧めします。
find / -name "authorized_keys" -exec rm -f {} \;
注意:リンクされたページのコマンドは、通常のダッシュ(-)とエラーを返す他の何かを組み合わせて使用しています。 コマンドを手動で入力するか、すぐ上のコマンドをコピーすると機能するはずです。
この問題は_ 30日間_⏳クローズされているため、ロックします。 これは、メンテナがアクティブな問題を見つけて集中するのに役立ちます。
これに似た問題を見つけた場合は、新しい問題を開いて問題テンプレートを完成させてください。これにより、さらに調査するために必要なすべての詳細を取得できます。
最も参考になるコメント
これを報告するために時間を割いていただきありがとうございます。
これがAWSの仕組み、より具体的にはcloud-initの仕組みです。 回避策として説明するのは、実際には何をすべきかです。