フェイス・ソリューション・テクノロジーズ株式会社 IS 本部 OS ユニットの Saitoです。
EC2インスタンスを新しく起動するとき、かつては必ずキーペアを作成するか既存のものを選ぶかする必要がありました。でも現在ではいつの間にかキーペアなしで起動するオプションが増えています。
此度はこのオプションの特長をご紹介します。

安全なのか
従来、キーペア使用オプションで新しくインスタンスを起動すると、デフォルトのセキュリティグループはSSHの22番ポートのインバウンドが許可されており、そのままパスワード不要且つキーペアだけでSSHログインすることができました。
ではキーペアなしのオプションだとパスワードもキーペアも不要で誰でもログインできてしまうのでしょうか?
一応、同時にセキュリティグループを新規作成するときのオプションも追加されており、最初から全開放しないための注意書きもあります(以前は既存のセキュリティグループを選択しないと22番ポート開放のまま選べなかったと思います)。

そのままインスタンスを起動してユーザー名はデフォルトの「ec2-user」パスワードなしでSSHログインを試してみると

弾かれてしまいます。
SSHのパスワード認証がオフになっていたので有効化します。
# vi /etc/ssh/sshd_config
PasswordAuthentication no
↓
PasswordAuthentication yes
# systemctl restart sshd
それでも弾かれてしまいます。
もともと何かパスワードが設定されているようなのですが、こちらで確認することはできません。

空白で設定することもできません。

こちらで故意にパスワード認証にしたり、ルートログインを有効にしたりしない限り、キーペアなしで且つ、ガバガバなセキュリティグループでも直ちに危険にさらされるわけではないようです。
使い道
キーペア認証のEC2インスタンスを起動したときの秘密鍵ファイルはどこに保管していますか?
むしろキーペアなしにすることで、秘密鍵ファイルの紛失や流出のリスクから解放され、より安全に運用できます。
SSHのパスワード認証を使わなくても、AWSのSSMを使ってより安全に接続できます。
まずはSSMエージェントをEC2インスタンスにインストールします。
一度EC2 Instance Connectで接続するのでこちらの一覧から各リージョンに合ったIPアドレスのインバウンドを有効化します。

Instance Connenctで接続してSSMエージェントをインストールします。
$ curl "https://s3.amazonaws.com/session-manager-downloads/plugin/latest/linux_64bit/session-manager-plugin.rpm" -o "session-manager-plugin.rpm"
$ sudo yum install -y session-manager-plugin.rpm
IAMポリシー「AmazonSSMManagedInstanceCore」を追加したIAMロールをEC2インスタンスにアタッチします。


これで、セキュリティグループのインバウンドを一切無しにしても、
SSM セッションマネージャーで安全に接続することができるようになりました。


オプション選択時に「推奨されません」とあるのは、おそらく上記のような手順を踏まないとまともに使えないということで書かれているのだと思います。
コメント