VPC のカスタムネットワーク ACL
カスタムネットワーク ACL を作成して、それをサブネットに関連付けることで、サブネットレベルで特定のインバウンドトラフィックまたはアウトバウンドトラフィックを許可または拒否することができます。詳細については、「VPC のネットワーク ACL を作成する」を参照してください。
各ネットワーク ACL には、デフォルトのインバウンドルールと、ルール番号がアスタリスク (*) であるデフォルトの送信ルールが含まれます。これらのルールにより、パケットが他のどのルールにも一致しない場合は拒否されます。
ルールを追加または削除することで、ネットワーク ACL を変更できます。ルール番号がアスタリスクになっているルールは削除できません。
追加するルールごとに、応答トラフィックを許可するインバウンドルールまたはアウトバウンドルールが必要です。適切な一時ポートの範囲を選択する方法については、「一時ポート」を参照してください。
インバウンドルールの例
次の表は、ネットワーク ACL のインバウンドルールの例を示しています。IPv6 のルールは、VPC に関連付けられた IPv6 CIDR ブロックがある場合にのみ追加されます。IPv4 トラフィックと IPv6 トラフィックは個別に評価されます。したがって、IPv4 トラフィックのルールは IPv6 トラフィックには適用されません。対応する IPv6ルールの横に IPv6 ルールを追加したり、最後の IPv4 ルールの後に IPv6 ルールを追加したりもできます。
パケットがサブネットに送信されると、サブネットが関連付けられている ACL のインバウンドルールに対して、最も小さい番号のルールから順に評価されます。例えば、HTTPS ポート (443) 宛ての IPv4 トラフィックがあるとします。パケットがルール 100 または 105 と一致しません。これは、サブネットへのトラフィックを許可するルール 110 と一致します。パケットの宛先がポート 139 (NetBIOS) だった場合、番号付きルールのいずれにも一致しないため、IPv4 トラフィックの * ルールによって最終的にパケットが拒否されます。
ルール番号 | タイプ | プロトコル | ポート範囲 | 送信元 | 許可/拒否 | コメント |
---|---|---|---|---|---|---|
100 |
HTTP |
TCP |
80 |
0.0.0.0/0 |
許可 |
任意の IPv4 アドレスからのインバウンド HTTP トラフィックを許可します。 |
105 |
HTTP |
TCP |
80 |
::/0 |
許可 |
任意の IPv6 アドレスからのインバウンド HTTP トラフィックを許可します。 |
110 |
HTTPS |
TCP |
443 |
0.0.0.0/0 |
許可 |
任意の IPv4 アドレスからのインバウンド HTTPS トラフィックを許可します。 |
115 |
HTTPS |
TCP |
443 |
::/0 |
許可 |
任意の IPv6 アドレスからのインバウンド HTTPS トラフィックを許可します。 |
120 |
SSH |
TCP |
22 |
|
許可 |
(インターネットゲートウェイを介した)ホームネットワークのパブリック IPv4 アドレスの範囲からのインバウンド SSH トラフィックを許可します。 |
140 |
カスタム TCP |
TCP |
|
0.0.0.0/0 |
許可 |
(サブネットから発信されたリクエストの場合) インターネットからのインバウンドリターン IPv4 トラフィックを許可します。 |
145 |
カスタム TCP |
TCP |
|
::/0 |
許可 |
(送信元がサブネットであるリクエストの場合)インターネットからのインバウンドリターン IPv6 トラフィックを許可します。 |
* |
すべてのトラフィック |
すべて |
すべて |
0.0.0.0/0 |
DENY |
前のルールでまだ処理されていないすべてのインバウンド IPv4 トラフィックを拒否します (変更不可)。 |
* |
すべてのトラフィック |
すべて |
すべて |
::/0 |
拒否 |
前のルールでまだ処理されていないすべてのインバウンド IPv6 トラフィックを拒否します (変更不可)。 |
アウトバウンドルールの例
次の表は、カスタムネットワーク ACL のアウトバウンドルールの例を示しています。IPv6 のルールは、VPC に関連付けられた IPv6 CIDR ブロックがある場合にのみ追加されます。IPv4 トラフィックと IPv6 トラフィックは個別に評価されます。したがって、IPv4 トラフィックのルールは IPv6 トラフィックには適用されません。対応する IPv6ルールの横に IPv6 ルールを追加したり、最後の IPv4 ルールの後に IPv6 ルールを追加したりもできます。
ルール番号 | タイプ | プロトコル | ポート範囲 | 送信先 | 許可/拒否 | コメント |
---|---|---|---|---|---|---|
100 |
HTTP |
TCP |
80 |
0.0.0.0/0 |
許可 |
サブネットからインターネットへのアウトバウンド IPv4 HTTP トラフィックを許可します。 |
105 |
HTTP |
TCP |
80 |
::/0 |
許可 |
サブネットからインターネットへのアウトバウンド IPv6 HTTP トラフィックを許可します。 |
110 |
HTTPS |
TCP |
443 |
0.0.0.0/0 |
許可 |
サブネットからインターネットへのアウトバウンド IPv4 HTTPS トラフィックを許可します。 |
115 |
HTTPS |
TCP |
443 |
::/0 |
許可 |
サブネットからインターネットへのアウトバウンド IPv6 HTTPS トラフィックを許可します。 |
120 |
カスタム TCP |
TCP |
|
|
許可 |
ホーム ネットワークからの SSH トラフィックへのアウトバンド応答を許可します。 |
140 |
カスタム TCP |
TCP |
|
0.0.0.0/0 |
許可 |
インターネット上のクライアントに対するアウトバウンド IPv4 応答を許可します(例: ウェブページの提供)。 |
145 |
カスタム TCP |
TCP |
|
::/0 |
許可 |
インターネット上のクライアントに対するアウトバウンド IPv6 応答を許可します(例: ウェブページの提供)。 |
* |
すべてのトラフィック |
すべて |
すべて |
0.0.0.0/0 |
DENY |
前のルールでまだ処理されていないすべてのアウトバウンド IPv4 トラフィックを拒否します。 |
* |
すべてのトラフィック |
すべて |
すべて |
::/0 |
DENY |
前のルールでまだ処理されていないすべてのアウトバウンド IPv6 トラフィックを拒否します。 |
一時ポート
前のセクションでは、ネットワーク ACL の例に 32768~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 を使用します。
-
AWS Lambda 関数は、ポート 1024-65535 を使用します。
たとえば、インターネット上の Windows 10 クライアントから、お客様の VPC のウェブサーバーにリクエストが送信される場合、ネットワーク ACL には、ポート 49152 ~ 65535 宛てのトラフィックを可能にするアウトバウンドルールを用意する必要があります。
VPC 内のインスタンスが、リクエストを開始するクライアントの場合、ネットワーク ACL には、インスタンスのオペレーティング システムに固有の一時ポートあてのトラフィックを可能にするインバウンドルールを用意する必要があります。
実際に、VPC 内のパブリックに面したインスタンスに対して、トラフィックを開始することができる多様なクライアントを対象にするには、一時ポート 1024~65535 を開くことができます。ただし、その範囲内で悪意のあるポートのトラフィックを拒否するルールを ACL を追加することもできます。このとき、テーブル内で、幅広い範囲の一時ポートを開く許可ルールよりも先に拒否ルールを配置します。
カスタムネットワーク ACL およびその他の AWS のサービス
カスタムネットワーク ACL を作成する場合は、他の AWS のサービスを使用して作成したリソースにどのように影響するか注意してください。
Elastic Load Balancing では、バックエンドインスタンスのサブネットに、ソースが 0.0.0.0/0
であるかサブネットの CIDR のいずれかであるすべてのトラフィックに追加した拒否ルールを適用するネットワーク ACL がある場合、ロードバランサーはインスタンスのヘルスチェックを実行できません。ロードバランサーとバックエンドインスタンスに推奨されるネットワーク ACL ルールに関する詳細については、以下を参照してください。
到達可能性に関する問題のトラブルシューティング
Reachability Analyzer は静的な設定分析ツールです。Reachability Analyzer を使用して、VPC 内の 2 つのリソース間のネットワーク到達可能性を分析およびデバッグできます。Reachability Analyzer は、これらのリソースに到達可能な場合は、リソース間にある仮想パスのホップバイホップの詳細を生成し、そうでない場合はブロッキングコンポーネントを識別します。例えば、欠落した、または誤って設定されたネットワーク ACL のルールを特定できます。
詳細については、「Reachability Analyzer Guide」(到達可能性アナライザーガイド) を参照してください。