9

Amazon Virtual Private Cloud(VPC)をセットアップしました。VPC内には、インスタンスを作成する2つのネットワークがあります。セキュリティ上の理由から、マシンのファイアウォールに加えて、これらのネットワークにいくつかのネットワークアクセス制御リスト(ネットワークACL)を配置したいと思います。Amazonの例に続いて、パブリックネットワーク(インターネットアクセスに公開)10.0.0.0/24と3つのプライベートネットワーク10.0.1.0/24、10.0.2.0/24、10.0.3.0/24があります。それらの間のトラフィックはルーティングされます。


したがって、ACLとしてのネットワーク10.0.1.0/24の場合、次のように記述します。

Inbound:
10.0.0.0/24 port 80 (HTTP)
10.0.0.0/24 port 22 (SSH)
10.0.2.0/24 port 3306 (MySql)
10.0.3.0/24 port 3306 (MySql)

Outbound
ALL ALL

ネットワーク10.0.2.0/24および10.0.3.0/24の場合:

Inbound 
10.0.1.0/24 port 3306 (MySql)

Outbound
ALL ALL

ここにあるパブリックネットワーク10.0.0.0/24の場合、公開されたロードバランサーがあり、トラフィックをプライベートネットワーク10.0.1.0/24にリダイレクトしています。ここで、アプリはHTTP経由で応答しています。

Inbound
0.0.0.0/0 port 80 (HTTP)
0.0.0.0/0 port 443 (HTTPS)
0.0.0.0/0 port 22 (SSH)

Outbound
ALL ALL

問題は、これらのルールを実行すると、すべてのトラフィックがフリーズし、アプリが利用できなくなることです。何が起こっていますか?私は何か間違ったことをしていますか?

4

2 に答える 2

20

アップデート

あなたのルールには現在、FAQ に関連する可能性が高い追加のフラグメントがありません。VPC のセキュリティ グループと VPC のネットワーク ACL の違いは何ですか?:

VPC のセキュリティ グループは、Amazon EC2 インスタンスとの間で許可されるトラフィックを指定します。ネットワーク ACL はサブネット レベルで動作し、サブネットに出入りするトラフィックを評価します。ネットワーク ACL を使用して、許可ルールと拒否ルールの両方を設定できます。ネットワーク ACL は、同じサブネット内のインスタンス間のトラフィックをフィルタリングしません。さらに、ネットワーク ACL はステートレス フィルタリングを実行し、セキュリティ グループはステートフル フィルタリングを実行します[鉱山を強調]

これについては、ステートフル フィルタリングとステートレス フィルタリングの違いは何ですか? でさらに説明されています。:

ステートフル フィルタリングは、要求の発信元を追跡し 、要求に対する応答を発信元のコンピューターに返すことを自動的に許可できます。[...]

一方、ステートレス フィルタリングは、送信元または宛先の IP アドレスと宛先ポートのみを調べ、トラフィックが新しい要求であるか要求への応答であるかを無視します。上記の例では、フィルタリング デバイスに 2 つのルールを実装する必要があります。1 つは、TCP ポート 80 で Web サーバーへの受信トラフィックを許可するルールで、もう 1 つは Web サーバーからの送信トラフィックを許可するルール です (TCP ポート範囲 49,152 ~ 65,535)。 . [鉱山を強調]

ここで、すべてのアウトバウンド トラフィックを既に許可しているため、これは例のようには当てはまりませんが、同じ問題が逆にも当てはまります。たとえば、EC2 インスタンスから発信された HTTP リクエストの場合、対応する必要があります。概説したインバウンド ルール。詳細については、「ネットワーク ACL内のエフェメラル ポート」セクションを参照してください。

リクエストを開始するクライアントは、エフェメラル ポート範囲を選択します。範囲は、クライアントのオペレーティング システムによって異なります。[...]

VPC 内のインスタンスがリクエストを開始するクライアントである場合、ネットワーク ACL には、インスタンスのタイプ (Amazon Linux、Windows Server 2008 など) に固有のエフェメラル ポート宛てのトラフィックを有効にするインバウンド ルールが必要です。

実際には、VPC 内の公開インスタンスへのトラフィックを開始する可能性のあるさまざまなタイプのクライアントをカバーするには、エフェメラル ポート 1024-65535 を開く必要があります。[...]

解決

したがって、「付録 A: 推奨されるネットワーク ACL ルール」内の「シナリオ 2 の推奨ルール」セクションでは、シナリオに次のインバウンド ルール (OS 依存の例) を提案しています。

Inbound:
0.0.0.0/0 port 49152-65535 (TCP)

この問題が実際に当てはまるかどうかをテストするには、単純にエフェメラル ポート範囲全体を含めます。

Inbound:
0.0.0.0/0 port 1024-65535 (TCP)

最初の回答 (廃止)

ここのパブリック ネットワーク 10.0.0.0/24 には、アプリが http 経由で応答するプライベート ネットワーク 10.0.1.0/24 にトラフィックをリダイレクトする公開されたロード バランサーがあります。

セットアップでは、通常どおりロード バランサーで SSL を終了することをお勧めします。セキュリティ要件の増加を考えると、実際にはバックエンド HTTPS 通信用にもElastic Load Balancingをセットアップしている可能性があります (「アーキテクチャの概要」を参照)。そのため、次の場合に欠落しているものになります。

Inbound:
10.0.0.0/24 port 80 (HTTP)
10.0.0.0/24 port 443 (HTTPS) // <= missing in your example currently!
10.0.0.0/24 port 22 (SSH)
10.0.2.0/24 port 3306 (MySql)
10.0.3.0/24 port 3306 (MySql)

Outbound
ALL ALL
于 2012-05-15T09:57:48.977 に答える
0

Tomcat、その他のサーブレットなどの例外に関して、10,000 未満のポートを除いてエフェメラル ポートを開きたい場合は、例外範囲ごとに特定のルールを作成するだけです。ルールは、最初に最小の番号から最大の番号の順に評価され、有効なルールの最大番号は 32766 です。

于 2016-05-02T16:37:57.760 に答える