ステートフルとステートレスの動作の違い
各制御によって戻りトラフィックの処理が異なる理由を理解します。
「ステートフルとステートレスの動作の違い」はCoddyKit上の無料AWS Security Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはAWS Security Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 AWS Security Academyコースには全4レッスンが含まれています。
2つのモデル
セキュリティグループとネットワークACLの最も本質的な違いは、状態の追跡です。セキュリティグループはステートフルで、ネットワークACLはステートレスです。この1つの性質によって、ルールの記述方法、破棄されたトラフィックのトラブルシューティング、応答パケットの考え方が変わります。
ステートフルとは
ステートフルとは、ファイアウォールが許可した各接続を記憶することです。セキュリティグループがインバウンドのリクエストを許可すると、状態テーブルで接続を追跡し、一致する応答のアウトバウンドも自動的に許可します。応答トラフィック用のルールを記述する必要はありません。
ステートレスとは
ステートレスとは、ファイアウォールが以前のパケットを記憶せず、各パケットを独立して評価することです。インバウンドのリクエストを許可したネットワークACLが、応答を自動的に許可することはありません。応答方向用の別のルールを追加しなければ、応答は破棄されます。
応答トラフィックで重要な理由
クライアントがポート443でWebサーバーに接続するとします。サーバーはポート443から、クライアントの高い番号のエフェメラルポートへ応答します。セキュリティグループでは、この応答は自動的に許可されます。NACLでは、エフェメラルポート範囲へのアウトバウンド許可が必要です。これがなければ、接続はハングした後に失敗します。
エフェメラルポートの落とし穴
NACLのアウトバウンドルールでエフェメラルポートを忘れることは、ステートレス構成で最もよくあるミスです。リクエストはサーバーに到達しますが、応答は何の通知もなく拒否されます。カスタムNACLでは、アウトバウンド応答用に、関連するエフェメラルポート範囲(一般的には1024~65535)を必ず許可してください。
# Outbound NACL allow for return traffic
Rule 100: TCP 1024-65535 to 0.0.0.0/0 ALLOWトラブルシューティングの違い
トラフィックが原因不明でブロックされた場合は、症状に対応する層を確認します。接続は確立するものの応答が失敗する場合は、エフェメラルポートが不足しているステートレスNACLを疑います。まったく接続できない場合は、セキュリティグループの許可不足、またはリクエストポートに対するNACLの拒否を疑います。
評価順序
リソースへのインバウンドトラフィックでは、まずサブネット境界のNACLが評価され、次にENIのセキュリティグループが評価されます。アウトバウンドでは、先にセキュリティグループ、次にNACLが確認されます。トラフィックが通過するには両方が許可する必要があるため、どちらの層でもフローを気付かれないままブロックできます。
パフォーマンスとシンプルさ
ステートフルであるため、セキュリティグループは管理しやすく、日常的な制御手段として使われます。意図を一度記述すれば、応答トラフィックは自動的に機能します。ステートレスなNACLではルールが2倍必要になり、ポートを慎重に計算しなければならないため、限定的に使用されます。
ステートレスが役立つ場合
ステートレスであることが有利になる場合もあります。NACLは各パケットを単独で扱うため、拒否ルールで一方向のトラフィックだけをブロックでき、確立済みの接続を含むすべての接続に即座に適用されます。そのため、インシデント発生時の強力かつ即時的なブロックに効果的です。
確立済みの接続
セキュリティグループのルールを変更すると、追跡中の既存接続に対しても新しいパケットから影響しますが、状態追跡によって一部のフローが短時間存続する場合があります。ステートレスなNACLの拒否は、あらゆる接続の次のパケットから有効になります。この即時性は、活動中の攻撃者を封じ込める際に重要です。
まとめとなる mental model
セキュリティグループは、入場を許可した相手を覚えていて戻る際に通してくれる賢い警備員、NACLは記憶なしにパケットごとに確認するルール表だと考えてください。どちらがステートフルかを知ることは、SCS-C02試験で最も頻繁に問われる事項の1つです。
クイックチェック
ステートフルとステートレスの違いを適用してみましょう。
まとめ
セキュリティグループはステートフルで、許可されたリクエストには応答トラフィックが自動的に許可されます。ネットワークACLはステートレスで、各パケットを単独で判定するため、応答用にエフェメラルポートを明示的に許可する必要があります。インバウンドの順序はNACL、SGの順、アウトバウンドはSG、NACLの順で、両方が許可しなければなりません。接続は確立するものの応答が失敗する場合は、ステートレスな設定でエフェメラルポートが不足している可能性があります。
よくある質問
「ステートフルとステートレスの動作の違い」レッスンは無料ですか?
はい。「ステートフルとステートレスの動作の違い」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、AWS Security Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 AWS Security Academyコースには全4レッスンが含まれています。
「ステートフルとステートレスの動作の違い」で何を学びますか?
各制御によって戻りトラフィックの処理が異なる理由を理解します。 ブラウザで直接実行するハンズオンコードでAWS Security Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
AWS Security Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのAWS Security Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。
「ステートフルとステートレスの動作の違い」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このAWS Security Academyレッスンでコードを書いて実行できますか?
はい。すべてのAWS Security Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- セキュリティグループがトラフィックをフィルタリングする仕組み
- ネットワークACLがサブネットをフィルタリングする仕組み
- ステートフルとステートレスの動作の違い
- 両方を組み合わせた多層防御