メニュー
Amazon Virtual Private Cloud
ユーザーガイド

ネットワーク ACL

ネットワークアクセスコントロールリスト (ACL) は、1 つ以上のサブネットのインバウンドトラフィックとアウトバウンドトラフィックを制御するファイアウォールとして動作する、VPC 用のセキュリティのオプションレイヤーです。セキュリティの追加レイヤーを VPC に追加するには、セキュリティグループと同様のルールを指定したネットワーク ACL をセットアップできます。セキュリティグループとネットワーク ACL の違いの詳細については、「セキュリティグループとネットワーク ACL の比較」を参照してください。

ネットワーク ACL の基本

ネットワーク ACL について知っておく必要がある基本的な情報を以下に示します。

  • VPC には、変更可能なデフォルトのネットワーク ACL が自動的に設定されます。デフォルトでは、この ACL はすべてのインバウンドトラフィックとアウトバウンドトラフィックを許可します。

  • カスタムネットワーク ACL を作成し、サブネットと関連付けることができます。デフォルトでは、各カスタムネットワーク ACL は、ルールを追加するまですべてのインバウンドトラフィックとアウトバウンドトラフィックを拒否します。

  • VPC 内の各サブネットにネットワーク ACL を関連付ける必要があります。ネットワーク ACL に明示的にサブネットを関連付けない場合、サブネットはデフォルトのネットワーク ACL に自動的に関連付けられます。

  • 1 つのネットワーク ACL を複数のサブネットに関連付けることができます。ただし、1 つのサブネットは一度に 1 つのネットワーク ACL にのみ関連付けることができます。サブネットとネットワーク ACL を関連付けると、以前の関連付けは削除されます。

  • ネットワーク ACL には、低い番号から順に評価される番号付きのルールリストが含まれ、ネットワーク ACL に関連付けられたサブネットのインバウンドトラフィックまたはアウトバウンドトラフィックが許可されるかどうかを指定します。ルールに使用できる最も高い番号は 32766 です。まずは 100 の倍数のルール番号を付けたルールを作成することをお勧めします。こうすると、後で必要になったときに新しいルールを挿入できます。

  • ネットワーク ACL には個別のインバウンドルールとアウトバウンドルールがあり、各ルールでトラフィックを許可または拒否できます。

  • ネットワーク ACL はステートレスです。許可されているインバウンドトラフィックに対する応答は、アウトバウンドトラフィックのルールに従います (その逆の場合も同様です)。

作成できるネットワーク ACL の数の詳細については、「Amazon VPC の制限」を参照してください。

ネットワーク ACL ルール

デフォルトのネットワーク ACL に対してルールの追加または削除を行うことができます。また、VPC に合わせて追加のネットワーク ACL を作成することができます。ネットワーク ACL に対してルールの追加または削除を行うと、変更内容は、その ACL に関連付けられているサブネットに自動的に適用されます。

次に、ネットワーク ACL ルールの一部を示します。

  • ルール番号。ルールは、最も低い番号のルールから評価されます。ルールがトラフィックに一致すると、それと相反するより高い数値のルールの有無にかかわらず、すぐに適用されます。

  • プロトコル。標準のプロトコル番号を持つ任意のプロトコルを指定できます。詳細については、「プロトコル番号」を参照してください。プロトコルとして ICMP を指定する場合、任意またはすべての ICMP タイプとコードを指定できます。

  • [インバウンドルールのみ] トラフィックの送信元 (CIDR の範囲) と送信先 (リッスン) ポートまたはポートの範囲。

  • [アウトバウンドルールのみ] トラフィックの送信先 (CIDR の範囲) と送信先ポートまたはポートの範囲。

  • 指定したトラフィックに関する許可または拒否の選択。

デフォルトのネットワーク ACL

デフォルトのネットワーク ACL は、すべてのトラフィックが、関連するサブネットを出入りすることを許可するように設定されます。各ネットワーク ACL には、ルール番号がアスタリスクのルールが含まれます。このルールによって、パケットが他のいずれの番号のルールとも一致しない場合は、確実に拒否されます。このルールを変更または削除することはできません。デフォルトのネットワーク ACL の例を次に示します。

インバウンド
ルール番号タイプ プロトコル ポート範囲 送信元 許可/拒否

100

すべてのトラフィック

すべて

すべて

0.0.0.0/0

許可

*

すべてのトラフィック

すべて

すべて

0.0.0.0/0

拒否

アウトバウンド
ルール番号タイプ プロトコル ポート範囲送信先 許可/拒否

100

すべてのトラフィック

すべて

すべて

0.0.0.0/0

許可

*

すべてのトラフィック

すべて

すべて

0.0.0.0/0

拒否

カスタムネットワーク ACL

次の表に、カスタムネットワーク ACL の例を示します。この ACL には、HTTP および HTTPS のインバウンドトラフィック (インバウンドルール 100 および 110) を許可するルールが含まれます。そのインバウンドトラフィックに対する応答を可能にする、対応するアウトバウンドルールがあります (一時ポート 49152~65535 を対象とするアウトバウンドルール 120)。適切な一時ポートの範囲を選択する方法の詳細については、「一時ポート」を参照してください。

ネットワーク ACL には、SSH および RDP からサブネットに対するトラフィックを許可するインバウンドルールも含まれます。アウトバウンドルール 120 は、サブネットに送信される応答を可能にします。

ネットワーク ACL には、サブネットからの HTTP および HTTPS のアウトバウンドトラフィックを許可するアウトバウンドルール (100 および 110) があります。そのアウトバウンドトラフィックに対する応答を可能にする、対応するインバウンドルールがあります (一時ポート 49152~65535 を対象とするインバウンドルール 140)。

Note

各ネットワーク ACL には、ルール番号がアスタリスクのデフォルトルールが含まれます。このルールによって、パケットが他のいずれのルールとも一致しない場合は、確実に拒否されます。このルールを変更または削除することはできません。

インバウンド
ルール番号 タイプ プロトコル ポート範囲 送信元 許可/拒否 コメント

100

HTTP

TCP

80

0.0.0.0/0

許可

すべての場所からのインバウンド HTTP トラフィックを許可します。

110

HTTPS

TCP

443

0.0.0.0/0

許可

すべての場所からのインバウンド HTTPS トラフィックを許可します。

120

SSH

TCP

22

192.0.2.0/24

許可

(インターネットゲートウェイを介した) ホームネットワークのパブリック IP アドレスの範囲からのインバウンド SSH トラフィックを許可します。

130

RDP

TCP

3389

192.0.2.0/24

許可

(インターネットゲートウェイを介した) ホームネットワークのパブリック IP アドレスの範囲からウェブサーバーに対するインバウンド RDP トラフィックを許可します。

140

カスタム TCP

TCP

49152~65535

0.0.0.0/0

許可

(送信元がサブネットであるリクエストに対する) インターネットからのインバウンドリターントラフィックを許可します。

適切な一時ポートの範囲を選択する方法の詳細については、「一時ポート」を参照してください。

*

すべてのトラフィック

すべて

すべて

0.0.0.0/0

拒否

前のルールでまだ処理されていないすべてのインバウンドトラフィックを拒否します (変更不可能)。

アウトバウンド
ルール番号 タイプ プロトコル ポート範囲 送信先 許可/拒否 コメント

100

HTTP

TCP

80

0.0.0.0/0

許可

サブネットからインターネットへのアウトバウンド HTTP トラフィックを許可します。

110

HTTPS

TCP

443

0.0.0.0/0

許可

サブネットからインターネットへのアウトバウンド HTTPS トラフィックを許可します。

120

カスタム TCP

TCP

49152~65535

0.0.0.0/0

許可

インターネット上のクライアントに対するアウトバウンド応答を許可します (例えば、サブネット内のウェブサーバーを訪問するユーザーに対するウェブページの提供など)。

適切な一時ポートの範囲を選択する方法の詳細については、「一時ポート」を参照してください。

*

すべてのトラフィック

すべて

すべて

0.0.0.0/0

拒否

前のルールでまだ処理されていないすべてのアウトバウンドトラフィックを拒否します (変更不可能)。

パケットがサブネットに送信されると、サブネットが関連付けられている ACL の進入ルールと照合して評価されます (ルールリストの一番上から順に一番下まで評価されます)。パケットが SSL ポート (443) あての場合の評価方法は次のとおりです。パケットは最初に評価されるルール (ルール 100) と一致しません。また、2 番目のルール (110) とは一致します。このルールでは、サブネットに送信されるパケットを許可します。パケットがポート 139 (NetBIOS) あての場合、先頭の 2 つのルールは一致しませんが、最終的に * ルールによってパケットが拒否されます。

正当に幅広い範囲のポートを開く必要があり、その範囲内の特定のポートは拒否したい場合は、拒否ルールを追加します。このとき、テーブル内で、幅広い範囲のポートトラフィックを許可するルールよりも先に拒否ルールを配置します。

Important

Elastic Load Balancing では、バックエンドインスタンスのサブネットに、ソースが 0.0.0.0/0 であるかサブネットの CIDR であるすべてのトラフィックに追加した拒否ルールを適用するネットワーク ACL がある場合、ロードバランサーはインスタンスのヘルスチェックを実行できません。ロードバランサーとバックエンドインスタンスに推奨されるネットワーク ACL ルールの詳細については、Classic Load Balancer ガイド の「VPC のロードバランサーのネットワーク ACL」を参照してください。

一時ポート

前のセクションでは、ネットワーク ACL の例に 49152~65535 という一時ポートの範囲を使用しています。ただし、使用または通信しているクライアントの種類によっては、ネットワーク ACL に別の範囲を使用してもかまいません。

リクエストを開始するクライアントは、一時ポートの範囲を選択します。範囲は、クライアントのオペレーティングシステムによって変わります。多くの Linux カーネル (Amazon Linux カーネルを含む) は、ポート 32768~61000 を使用します。Elastic Load Balancing が送信元のリクエストは、ポート 1024~65535 を使用します。Windows Server 2003 を介する Windows オペレーティングシステムは、ポート 1025~5000 を使用します。Windows Server 2008 以降のバージョンでは、ポート 49152~65535 を使用します。NAT ゲートウェイはポート 1024~65535 を使用します。たとえば、インターネット上の Windows XP クライアントから、お使いの VPC のウェブサーバーにリクエストが送信される場合、ネットワーク ACL には、ポート 1025~5000 あてのトラフィックを可能にするアウトバウンドルールを用意する必要があります。

VPC 内のインスタンスが、リクエストを開始するクライアントの場合、ネットワーク ACL には、インスタンス (Amazon Linux、Windows Server 2008 など) の種類に固有の一時ポートあてのトラフィックを可能にするインバウンドルールを用意する必要があります。

実際に、VPC 内のパブリックに面したインスタンスに対して、トラフィックを開始することができる多様なクライアントを対象にするには、一時ポート 1024~65535 を開くことができます。ただし、その範囲内で悪意のあるポートのトラフィックを拒否するルールを ACL を追加することもできます。このとき、テーブル内で、幅広い範囲の一時ポートを開く許可ルールよりも先に拒否ルールを配置します。

ネットワーク ACL の操作

ここでは、Amazon VPC コンソールを使用してネットワーク ACL を操作する方法について説明します。

ネットワーク ACL の関連付けの確認

Amazon VPC コンソールを使用して、サブネットに関連付けられているネットワーク ACL を確認することができます。ネットワーク ACL を複数のサブネットに関連付けて、ネットワーク ACL に関連付けられているサブネットを確認することもできます。

サブネットと関連付けられているネットワーク ACL を確認するには

  1. https://console.aws.amazon.com/vpc/にある Amazon VPC コンソールを開きます。

  2. ナビゲーションペインで [Subnets] を選択し、サブネットを選択します。

    サブネットに関連付けられているネットワーク ACL は、ネットワーク ACL のルールと共に [Network ACL] タブに表示されます。

ネットワーク ACL に関連付けられたサブネットを決定するには

  1. https://console.aws.amazon.com/vpc/にある Amazon VPC コンソールを開きます。

  2. ナビゲーションペインの [Network ACLs] を選択します。[Associated With] 列には、各ネットワーク ACL に関連付けられているサブネットの数が表示されます。

  3. ネットワーク ACL を選択します。

  4. 詳細ペインで [Subnet Associations] を選択して、ネットワーク ACL に関連付けられているサブネットを表示します。

ネットワーク ACL を作成する

VPC のカスタムネットワーク ACL を作成できます。デフォルトでは、作成するネットワーク ACL により、ルールを追加するまですべてのインバウンドおよびアウトバウンドトラフィックがブロックされ、明示的に関連付けるまではサブネットと関連付けられません。

ネットワーク ACL を作成するには

  1. https://console.aws.amazon.com/vpc/にある Amazon VPC コンソールを開きます。

  2. ナビゲーションペインの [Network ACLs] を選択します。

  3. [Create Network ACL] を選択します。

  4. [Create Network ACL ] ダイアログボックスで、オプションでネットワーク ACL に名前を付けて、[VPC] リストから VPC の ID を選択して、[Yes, Create] を選択します。

ルールの追加と削除

ACL のルールの追加または削除を行うと、その ACL に関連付けられたすべてのサブネットに変更が反映されます。サブネット内のインスタンスを削除して再作成する必要はありません。短時間で変更が反映されます。

Amazon EC2 API またはコマンドラインツールを使用している場合は、ルールを変更することはできません。ルールを追加および削除できるのみです。Amazon VPC コンソールを使用している場合は、既存のルールのエントリを変更できます (コンソールによってルールが削除され、新しいルールが追加されます)。ACL のルールの順序を変更する必要がある場合は、新しいルール番号を指定した新しいルールを追加してから、元のルールを削除します。

ルールをネットワーク ACL に追加するには

  1. https://console.aws.amazon.com/vpc/にある Amazon VPC コンソールを開きます。

  2. ナビゲーションペインの [Network ACLs] を選択します。

  3. 詳細ペインで、追加する必要があるルールの種類に応じて、[Inbound Rules] タブまたは [Outbound Rules] タブを選択し、[Edit] を選択します。

  4. [Rule #] にルール番号 (100 など) を入力します。ネットワーク ACL にすでに使用されているルール番号は使用できません。ルールは、最も低い番号から順に処理されます。

    Tip

    ルール番号は、連続番号 (101、102、103 など) を使用せずに、間を空けておくことをお勧めします (100、200、300 など)。こうすることで、既存のルールに番号を振り直さなくても、新しいルールを簡単に追加できるようになります。

  5. [Type] リストからルールを選択します。たとえば、HTTP のルールを追加するには、[HTTP] を選択します。すべての TCP トラフィックを許可するルールを追加するには、[All TCP] を選択します。これらのオプションの一部 (HTTP など) については、ポートが自動入力されます。表示されていないプロトコルを使用するには、[Custom Protocol Rule] を選択します。

  6. (オプション) カスタムプロトコルルールを作成する場合は、[Protocol] リストからプロトコルの番号または名前を選択します。詳細については、「プロトコル番号の IANA リスト」を参照してください。

  7. (オプション) 選択したプロトコルにポート番号が必要な場合、ポート番号またはハイフンで区切ったポート番号の範囲 (49152-65535 など) を入力します。

  8. インバウンドルールかアウトバウンドルールかに応じて、[Source] または [Destination] フィールドに、ルールを適用する CIDR の範囲を入力します。

  9. [Allow/Deny] リストから、指定したトラフィックを許可するには [ALLOW]、指定したトラフィックを拒否するには [DENY] を選択します。

  10. (オプション) 別のルールを追加するには、[Add another rule] を選択し、必要に応じてステップ 4~9 を繰り返します。

  11. 完了したら、[Save ] を選択します。

ネットワーク ACL からルールを削除するには

  1. https://console.aws.amazon.com/vpc/にある Amazon VPC コンソールを開きます。

  2. ナビゲーションペインで [Network ACLs] を選択してから、ネットワーク ACL を選択します。

  3. 詳細ペインで、[Inbound Rules] タブまたは [Outbound Rules] タブを選択してから、[Edit] を選択します。削除するルールの [Remove] を選択し、[Save] を選択します。

サブネットをネットワーク ACL と関連付ける

ネットワーク ACL のルールを特定のサブネットに適用するには、サブネットをネットワーク ACL と関連付ける必要があります。1 つのネットワーク ACL を複数のサブネットに関連付けることができます。ただし、1 つのサブネットは 1 つのネットワーク ACL にのみ関連付けることができます。特定の ACL に関連付けられていないサブネットは、デフォルトでデフォルトのネットワーク ACL と関連付けられます。

サブネットをネットワーク ACL と関連付けるには

  1. https://console.aws.amazon.com/vpc/にある Amazon VPC コンソールを開きます。

  2. ナビゲーションペインで [Network ACLs] を選択してから、ネットワーク ACL を選択します。

  3. 詳細ペインの [Subnet Associations] タブで、[Edit] を選択します。ネットワーク ACL に関連付けるサブネットの [Associate] チェックボックスをオンにしてから、[Save] を選択します。

ネットワーク ACL とサブネットの関連付けの解除

これにより、カスタムネットワーク ACL の関連付けをサブネット — から解除することができ、サブネットはデフォルトのネットワーク ACL と自動的に関連付けられます。

サブネットとネットワーク ACL の関連付けを解除するには

  1. https://console.aws.amazon.com/vpc/にある Amazon VPC コンソールを開きます。

  2. ナビゲーションペインで [Network ACLs] を選択してから、ネットワーク ACL を選択します。

  3. 詳細ペインの [Subnet Associations] タブを選択します。

  4. [Edit] を選択して、サブネットの [Associate] チェックボックスをオフにします。[Save] を選択します。

サブネットのネットワーク ACL の変更

サブネットに関連付けられているネットワーク ACL を変更できます。例えば、サブネットを作成すると、初期状態で、そのサブネットにはデフォルトのネットワーク ACL が関連付けられます。このサブネットには、作成したカスタムネットワーク ACL を関連付けることができます。

サブネットのネットワーク ACL を変更した後は、サブネット内のインスタンスを削除して再作成する必要はありません。短時間で変更が反映されます。

サブネットのネットワーク ACL の関連付けを変更するには

  1. https://console.aws.amazon.com/vpc/にある Amazon VPC コンソールを開きます。

  2. ナビゲーションペインで [Subnets] を選択し、サブネットを選択します。

  3. [Network ACL] タブを選択し、[Edit] を選択します。

  4. [Network ACL] リストからサブネットを関連付けるネットワーク ACL を選択して、[Save] を選択します。

    NACL: テーブルを置き換える

ネットワーク ACL の削除

ネットワーク ACL に関連付けられているサブネットがない場合にのみ、そのネットワーク ACL を削除できます。デフォルトのネットワーク ACL は削除できません。

ネットワーク ACL を削除するには

  1. https://console.aws.amazon.com/vpc/にある Amazon VPC コンソールを開きます。

  2. ナビゲーションペインの [Network ACLs] を選択します。

  3. ネットワーク ACL を選択し、[Delete] を選択します。

  4. 確認ダイアログボックスで、[Yes, Delete] を選択します。

例: サブネットのインスタンスへのアクセスの制御

この例では、サブネットのインスタンスは相互に通信でき、信頼されたリモートコンピュータからアクセス可能です。リモートコンピュータは、ローカルネットワークのコンピュータ、または管理タスクを実行するためにインスタンスへの接続に使用する別のサブネットまたは VPC にあるインスタンスとすることができます。セキュリティグループルールとネットワーク ACL ルールでは、リモートコンピュータの IP アドレス (172.31.1.2/32) からのアクセスを許可します。インターネットまたは他のネットワークからのその他のトラフィックはすべて拒否されます。

セキュリティグループと NACL の使用

すべてのインスタンスは、以下のルールで同じセキュリティグループ (sg-1a2b3c4d) を使用します。

インバウンドルール
プロトコルタイププロトコルポート範囲送信元コメント
すべてのトラフィックすべてすべてsg-1a2b3c4d同じセキュリティグループに関連付けられたインスタンスがお互いに通信できるようにします。
TCPSSH22172.31.1.2/32リモートコンピュータからのインバウンド SSH アクセスを許可します。インスタンスが Windows コンピュータである場合、このルールでは代わりにポート 3389 に RDP プロトコルを使用する必要があります。
アウトバウンドルール
プロトコルタイププロトコルポート範囲送信先コメント
すべてのトラフィックすべてすべてsg-1a2b3c4d同じセキュリティグループに関連付けられたインスタンスがお互いに通信できるようにします。

サブネットは、以下のルールがあるネットワーク ACL に関連付けられます。

インバウンドルール
ルール番号タイププロトコルポート範囲送信元許可/拒否コメント
100SSHTCP22172.31.1.2/32許可リモートコンピュータからのインバウンドトラフィックを許可します。インスタンスが Windows コンピュータである場合、このルールでは代わりにポート 3389 に RDP プロトコルを使用する必要があります。
*すべてのトラフィックすべてすべて0.0.0.0/0拒否前のルールと一致する他のすべてのインバウンドトラフィックを拒否します。
アウトバウンドルール
ルール番号タイププロトコルポート範囲送信先許可/拒否コメント
100カスタム TCPTCP1024-65535172.31.1.2/32許可リモートコンピュータに対するアウトバウンド応答を許可します。ネットワーク ACL はステートレスであるため、インバウンドリクエストの応答トラフィックを許可するには、このルールが必要です。
*すべてのトラフィックすべてすべて0.0.0.0/0拒否前のルールと一致しない他のすべてのアウトバウンドトラフィックを拒否します。

このシナリオでは、インスタンスのセキュリティグループまたはセキュリティグループルールを変更し、防衛のバックアップレイヤーとしてネットワーク ACL を持つことができます。ネットワーク ACL ルールはサブネット内のすべてのインスタンスに適用されるため、誤ってセキュリティグループルールを過度に制限の低いものにした場合、ネットワーク ACL ルールで継続的に 1 つの IP アドレスからのみアクセスが許可されます。たとえば、次のルールでは前のルールよりも制限が低くなり、すべての IP アドレスからのインバウンド SSH アクセスが許可されます。

インバウンドルール
タイププロトコルポート範囲送信元コメント
すべてのトラフィックすべてすべてsg-1a2b3c4d同じセキュリティグループに関連付けられたインスタンスがお互いに通信できるようにします。
SSHTCP220.0.0.0/0すべての IP アドレスからの SSH アクセスを許可します。
アウトバウンドルール
タイププロトコルポート範囲送信先コメント
すべてのトラフィックすべてすべて0.0.0.0/0すべてのアウトバウンドトラフィックを許可します。

ただし、サブネット内の他のインスタンスおよびリモートコンピュータのみが、このインスタンスにアクセスできます。ネットワーク ACL ルールでは、リモートコンピュータからのものを除き、引き続きサブネットへのすべてのインバウンドトラフィックがブロックされます。

API とコマンドの概要

このページで説明しているタスクは、コマンドラインまたは API を使用して実行できます。コマンドラインインターフェイスの詳細および利用できる API の一覧については、「Amazon VPC へのアクセス」を参照してください。

VPC のネットワーク ACL を作成する

1 つまたは複数のネットワーク ACL について説明する

ルールをネットワーク ACL に追加する

ネットワーク ACL からルールを削除する

ネットワーク ACL の既存のルールを置換する

ネットワーク ACL の関連付けを置換する

ネットワーク ACL を削除する