saru1439s7
@saru1439s7

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

キュリティーグループとネットワークACLの問題

解決したいこと

実務経験がないです。AWS認定試験 の対策しているのですが、セキュリティーグループとネットワークACLの問題で選択肢の違いがよくわからず、1)と3)が同じに思えてしまいます。何がわかっていないのかがよくわからずアドバイスいただきたいです。

問題文)

インターネットからアクセスできるウェブサーバで構成されている2層のアプリケーションを使用していて、データベースはプライベートからのみアクセス可能である。インターネットからウェブサーバへのアクセスをHTTPS/443ポートからの通信に制限する必要がある。この要件を満たす方法を2つ選ぶ。

選択肢

1)
インバウンドトラフィックとアウトバウンドトラフィックの両方でポート 443 を許可するネットワーク ACL を作成。
→ポート443の戻りの通信は任意のポートになって、アウトバンドトラフィックを有効にする必要があるため間違いになるとは??どういうこと

正解3)
ポート 443のインバウンドトラフィックを許可するセキュリティグループを作成
→セキュリティグループはインバウンドトラフィックを許可したら、アウトバンドも勝手に許可になるからこれで十分(ステートフル)

正解4)
ポート 443のインバウンドトラフィックと全ポートのアウトバウンドトラフィックを許可するネットワーク ACL を作成。
→ネットワーク ACLはステートレス、設定次第ではインバウンド通信は受け付けるけど、その戻りのアウトバウンド通信が出ていけない設定が可能

自分で調べたこと

セキュリティグループは
・ルールの「許可のみ」がサポート
・ステートフル: ルールに関係なく、返されたトラフィックが自動的に許可されます
・インスタンスレベルで動作

ネットワークACLは
・サブネットレベルで動作
・ルールの「許可と拒否」がサポート
・ステートレス: 返されたトラフィックがルールによって明示的に許可されます

0

1Answer

ネットワークACLのアウトバウンドルールでは、送信先のポートを指定する必要があります。
典型的なTCP通信では、サーバー側のポートは固定されますが(HTTPSでは一般的に443)、クライアント側のポートはその時々で変わります。

例えばクライアントが通信に24984番ポートを使用した場合、通信は以下のように行われます。

インバウンド
サーバー[:443] <- クライアント[:24984]

アウトバウンド
サーバー[:443] -> クライアント[:24984]

この際、アウトバウンドルールで24984番ポートが指定されていないと、戻りの通信に失敗します。
この「24984」という数字は通信のたびにほぼランダムで変化するので、全ポートを許可するか(使用されるであろうポート範囲の許可でも可)、セキュリティグループでステートフルに許可する必要があるのです。

ちなみにこのクライアント側の毎回変わるポートのことはエフェメラルポート(一時ポート)と言います。

2Like

Comments

  1. @saru1439s7

    Questioner

    @non_cal さま教えていただきありがとうございます。
    別の問題でも同じような文言で??となっていて理解できました!

    ・クライアント側のポートはその時々で変わってしまう
    ・全ポートを許可するか、セキュリティグループでステートフルに許可する
    必要があることイメージできました。

    わかりやすくコメントいただいて、理解できて嬉しかったです。
    本当にありがとうございました!

Your answer might help someone💌