いつも記事を読んでいただきありがとうございます!
モブエンジニア(@mob-engineer)です!
個人的に技術イベントレポート以外の記事を増やしていきたい+ネットワーク系のアウトプットを増やしていきたいと思いましたので、今回はEC2インスタンス構築時のデフォルト設定の理由について深堀していきたいと思います。
EC2インスタンス構築時のデフォルト設定とは
読者のなかで、EC2インスタンスを立ち上げたことがないという方は少ないかと思います。そのうえでEC2インスタンスを構築するときにVPCがなんか勝手に新しく生えているやセキュリティグループが勝手に生えているといった疑問が生まれるかもしれません。
そのうえで、デフォルトで生えてくるVPC設定やセキュリティグループがなぜその設定値なのかを少し深堀していきたいと思います。
EC2構築時から見える疑問
demo-instanceとtest-demo2の2台を構築してみました。
- 設定値
- demo-instance:t2.micro
- test-demo2:t3.large
ステータスチェックの表記がdemo-instanceとtest-demo2で異なりますね。
個人的にこの違いは深堀ポイントだと思いました。
深堀ポイント:ステータスチェックのチェック件数の違い
そのうえでインスタンス内のステータスチェックについてみてみたいと思います。
demo-instance
- チェック項目
- システムステータスのチェック
- インスタンスステータスのチェック
test-demo2
- チェック項目
- システムステータスのチェック
- インスタンスステータスのチェック
- アタッチ済みの EBS ステータスチェック
違いとしてアタッチ済みの EBS ステータスチェックの違いと理解できました。
ちなみに、各チェック項目の詳細についても気になったのでCloudWatchを見てみました。
SystemStatus~から始まるメトリクスはシステムステータスのチェックに関連し、CPU~、Memory~などのOSに関するメトリクスはインスタンスステータスのチェックに関連すると予想されます。
そのうえで、demo-instanceのメトリクスでEBS~から始まるメトリクスも存在するので、なぜ、アタッチ済みの EBS ステータスチェックが存在しないのかは気になりますね。
VPCから見える疑問
demo-instanceの設定画面にあるVPCについても見てみたいと思います。
個人的に気になるのは、IPv4アドレスが172.16.0.0/16なのかが疑問に思いました。
深堀ポイント:IPv4アドレスの範囲について
AWS公式ドキュメントには以下の通り示されていました。
プライベート IPv4 アドレス (このトピックではプライベート IP アドレスとも呼ばれます) はインターネット経由ではアクセスできませんが、VPC 内のインスタンス間の通信に使用できます。インスタンスを VPC に起動すると、サブネットの IPv4 アドレス範囲からのプライマリプライベート IP アドレスが、インスタンスのプライマリネットワークインターフェイス (eth0 など) に割り当てられます。各インスタンスには、インスタンスのプライベート IP アドレスに解決されるプライベート (内部) DNS ホスト名も与えられます。ホスト名には、リソースベースと IP ベースの 2 種類があります。詳細については、「EC2インスタンスの命名」を参照してください。プライマリプライベート IP アドレスを指定しない場合は、サブネット範囲内で使用可能な IP アドレスが自動的に選択されます。ネットワークインターフェイスの詳細については、 「Amazon EC2 ユーザーガイド」の 「Elastic Network Interfaces」を参照してください。
理由については言及されていないですね。
しいて言えば、RFC1918(プライベート網のアドレス割当)をもとに決めていると説明されていますが、その場合、192.168.0.0/16や10.0.0.0/8も対象になるので、わざわざ172.16.0.0/16が選択された理由にはならないかと思います。
※他サービス予約済みアドレスも調査しつつ、検証は行っていく必要があると考えています
セキュリティグループの疑問
最後にセキュリティグループについても見てみたいと思います。
インバウンドルール、アウトバウンドルールについてみてみたいと思います。
見てもらうとわかる通り、EC2に対してSSH接続ができ、EC2からインターネット抜けできる状況とわかるかと思います。
ただ、考えなくてはいけないのがデフォルトでSSH接続用ポートが開いている理由について疑問を持っています。
深堀ポイント:SSH接続用ポートがデフォルトで空いている
一般的にSSH接続を行うことでパスワードが平文で公開されない(=暗号化されている)xため安全と言えるかもしれませんが、今自分が利用しているPCがマルウェアに汚染されている場合、簡単にEC2インスタンスへ侵入することも可能です*
考えられるとしたらEC2 Instance Connectを利用しているからといった理由も考えられるため、試してみました。
結果として、仮説通りだったと言えました。
まとめ
EC2ひとつとっても、深堀すれば技術的に考えなくてはいけないことがたくさんあると理解できました。個人的には、IPアドレスまわり、セキュリティグループ設定まわりは1日以上話せるネタがたくさんあるかと思います。
最後にEC2インスタンス15周年ブログで締めたいと思います。
参考サイト