ネットワークACL
ネットワークアクセスコントロールリスト (ACL) は、1 つ以上のサブネットのインバウンドトラフィックとアウトバウンドトラフィックを制御するファイアウォールとして動作する、VPC 用のセキュリティのオプションレイヤーです。
セキュリティの追加レイヤーを VPC に追加するには、セキュリティグループと同様のルールを指定したネットワーク ACL をセットアップできます。
http://docs.aws.amazon.com/ja_jp/AmazonVPC/latest/UserGuide/VPC_ACLs.html
セキュリティグループとネットワークACLの違い
セキュリティグループ | ネットワーク ACL |
---|---|
インスタンスレベルで動作します (第 1 保護レイヤー) | サブネットレベルで動作します (第 2 保護レイヤー) |
ルールの許可のみがサポートされます | ルールの許可と拒否がサポートされます |
ステートフル: ルールに関係なく、返されたトラフィックが自動的に許可されます | ステートレス: 返されたトラフィックがルールによって明示的に許可されます |
トラフィックを許可するかどうかを決める前に、すべてのルールを評価します | トラフィックを許可するかどうかを決めるときに、順番にルールを処理します |
インスタンスの起動時に誰かがセキュリティグループを指定した場合、または後でセキュリティグループをインスタンスに関連付けた場合にのみ、インスタンスに適用されます。 | 関連付けられたサブネット内のすべてのインスタンスに自動的に適用されます (バックアップの保護レイヤーなので、セキュリティグループを指定する人物に依存する必要はありません) |
ネットワークACLの基本
- VPC には、変更可能なデフォルトのネットワーク ACL が自動的に設定されます。
デフォルトでは、すべてのインバウンドおよびアウトバウンドの IPv4 トラフィックと、IPv6 トラフィック (該当する場合) が許可されます。 - カスタムネットワーク ACL を作成し、サブネットと関連付けることができます。
デフォルトでは、各カスタムネットワーク ACL は、ルールを追加するまですべてのインバウンドトラフィックとアウトバウンドトラフィックを拒否します。 - VPC 内の各サブネットにネットワーク ACL を関連付ける必要があります。
ネットワーク ACL に明示的にサブネットを関連付けない場合、サブネットはデフォルトのネットワーク ACL に自動的に関連付けられます。 - 1 つのネットワーク ACL を複数のサブネットに関連付けることができます。
ただし、1 つのサブネットは一度に 1 つのネットワーク ACL にのみ関連付けることができます。
サブネットとネットワーク ACL を関連付けると、以前の関連付けは削除されます。 - ネットワーク ACL には、低い番号から順に評価される番号付きのルールリストが含まれ、ネットワーク ACL に関連付けられたサブネットのインバウンドトラフィックまたはアウトバウンドトラフィックが許可されるかどうかを指定します。
ルールに使用できる最も高い番号は 32766 です。
まずは 100 の倍数のルール番号を付けたルールを作成することをお勧めします。
こうすると、後で必要になったときに新しいルールを挿入できます。 - ネットワーク ACL には個別のインバウンドルールとアウトバウンドルールがあり、各ルールでトラフィックを許可または拒否できます。
- ネットワーク ACL はステートレスです。
許可されているインバウンドトラフィックに対する応答は、アウトバウンドトラフィックのルールに従います (その逆の場合も同様です)。
制限
- VPC 当たりのネットワーク ACL の数:200
- ネットワーク ACL 当たりのルールの数:20
ネットワークACLのルール
ネットワーク ACL に対してルールの追加または削除を行うと、変更内容は、その ACL に関連付けられているサブネットに自動的に適用されます。
- ルール番号。ルールは、最も低い番号のルールから評価されます。
ルールがトラフィックに一致すると、それと相反するより高い数値のルールの有無にかかわらず、すぐに適用されます。 - プロトコル。標準のプロトコル番号を持つ任意のプロトコルを指定できます。
プロトコルとして ICMP を指定する場合、任意またはすべての ICMP タイプとコードを指定できます。 - [インバウンドルールのみ] トラフィックの送信元 (CIDR の範囲) と送信先 (リッスン) ポートまたはポートの範囲。
- [アウトバウンドルールのみ] トラフィックの送信先 (CIDR の範囲) と送信先ポートまたはポートの範囲。
- 指定したトラフィックに関する許可または拒否の選択。
デフォルトACL
デフォルトのネットワーク ACL は、すべてのトラフィックが、関連するサブネットを出入りすることを許可するように設定されます。
各ネットワーク ACL にも、ルール番号がアスタリスクのルールが含まれます。
このルールによって、パケットが他のいずれの番号のルールとも一致しない場合は、確実に拒否されます。
このルールを変更または削除することはできません。
IPv6 CIDR ブロックを持つ VPC を作成するか、IPv6 CIDR ブロックを既存の VPC と関連付ける場合は、すべての IPv6 トラフィックがサブネット間を流れるようにするルールが自動的に追加されます。
デフォルトのネットワーク ACL のインバウンドルールを変更した場合は、IPv6 ブロックを VPC と関連付けても、インバウンド IPv6 トラフィックを許可するルールが自動的に追加されることはありません。
同様に、アウトバウンドルールを変更した場合、アウトバウンド IPv6 を許可するルールが自動的に追加されることはありません。
エフェメラルポートの取扱
VPC 内のインスタンスが、リクエストを開始するクライアントの場合、ネットワーク ACL には、インスタンス (Amazon Linux、Windows Server 2008 など) の種類に固有の一時ポートあてのトラフィックを可能にするインバウンドルールを用意する必要があります。
実際に、VPC 内のパブリックに面したインスタンスに対して、トラフィックを開始することができる多様なクライアントを対象にするには、一時ポート 1024~65535 を開くことができます。
ただし、その範囲内で悪意のあるポートのトラフィックを拒否するルールを ACL を追加することもできます。
このとき、テーブル内で、幅広い範囲の一時ポートを開く許可ルールよりも先に拒否ルールを配置します。