セキュリティグループの接続の追跡 - Amazon Elastic Compute Cloud

セキュリティグループの接続の追跡

セキュリティグループは、接続追跡を使用してインスタンスを出入りするトラフィックに関する情報を追跡します。ルールはトラフィックの接続の状態に基づいて適用され、トラフィックを許可するか拒否するかが判断されます。このアプローチでは、セキュリティグループはステートフルです。これは、セキュリティグループのアウトバウンドルールにかかわらず、インバウンドトラフィックに対するレスポンスがインスタンスから送信されることを許可することを意味します。逆も同じです。

たとえば、自宅のコンピュータからインスタンスに対し ICMP の ping コマンドを開始する場合を考えます。この時、インバウンドセキュリティグループは、ICMP トラフィックを許可しているとします。接続に関する情報 (ポート情報を含む) が追跡されます。ping コマンドに対するインスタンスからのレスポンストラフィックは、新しいリクエストではなく確立済みの接続として追跡されます。また、セキュリティグループのアウトバウンドルールが、アウトバウンドの ICMP トラフィックを制限している場合でも、このトラフィックはインスタンスから外部に出力されることが許されます。

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

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

追跡されていない接続

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

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

Example

次の例では、セキュリティグループに 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 All 0.0.0.0/0
アウトバウンドルール
プロトコルのタイプ ポート番号 送信先 IP
All All 0.0.0.0/0
All All ::/0
  • インバウンドルールでは 203.0.113.1/32 からのトラフィックのみ許可されるため、インスタンスで送受信されるポート 22 の TCP トラフィック (SSH) は追跡されますが、必ずしもすべての IP アドレス (0.0.0.0/0) が追跡されるとは限りません。

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

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

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

Throttling

Amazon EC2 では、インスタンスごとに追跡できる接続の最大数が定義されています。追跡が最大数に達すると、新しい接続が確立されることはないため、送受信されるパケットはすべてドロップされます。この場合、パケットを送受信するアプリケーションは正しく通信できません。

インスタンスのネットワークトラフィックが追跡可能な接続の最大数を超えたために、パケットがドロップされたかどうかを判断するには、ネットワークパフォーマンスメトリクス conntrack_allowance_exceeded を参照します。詳細については、「」を参照してくださいEC2 インスタンスのネットワークパフォーマンスをモニタリングします。

ネットワークロードバランサーを介して行われた接続は、セキュリティグループで追跡が設定されていない場合でも、自動的に追跡されます。インスタンスごとに追跡できる接続の最大数を超える場合は、ロードバランサーに登録されているインスタンスの数、あるいは登録されているインスタンスのサイズのいずれかを拡張することをお勧めします。