インシデント発生時のインスタンス隔離方法(セキュリティグループ編)

今年のre:Inventのセッション「SEC327 Instance containment techniques for effective incident response」の内容が面白かったので、かいつまんで紹介します。今回は、隔離方法の中からセキュリティグループを利用したパターンを紹介します。

まずはセキュリティグループを理解する

セキュリティグループの仕様は以下の通り。
• ルールが設定されていない状態のセキュリティグループは、すべてのトラフィックに対して暗黙のDenyで動作する。
• 通信を許可したい場合には、明示的に許可するルールを追加する。
(通信をステートフルにフィルタリングするので、インバウンドで許可されたルールの戻りの設定をアウトバウンドに設定する必要はない。(その逆も同様))
• インスタンスに対して、複数のセキュリティグループを設定することができる。
• 特定のポートに対して複数のルールが設定されている場合、最も緩いルールが適用される。
• ルールはいつでも追加/削除することができる。
(変更はセキュリティグループに関連付けされたインスタンスに対して即時反映される。ただし、一部のルール変更はトラフィックがTrackedか、Untrackedかによって異なる点に注意すること)

TruckedとUntruckedについて理解する

セキュリティグループは、インスタンスに対するインバウンドとアウトバウンドの通信をステートフルに処理するために「コネクション・トラッキング」をする。しかし、すべての通信に対してコネクション・トラッキングをしているわけではない。(例えば、ICMPに関しては常にトラッキングの対象)



「Untracked」なコネクション

• 「0.0.0.0/0」や「0.0.0.0/0(0-65535)」なルールが反対方向の通信に適用される。
○ インバウンド「0.0.0.0/0」とアウトバウンド「0.0.0.0/0(0-65535)」といった場合
• 通信を有効にするルールが削除、変更和えた場合、通信はただちに中断される。

「Tracked」なコネクション

• 特定のIPアドレスやCIDRブロックで指定されたルール(例えば、203.0.133.1/32、203.0.133.0/24)
• 逆方向のルールに関わらず、通信を許可しているルールが削除されたり、変更されたりした場合、通信が途切れないしようとなっている。
セキュリティグループの設定例

画像1

既存のセキュリティグループを利用した隔離方法

1. 封じ込めをするインスタンスに関連付けされたセキュリティグループを確認
2. 当該セキュリティグループのすべてのルールを削除
3. 「0.0.0.0/0(0-65535)」のルールをインバウンドとアウトバウンドの両方に作成
(これを行うことでセッション確立済みも含めすべての通信を「Untracked」な状態に変更)
追加した「0.0.0.0/0(0-65535)」のルールをインバウンドとアウトバウンドの両方で削除

分離/専用セキュリティグループを利用した隔離方法

パターン1(1つの分離/専用セキュリティグループの場合)
1. 専用の「Isolation」セキュリティグループを作成
2. 「0.0.0.0/0(0-65535)」のルールをインバウンドとアウトバウンドの両方に作成
(これを行うことでセッション確立済みも含めすべての通信を「Untracked」な状態に変更)
3. インスタンスから既存のセキュリティグループの関連付けを削除し、「Isolation」セキュリティグループをインスタンスに関連付ける。
4. 「Isolation」セキュリティグループの「0.0.0.0/0(0-65535)」のルールをインバウンドとアウトバウンドの両方で削除
パターン2(2つの分離/専用セキュリティグループの場合)
1. 専用の「IsolationSG-Step1」セキュリティーグループを作成
○ 「0.0.0.0/0(0-65535)」のルールをインバウンドとアウトバウンドの両方に作成
(セッション確立済みも含めすべての通信を「Untracked」な状態に変更するため)
2. ルールを設定しない専用の「IsolationSG-Step2」セキュリティーグループを作成
3. インスタンスから既存のセキュリティグループ関連付けを削除し、「IsolationSG-Step1」セキュリティグループに関連付ける。
○ これで既存の通信を含めて「Untracked」な状態に変更
4. インスタンスに関連付けされた「IsolationSG-Step1」セキュリティグループの関連付けを削除し、「IsolationSG-Step2」セキュリティグループに関連付ける

まとめ

パターンとしては、このセキュリティグループを利用した隔離方法のほかにVPCでNACLを利用して封じ込めるパターン、ルートテーブルを利用するパターン、インターネットゲートウェイを利用するのパターンがありました。これらについては、また別の記事で紹介したいと思います。
セキュリティグループを利用したパターンは、粒度の小さい範囲で封じ込めができることですが、例えばサブネット全体が汚染されている場合などでは手間がかかります。
そういった場合には、隔離できる範囲が広いVPC側のNACLやルートテーブルなどのパターンが必要になります。

この記事が気に入ったらサポートをしてみませんか?