【AWS初心者向け】ハンズオンによるセキュリティグループ検証


この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので十分ご注意ください。

こんにちは、こんばんは、おはようございます。
江島です。

今回は、MultiAZ の高可用性サイト構築の際に理解が不十分でした、セキュリティグループ についてハンズオン検証を用いて理解を深めたいと思います。

構成図とやりたいこと

今回検証したいことは、可用性のある multiAZ構成 の中に、検証用の EC2インスタンス を追加で作成し、 ALB 用のセキュリティグループ を検証用 EC2インスタンス にアタッチすることで、http通信ができることを確認。

また、その後 ALB用のセキュリティグループ をデタッチしhttp通信ができることを確認することで、セキュリティグループ がしていることを検証いたします。

セキュリティグループとは

概要

  • インスタンスの仮想ファイアウォールとして機能する。
  • インバウンドルールとアウトバウンドルールを設定できる。
  • セキュリティグループは、サブネットレベルでなくインスタンスレベルで動作する。(重要)
  • 検証環境構築の流れ

    ※使用するサービス
    EC2、ALB、SG

    • リージョン:東京リージョン

    • VPC:検証用に1つ作成

    • AZ:高可用性サイト作成のため2か所使用

    • SG: 3つ作成。EC2用、ALB用、検証用

    • EC2インスタンス:AZa とAZb のパブリックサブネットに作成し、検証用インスタンスを別に一台作成

    • ALB: TG を EC2a の パブリックサブネット と EC2b の パブリックサブネット を指定

    ※ 以上のうち、EC2 とALB に関しては、長くなってしまうので構築に関しては省略いたします。

    1.VPC作成

    以下の項目に従って、作成していきましょう。

    設定項目 設定値 理由
    名前 ejima-test-vpc 入力は任意
    IPv4 CIDRブロック 10.0.0.0/16
    IPv6 CIDRブロック なし 今回は使用しない
    テナンシー デフォルト 占有するオプションはありません
    AZの数 2 multiAZ構成のため
    パブリックサブネットの数 各AZに1つ
    プライベートサブネット 0 今回は利用しない
    NATゲートウェイ なし 今回は利用しない
    VPCエンドポイント S3ゲートウェイ VPCがS3に直接アクセスすることで、料金を削減し、セキュリティを向上させるのに役立ちます。
    DNS解決 有効
    DNSホスト名 有効
    タグ キー:User ,値:ejima 入力は任意

    全てのリソースを作成するときにいえることですが、
    タグ付けは、管理(更新、削除、他リソースにアタッチ等)を行うときに必要なので、必ずわかりやすい名前を付けておきましょう。
    また、作成前は項目ごとに確認をしましょう。

    これで VPC 作成完了です。
    今回は、VPC に付随するサービスの一部(インターネットゲートウェイ、ルートテーブル)は、自動的に作成してもらっています。
    別々に作ることももちろんできますので、ハンズオンをしっかり勉強したい方は、1から作ってみてください。

    2.セキュリティグループ作成

    次に今回のテーマのセキュリティグループを作成していきます。

    事前準備項目に記述したように、EC2用、ALB用、検証用の3つ作成していきます。

    名前 インバウンドルール インバウンドソース
    ejima-blog-ALB-SG ①HTTPS ②http ①0.0.0.0/0 ②0.0.0.0/0
    ejima-blog-EC2 ①HTTP ②SSH ①ejima-blog-ALB-SG ②MYIP
    ejima-test-sg ssh MYIP

    ①インバウンドルールとは
    指定した通信プロトコルによる通信を許可するもの

    ②インバウンドソースとは
    どこからの通信を許可するかを指定するもの

    注意点として、拒否設定はできません。受け入れる通信のみを設定できます。

    検証開始

    それでは、検証を開始していきますので、

    1. Visual Studio Codeで EC2 に ssh接続

    Visual Studio Codeで EC2 に ssh接続します。
    コマンドは、

    ssh -i ec2-user@[EC2のパブリックアドレス] -v

    上の画面が表示されたら、 ssh接続成功 です。

    2. Apache のインストール

    次に、Apache をインストールしていきます。

    インストールコマンド

    Complete!と表示されれば完了です。

    Apache を起動し、起動の確認をします。

    以上と同様の手順で、残り2台のインスタンスも Apache を起動させてください。

    3. 検証用EC2インスタンスに、ALB用のセキュリティグループ をアタッチ

    4. 各EC2にhttp接続が成功するか確認

    EC2a と ECb に、

    curl -Ss -I -v http://EC2のプライベートアドレス/

    で接続をしてみる。

    接続が成功することを確認

    無事http接続が成功していることを確認できました。

    5. 検証用EC2インスタンス から、ALBのセキュリティグループをデタッチ

    6. デタッチされた検証用インスタンスでもう一度

    先ほどと同様のコマンド

    curl -Ss -I -v http://EC2のプライベートアドレス/

    で接続をしてみる。

    接続が失敗することを確認

    以上でセキュリティグループの検証が完了しました。

    まとめ

    今回、ALBのセキュリティグループ からの http に よるインバウンド通信 を許可していたことで、検証用インスタンスからの http通信 が成功しました。

    それにより、通信はサービス同士ではなく、セキュリティグループを通して通信をしていることを改めて確認できました。

    最後まで読んでくださりありがとうございました。

    Last modified: 2023-05-17

    Author