はじめに
こんにちは。
プログラミング初心者wakinozaと申します。
勉強中に調べたことを記事にまとめています。
十分気をつけて執筆していますが、なにぶん初心者が書いた記事なので、理解が浅い点などあるかと思います。
間違い等あれば、指摘いただけると助かります。
記事を参考にされる方は、初心者の記事であることを念頭において、お読みいただけると幸いです。
記事のテーマ
- AWS SAA 取得を目指して学習中です。
- AWSのネットワークについて、ファイアウォール関連のものをまとめました。
目次
1. AWSのファイアウォール
2. セキュリティグループ
3. ネットワークACL
4. AWS Network Firewall
5. AWS WAF
6. AWS Firewall Manager
1. AWSのファイアウォール
セキュリティにおいて、「ファイアウォール」とは、インターネットからの不正な侵入や、内部から外部への許可していない通信を防ぐための「門番」の役割を果たします。
AWSには、さまざまな「ファイアウォール」機能が用意されています。
| 項目・サービス | 適用対象(配置場所) | チェック対象 |
|---|---|---|
| セキュリティグループ | インスタンス (ENI) | L3/L4 |
| ネットワークACL | サブネット | L3/L4 |
| AWS Network Firewall | VPC | L3〜L7、ドメイン |
| AWS WAF | ALB / CloudFrontなど | L7 (HTTP/HTTPS) |
| AWS Firewall Manager | 複数アカウントへのガバナンス | 管理ポリシー |
この記事では、これら項目やサービスの特徴をまとめていきます。
2. セキュリティグループ
セキュリティグループは、インスタンス単位で設定するファイアウォール項目です。
セキュリティグループの特徴は、以下の3点です。
- 「許可」のみ設定できるホワイトリスト方式
- ステートフル
- ネットワーク層(L3)とトランスポート層(L4)の制御
2.1. 「許可」のみ設定できるホワイトリスト方式
セキュリティグループは「信頼できる通信だけを定義する」というホワイトリスト(許可リスト)の考え方に基づいたファイアウォールです。
リストに載っていないものは、すべてデフォルトで拒否する原則となっているため、拒否ルールを書く必要がありません。
VPCを作成した段階では、デフォルトのセキュリティグループが用意されています。デフォルトの設定は、すべてのインバウンド通信(外部から内部への通信)を拒否、すべてのアウトバウンド通信(内部から外部への通信)を許可となっています。独自のルールを適用したい場合は、新しいセキュリティグループを作成し、インスタンスに付与する必要があります。
セキュリティ設定に複数のルールを記載した場合は、すべてのルールが適用されます。
もし、何らかの「例外的な拒否」を設定したい場合は、後述するネットワークACLを利用します。
作成したセキュリティグループは、複数のインスタンスに適用可能です。
また、1つのインスタンスに複数のセキュリティグループを付与することも可能です。
2.2. ステートフル
セキュリティグループは、コネクション追跡(Connection Tracking)を行っており、通信の状態を管理する「ステートフル」な機能を持っています。
そのため、インスタンスから開始された通信に対する応答のインバウンド通信は、ルールに関わらず一時的なエントリとして許可されます。
2.3. ネットワーク層(L3)とトランスポート層(L4)の制御
セキュリティグループは、トランスポート層(L4)の「プロトコル」と「ポート番号」と、ネットワーク層(L3)の「IPアドレス」という情報をもとに通信を許可しています。
インバウンド通信において、プロトコルとポート番号の組み合わせは通信の「宛先住所」、IPアドレスは「送り主住所」のようなものです。
セキュリティグループは、通信のプロトコル・ポート番号・IPアドレスを確認し、それら「住所」がルールに記載されている場合に通信を許可します。
また、IPアドレス以外に「セキュリティグループID」や「CIDR」を設定することも可能です。
Auto Scalingなどでインスタンスの増減を設定している場合、新しく作成されたインスタンスには、サブネットに付与されたCIDRから新しいIPアドレスが自動的に付与されます。
しかし、新しく付与されたIPアドレスがセキュリティグループに記載されていないと、新しく作成されたインスタンスからの通信を受信できません。
こういったインスタンスの可用性に対応するため、セキュリティグループにも柔軟な記述が可能です。
例えば、サブネットに付与されたCIDRをルールに記載することで、新しいインスタンスが作成されても、CIDR内のIPアドレスであれば自動的に通信を許可できます。
また、Auto Scalingでインスタンスが増減する場合、インスタンスに付与されるセキュリティグループは同一です。
そこで、セキュリティグループIDを許可対象として設定することで、インスタンスが増減しても同じセキュリティグループからの通信であれば許可するといった動的な対応が可能です。
セキュリティグループは、サービスではなく「設定項目」であるため、可用性や冗長性を考慮する必要はありません。
セキュリティグループを利用しても、利用料金はかかりません。
3. ネットワークACL
ネットワークACL(Access Control List)は、サブネット単位で設定するファイアウォール項目です。
サブネットに通信が出入りするときに評価されます。
ルールは、サブネット全体に適用され、配置された全インスタンスに影響します。
ネットワークACLの特徴は、以下の3点です。
- 「許可」と「拒否」を記述する(ホワイトリスト/ブラックリストの兼用)
- ステートレス
- ネットワーク層(L3)とトランスポート層(L4)の制御
3.1.「許可」と「拒否」を記述する(ホワイトリスト/ブラックリストの兼用)
ネットワークACLは、IPアドレス・ポート番号・プロトコルといった情報をもとに許可ルールと拒否ルールを両方を設定できます。
特定のIPアドレスからの通信を拒否したいといった、例外的な拒否を設定したい場合には、ネットワークACLを利用します。
ルールを記述する場合に、各ルールに 1 ~ 32,766 までの番号を設定します。
通信を許可するか拒否するかを決定する際は、最も小さい番号のルールから順に評価し、一致するルールがあればそれ以降のルールは評価されません。そのため、優先度が高いルールを小さい番号で設定する必要があります。(ルールに番号をつける際は、後からルールを追加しやすいように、100番、200番と間隔をあけて番号を設定することをお勧めします)
ネットワークACLも、VPCを作成した段階でデフォルトのネットワークACLが用意されています。デフォルトの設定では、インバウンド通信もアウトバウンド通信も全て許可されています。個別のルールを適用したい場合は、新しくネットワークACLを作成し、サブネットに付与する必要があります。
一度作成したネットワークACLは、複数のサブネットに適用可能です。
しかし、セキュリティグループと違い、1つのサブネットには1つのネットワークACLしか付与できません。
新しいネットワークACLを付与した場合は、以前のネットワークACLとの関連付けが削除されます。
3.2. ステートレス
ネットワークACLは通信の状態を管理しない「ステートレス」なファイアウォールです。
そのため、戻りの通信を許可するには、クライアント側で使用されるエフェメラルポートの範囲を明示的に許可する必要があります。これを行わない場合、インバウンドが許可されていてもアウトバウンドの応答が遮断されます。
エフェメラルポートとは?
エフェメラルポートとは、通信の際に一時的に割り当てられるポート番号を指します。
ネットワーク通信を行う際には、送信先ポート番号と、送信元ポート番号が必要です。
送信先ポート番号は、「ウェルノウンポート」としてプロトコルごとに予約されています(HTTP(80)やHTTPS(443)など)。送信元ポート番号は、固定の番号に決められていないため、OSがその都度空いているポートからランダムに割り当てています。この一時的に割り当てられたポート番号を「エフェメラル(一時的)ポート」と言います。
通信の「戻り」の際、ネットワークACLはステートレスであるため、エフェメラルポート宛ての通信を、アウトバウンド(またはインバウンド)ルールで明示的に許可しておく必要があります。そこで、通信ごとにランダムに割り当てられるエフェメラルポートを受信できるように、アウトバウンドルールにエフェメラルポートとして選択される可能性がある番号の範囲を明示的に許可しておきます。
エフェメラルポートはOSによって異なります。一般的なLinuxでは 1024〜65535、Windowsでは 49152〜65535 の範囲が使用されます。
3.3. ネットワーク層(L3)とトランスポート層(L4)の制御
ネットワークACLは、セキュリティグループと同様に、トランスポート層(L4)の「プロトコル」と「ポート番号」の組み合わせと、ネットワーク層(L3)の「IPアドレス」という情報をもとに通信を許可しています。
送信元や宛先に「セキュリティグループID」を指定することはできず、IPアドレス(CIDR)による指定のみが可能です。
ネットワークACLは、セキュリティグループと同様、サービスではなく「設定項目」であるため、可用性や冗長性を考慮する必要はありませんし、利用料金もかかりません。
セキュリティグループとネットワークACLは、ともにL3/L4の制御を行う設定項目です。
SAAでも頻出分野なので、特徴と違いを整理しておくことをお勧めします。
| セキュリティグループ | ネットワークACL | |
|---|---|---|
| 設定場所 | インスタンス (ENI) | サブネット |
| 設定できるルール | 「許可」のみ | 「許可」と「拒否」 |
| 状態管理 | ステートフル(戻り通信は自動) | ステートレス(戻りも設定が必要) |
| ルールの評価 | すべてのルールを評価 | 番号順に評価 |
| 指定方法 | IPアドレス や 他のセキュリティグループ | IPアドレス (CIDR) のみ |
4. AWS Network Firewall
AWS Network Firewallは、VPC向けのファイアウォール機能です。
設定項目ではなく、マネージドサービスとして提供されています。
Network Firewallは、VPC内のアウトバウンド及びインバウンド両方のトラフィックを検査できます。
IPアドレスやポート番号によるチェックのほかに、侵入検知・防止システム(IDS/IPS)やドメイン名によるトラフィックのフィルタリングなどの機能を有し、セキュリティグループやネットワークACLよりも高度な設定が可能です。
IDS(Intrusion Detection System)は不審な通信を検知するシステム、IPS(Intrusion Prevention System)は、不審な通信を見つけたらその場で遮断する侵入防止システムです。
Network Firewallには、AWS が管理する過去の攻撃パターン(シグネチャ)と悪意のあるドメイン名のルールグループが追加料金なしで含まれており、これらと照らし合わせることで、脆弱性を突くような通信をリアルタイムで止めることが可能です。
また、ユーザーが任意の検知ルールを加えたい場合は、Network Firewallルールグループに記載し、ファイアウォールポリシーに付与します。
Network Firewallは既知のシグネチャを参考に不正な通信を検知します。未知の攻撃に対応する場合は、「いつもと違う振る舞い(アノマリ)」を機械学習で検知するAmazon GuardDutyが、その役割を担います。
Network Firewallを利用する際は、VPC内のプライベートサブネットを1つ、Network Firewall専用のサブネットとします。
Network Firewallの本体となる「ファイアウォール」コンポーネントをファイアウォールサブネットに付与することで、指定したサブネットに「ファイアウォールエンドポイント」が作成されます。
インターネットへの通信のルートテーブル(IGWやNATゲートウェイへ行くサブネットのルートテーブル、サブネットへ行くIGWやNATゲートウェイのルートテーブル)をファイアウォールエンドポイントに書き換えることで、通信をファイアウォールの検問に誘導することができます。
これによって、VPCを出入りする通信をもれなくチェックします。
Network Firewallはマネージドサービスであるため、スケーリングなどは自動で行われます。
ファイアウォールエンドポイントはAZ単位で作成されるため、単一AZにのみ配置した場合、そのAZで障害が発生するとトラフィック検査が行えなくなります。
そのため、ユーザー側で複数AZにエンドポイントを配置する設計が推奨されます。
Network Firewallの利用には、料金がかかります。
具体的な料金は以下の通りです。
| 項目 | 内容 | 金額 |
|---|---|---|
| エンドポイント時間料金 | エンドポイントを維持する固定費。AZごとに発生する。 | 0.395ドル/時間 |
| データ処理料金 | 通過した通信量 | 0.065ドル / GB |
| データ転送料金 | 通常のEC2などと同様のインターネット転送費。 | 送信先により変動 |
NATゲートウェイと併用する場合、特定条件下でNATゲートウェイ側のデータ処理料金および時間料金が課金対象外となる割引が適用されます。
プライベートサブネットからインターネットを利用する場合は、NATゲートウェイとNetwork Firewallの両方を通行することになります。
そのため、データ転送量などが二重課金とならないように、AWSでは、Network Firewallを通る通信については、NATゲートウェイ側の「時間料金」と「データ処理料金」を無料にする割引が用意されています。
5. AWS WAF(Web Application Firewall)
AWS WAF(Web Application Firewall)は、その名の通り「Webアプリケーション(HTTP/HTTPS)」を標的とした攻撃からシステムを守るためのファイアウォールです。
HTTP/HTTPSパケットの中身(URLクエリ文字列、ヘッダー、Cookie、POSTボディの内容)を文字レベルで検査するL7の検問です。
具体的には以下のような脅威をチェックしています。
-
SQLインジェクション対策:データベース操作命令が入力フォームに紛れ込んでいないか。
-
XSS対策: スクリプトタグなど、悪意のあるプログラムコードが含まれていないか。
-
地理的制限 (Geo Match): 特定の国からのアクセスをブロックする。
-
ボット制御: スクレイピングや不正ログインを試みる自動プログラムを検知・遮断する。
WAFでは、「AWSマネージドルール」を利用できます。
AWSマネージドルールとは、AWSのセキュリティチームが、世界中で発生している最新の攻撃トレンドを分析して作成した防御ルールです。
最新の脅威情報をAWS側が自動的に更新し続けているため、セキュリティの専門知識がないユーザーでも、WAFを導入するだけで、アプリの防御状態を最新に保つことが可能です。
WAFを利用する場合、アプリケーションの玄関口となるサービスに「Web ACL」と呼ばれるアクセス制御リストを付与します。
Web ACLには、訪問者のIPアドレスや、Webページへのリクエスト内(L7)に基づいて、どのようなアクセスを許可し、どのようなアクセスを遮断するかを細かく指定することができます。
1つのWeb ACLを複数のリソースに付与することも可能です。
Web ACLは、以下のリソースに付与可能です。
- Amazon CloudFront ディストリビューション
- Amazon API Gateway REST API
- Application Load Balancer
- AWS AppSync GraphQL API
- Amazon Cognito ユーザープール
- AWS App Runner サービス
- AWS Verified Access インスタンス
- AWS Amplify
WAFはマネージドサービスであるため、自動的に冗長化されています。
ユーザー側で可用性を意識する必要はありません。
利用料金は以下の通りです。
| 項目 | 金額 |
|---|---|
| Web ACL | 5.00ドル/月(時間単位で案分) |
| ルール | 1.00ドル/月(時間単位で案分) |
| リクエスト | 0.60ドル/100 万リクエスト |
6. AWS Firewall Manager
AWS Firewall Managerは、複数アカウントにセキュリティ対策を実施するためのサービスです。
複数アカウントを束ねるAWS Organizationsと連携して、Organizations内の全アカウントに対して一貫したセキュリティポリシーを適用できます。
一度保護を設定するだけで、以後追加する新しいアカウントとリソースにも自動的に適用されるため、管理やメンテナンスコストを抑えることができます。
また、コンプライアンスを監視し、ポリシー違反を検知したら、自動的にポリシーに基づいた設定に修正することも可能です。
対象となるサービスは、以下の通りです。
- VPCのセキュリティグループ
- ネットワークACL
- AWS Shield Advanced
- Amazon Route 53 Resolver
- AWS Network Firewall
- AWS WAF
Firewall Managerは冗長化されているため、ユーザーが可用性について考える必要はありません。
利用料金は、1ポリシーにつき、100ドル/月かかるうえ、設定された各サービスの利用料金が別途必要になります。
まとめ
| サービス | 採用する主なケース | 設計上の留意点 |
|---|---|---|
| セキュリティグループ | インスタンス単位で最小権限の原則(許可のみ)を適用したい場合。 | インスタンスごとに設定が必要。拒否ルールは書けない。 |
| ネットワークACL | サブネット全体の強制拒否。特定の悪意あるIP帯域からの通信を「サブネットの入り口」で即座に遮断したい場合。 | ステートレスなため、戻りの通信(エフェメラルポート)を考慮した高度な設計スキルが求められる。 |
| Network Firewall | VPC全体の高度な統制。アウトバウンド通信のドメイン制限や、IPSによるディープパケットインスペクションが必要なエンタープライズ環境。 | 導入によるルートテーブルの複雑化と、固定費(エンドポイント料金)が高めである点。 |
| AWS WAF | L7層のアプリケーション保護。SQLインジェクションやクロスサイトスクリプティング(XSS)などのWeb特有の攻撃を防ぎたい場合。 | リクエスト数に応じた従量課金が発生するため、トラフィック量に応じたコスト試算が必要 |
| Firewall Manager | マルチアカウント管理。Organizations環境で、全アカウントに一律のセキュリティ統制を自動適用し、ガバナンスを維持したい場合。 | ポリシーあたりの単価が高いため、小規模な環境ではコスト過多になる可能性がある。 |
記事は以上です。
最後までお読みいただき、ありがとうございました。
参考情報一覧
この記事は以下の情報を参考にして執筆しました。
- [AWS 認定資格試験テキスト AWS認定 ソリューション アーキテクト - アソシエイト 改定第3版]
- [徹底攻略AWS認定ソリューション アーキテクト - アソシエイト 教科書 第3版]
- [ストーリーで学ぶネットワークの基本]
- ping-t
- AWSの盾、Network Firewall の仕組みとコストを解説! (最終更新 2024-04-01) (参照 2026-04-15)
- セキュリティグループを使用して AWS リソースへのトラフィックを制御する (参照 2026-04-15)
- ネットワークアクセスコントロールリストを使用して、サブネットのトラフィックを制御する (参照 2026-04-15)
- ネットワーク ACL ルール (参照 2026-04-15)
- AWS Network Firewall (参照 2026-04-15)
- AWS Network Firewall の料金 (参照 2026-04-15)
- AWS WAF (参照 2026-04-15)
- AWS WAF の料金 (参照 2026-04-15)
- AWS Firewall Manager (参照 2026-04-15)
- AWS Firewall Manager の料金 (参照 2026-04-15)