チャレンジAWS

AWS上で簡易Webサイトを構築してみた!

こんにちは。
AWS技術担当の小川です。

前回まで弊社の技術サービスについていくつかご案内させていただきましたが、今後はAWSの構築に沿った技術情報についても発信していきます!

今回は『AWS上で簡易Webサイトを構築してみた!』ということで、私が実際にAWS環境で簡易Webサイトを構築したので、その経験から基礎となるネットワークやセキュリティ部分の構築ポイントをお伝えします。
特に各セキュリティやネットワーク機能の適用範囲について注目していただけると幸いです。


私が構築したAWS環境は下の図となっております。
VPC、サブネットでネットワークを構築し、WebサイトとなるEC2を構築しております。

AWS環境

ここでEC2上のWebサイトを公開するにあたり、3つのネットワーク、セキュリティ設定ポイントがあります。

それでは気になるネットワーク設定ポイント3つを紹介致します。

ネットワーク設定ポイント

それでは1つずつ解説させていただきます。

1.ネットワークACL

ネットワークACL

ネットワークACL(NACL)はサブネットへのインバウンド(入)通信とアウトバウンド(出)通信を制御するファイアウォールのような機能で、許可または拒否するルールを適用することができます。
こちらはサブネットレベルでの通信制御ができ、サブネット内にあるEC2に対しても通信ルールが適用されます。そのため複数のリソースが同じ通信ルールを適用したい場合は、ネットワークACLで一括設定する使い方があります。
また、次に紹介するセキュリティグループでは拒否ルールの設定機能がないので、ネットワークACL側で拒否ルールを作成して補うことがあります。
また、こちらはステートレス型となっており、インバウンド、アウトバウンドの通信ルールがそれぞれ独立しております。そのため、サブネット内に通信を通したい場合、両方のルールを忘れずに設定する必要があります。
構築ではサブネットと、ネットワークACLの紐づけ作業が必要になります。

主な設定内容はこちらです。

主な設定内容

まずルール番号ですが、複数ルールがある場合、ルールの適用順を決めることができます。適用順としてはルール番号が低いものから適用されます。
(デフォルトの拒否ルールにあるルール番号の*は一番適用順が低いです。)
また、通信タイプ、プロトコルではTCP/UDP、HTTPS、RDPなど幅広く選択可能です。送信元/送信先の指定は、0.0.0.0/0(インターネット)、10.0.1.0/24、192.168.1.10/32などIPアドレス範囲をCIDRで表記することができ、単一のIPアドレスまで指定可能です。
許可/拒否の部分ですが、先ほどまでの通信タイプ、プロトコルや送信元/送信先のルールについて許可、拒否の選択が可能です。

今回作成したネットワークACLの設定は以下になります。(アウトバウンドルールも同様)

ネットワークACLの設定

今回の設定ではタイプ、プロトコルでTCP、HTTPを選んでおり、送信元に0.0.0.0/0と指しているので、すべてのHTTP通信を許可するルールが最優先で適用されるように設定しております。
(本番環境でWebサイトを運用する場合はHTTPS通信が推奨されます。)

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

セキュリティグループ

セキュリティグループ(SG)はEC2などサーバーレベルでインバウンド通信とアウトバウンド通信を制御するファイアウォールのような機能で、通信を許可するルールを作成することができます。こちらは先ほどのネットワークACLよりもより細かな範囲で通信ルールを設定することが可能です。(ネットワークACLはサブネット内にルールが適用されるので、運用上、細かなルール設定はセキュリティグループでの設定が推奨されています。)
また、セキュリティグループはネットワークACLのステートレスとは異なり、ステートフルの特徴を持っています。ステートフルだとインバウンドとアウトバウンドが一体となっているので、別途アウトバウンドルールを設定しない限りは、インバウンドで許可した通信はアウトバウンドでも許可される仕様となっております。
セキュリティグループを適用させる際は、EC2などリソースに紐づける必要があります。ポイントとしてネットワークACLのルールがセキュリティグループよりも先に優先されるのでご注意ください!

主な設定内容はこちらです。

主な設定内容

通信タイプ、プロトコルではこちらもTCP/UDP、HTTPS、RDPなど幅広く選択可能です。また、ソース(送信元)/送信先の指定は、0.0.0.0/0(インターネット)、10.0.1.0/24、192.168.10.10/32などこちらもIPアドレス範囲をCIDRで表記することができ、単一のIPアドレスまで指定可能です。さらに応用的にはなりますが、セキュリティグループやその他のAWSサービスなど、リソースやプレフィックスの指定も可能です。

今回作成したセキュリティグループの設定は以下になります。(アウトバウンドルールはデフォルト指定ですべての通信を許可)

セキュリティグループの設定

今回の設定ではWebサイトの運用を想定し、タイプ、プロトコルでHTTP、ソースを0.0.0.0/0と指しており、すべてのHTTP通信を許可する設定を行いました。
(本番環境でWebサイトを運用する場合はHTTPS通信が推奨されます。)

3.ルートテーブル

ルートテーブル

最後はルートテーブルの紹介になります。
ルートテーブルは宛先に対して通信経路を記載し、サブネット内からの通信を方向付けする機能となっております。そのためルートテーブルがないと、先ほどのネットワークACLやセキュリティグループで適切な設定を行っていてもインターネットへ通信することができません!
私もAWSを始めた当初はネットワークACL、セキュリティグループのみ設定すればインターネットにアクセスできると認識していたので、よくネットワーク設定で躓いておりました…
実際ルートテーブルへ記載するルート情報ですが、インターネットやオンプレミス、異なるVPCなどへ通信したい際にルート情報を記載します。
なお、こちらはサブネットに紐づける必要があります。

主な設定内容はこちらです。

主な設定内容

まず、送信先ですが、宛先のIPアドレスを指定ということでこちらもCIDR表記で単一のIPアドレスまで指定することが可能で、通信の目的地を指定します。
ターゲットは目的地となる送信先に通信するために、通過するポイントを指定します。

今回作成したルートテーブルは以下になります。

ルートテーブル

ここでは2つのルート情報があります。
1つ目は送信先に0.0.0.0/0(インターネット)を指定し、ターゲットとしてはインターネットゲートウェイ(VPC内の通信がインターネットに出る際に通過するゲートウェイ)を指定しています。
2つ目は送信先を「10.0.0.0/16」、ターゲットにLocal(VPC内)を指定しています。
こちらはデフォルトで入っているルート情報となっており、送信先がVPC内を指している場合は、インターネットへ出ずVPC内のみで通信が行われるようになっております。
(ルート情報の送信先が重複する場合は、より狭い範囲で設定しているルート情報が優先されます。)
まとめると、VPC内の通信はVPCを通り、インターネットに出たい際は、インターネットゲートウェイを通るように設定しています。


ここで、ネットワークACL、セキュリティグループ、ルートテーブルが設定できたので、EC2のIPアドレスにアクセスしてみますと…
下の図のようにWebサイトにアクセスすることができました!!

アクセス完了

それではまとめに入ります。
今回は、ネットワークやセキュリティの構築ポイントについて紹介させていただきました。
ここで登場したネットワークACL、セキュリティグループ、ルートテーブルはAWSのインフラ環境構築で基礎部分となりますので、各機能の概要や適用範囲、構築イメージを掴んでいただけると嬉しいです!是非構築に役立てていただけますと幸いです。

もし、AWSの構築に不安がある方には弊社のAWSインフラ構築スターターパックもありますので、こちらもご活用いただければと思います!
サブネットやEC2への通信設定もご希望の内容をヒアリングし、構築させていただきます。


今回のコラムは以上となります。
次回以降もAWS構築してみたシリーズを紹介させていただければと思います!
最後までご覧いただきありがとうございました!
それでは次回もお楽しみに!

AWSの記事