接続追跡 - Amazon Elastic Compute Cloud

接続追跡

セキュリティグループは、接続追跡を使用してインスタンスを出入りするトラフィックに関する情報を追跡します。ルールはトラフィックの接続の状態に基づいて適用され、トラフィックを許可するか拒否するかが判断されます。このアプローチにより、セキュリティグループをステートフルにすることができます。これは、セキュリティグループのアウトバウンドルールにかかわらず、インバウンドトラフィックに対するレスポンスがインスタンスから送信されることを許可することを意味します。逆も同じです。たとえば、自宅のコンピュータからインスタンスへの ICMP ping コマンドを開始した場合、セキュリティグループのインバウンドルールが ICMP トラフィックを許可している場合は接続に関する情報 (ポート情報など) が追跡されます。ping コマンドに対するインスタンスからのレスポンストラフィックは、新しいリクエストではなく確立済みの接続として追跡され、セキュリティグループのアウトバウンドルールがアウトバウンド ICMP トラフィックを制限している場合でも、インスタンスから外に流れることが許されます。

すべてのトラフィックフローが追跡されるわけではありません。セキュリティグループのルールが、すべてのトラフィック (0.0.0.0/0 または ::/0) について TCP または UDP フローを許可していて、他の方向ですべてのポート (0~65535) のすべての応答トラフィック (0.0.0.0/0 または ::/0) を許可するルールがある場合、そのトラフィックフローは追跡されません。そのため、応答トラフィックは追跡情報に基づくのではなく、応答トラフィックを許可するインバウンドまたはアウトバウンドのルールに基づいて流れることができます。

次の例では、セキュリティグループに TCP および ICMP トラフィック別のインバウンドルールと、すべてのアウトバウンド IPv4 および IPv6 トラフィックを許可するアウントバウンドルールがあります。

インバウンドルール
プロトコルのタイプ ポート番号 送信元 IP
TCP 22 (SSH) 203.0.113.1/32
TCP 80 (HTTP) 0.0.0.0/0
TCP 80 (HTTP) ::/0
ICMP すべて 0.0.0.0/0
アウトバウンドルール
プロトコルのタイプ ポート番号 送信先 IP
すべて すべて 0.0.0.0/0
すべて すべて ::/0
  • インバウンドルールでは 203.0.113.1/32 からのトラフィックのみ許可されるため、インスタンスに出入りするポート 22 の TCP トラフィック (SSH) は追跡されますが、必ずしもすべての IP アドレス (0.0.0.0/0) が追跡されるとは限りません。

  • インバウンドルールとアウトバウンドルールの両方ですべてのトラフィック (0.0.0.0/0 または ::/0) が許可されるため、インスタンスに出入りするポート 80 の TCP トラフィック (HTTP) は追跡されません。

  • ICMP トラフィックは、ルールにかかわらず、常に追跡されます。

  • セキュリティグループからアウトバウンドルールを削除すると、インスタンスで送受信されるすべてのトラフィック (ポート 80 (HTTP) のトラフィックを含む) が追跡されます。

追跡されていないトラフィックフローは、そのフローを有効にするルールが削除または変更されるとすぐに中断されます。たとえば、オープン (0.0.0.0/0) のアウトバウンドルールがあり、インスタンスへのすべて(0.0.0.0/0) のインバウンドの SSH (TCP ポート 22) トラフィックを許可するルールを削除した場合 (または接続を許可しないように変更した場合)、インスタンスへの既存の SSH 接続はすぐに中断されます。接続はそれまで追跡されていないため、この変更によって接続が切断されます。一方、最初に細かく SSH 接続を許可する (つまり、接続を追跡する) インバウンドルールがあり、現在の SSH クライアントのアドレスからの新しい接続を許可しないようにルールを変更する場合は、ルールを変更しても既存の接続は切断されません。

TCP、UDP、または ICMP 以外のプロトコルの場合は、IP アドレスとプロトコル番号のみが追跡されます。インスタンスが別のホスト (ホスト B) にトラフィックを送信し、ホスト B が元のリクエストまたはレスポンスから 600 秒以内に別のリクエストで同じタイプのトラフィックをインスタンスに対して開始する場合、インスタンスはセキュリティグループのインバウンドルールにかかわらず、そのトラフィックを受け入れます。これは、レスポンスのトラフィックとみなされるためです。

セキュリティグループルールを削除するとトラフィックがすぐに中断されるようにするか、すべてのインバウンドトラフィックをファイアウォールルールの対象にするには、サブネットにネットワーク ACL を使用できます。ネットワーク ACL はステートレスであるため、レスポンスのトラフィックを自動的には許可しません。詳細については、Amazon VPC ユーザーガイドの「ネットワーク ACL」を参照してください。

Throttling

インスタンスごとに追跡できる接続の最大数があります。最大数に達すると、新しい接続を確立できないため、送受信されたパケットはすべて失われます。この場合、パケットを送受信するアプリケーションは正しく通信できません。詳細については、「インスタンスのネットワークパフォーマンスのモニタリング」を参照してください。

conntrack_allowance_exceeded メトリクスは、失われたパケットの数を示します。詳細については、「Linux インスタンスのネットワークパフォーマンスメトリクスの表示」を参照してください。