LoginSignup
2
0

【Oracle Cloud Infrastructure, OCI】VCN Flow Logsでトラフィックのログを収集する

Last updated at Posted at 2023-11-07

要旨

ロギングの手法として、VCN Flow Logsを用いてVCN (Virtual Cloud Network, AWSのVPCに対応) を流れるパケットを捕捉し、記録することができる [1]。2023年10月10日のアップデートでは、ロギングの対象をサブネット内のVNICだけでなく、特定のVNICに絞ったり、VCN内の全てのVNICに拡張したりできるようになった [2]。今回、特定のコンピュート・インスタンスのVNICを対象にICMPの通信を捕捉する設定を行い、実際にログを確認した。

手順

コンピュート・インスタンスが既に作成してある前提で、ローカルPCからIPアドレスに向けてpingコマンドを実行する。

手順1. ログ・グループを作成する(手順3の時点でも作成可能)

フロー・ログの格納先であるログ・グループを作成する。メニューの「監視および管理」> 「ログ・グループ」を選択し(図)、遷移先のページで「ログ・グループの作成」ボタンをクリックする。
image.png
コンパートメントを選択し、名前と説明を入力して作成ボタンをクリックする(図)。
image.png
ログ・グループの作成が完了するとログ・グループの詳細画面に遷移する(まだログが格納されていないので「No log sources found to be read」のメッセージが表示されている)。
image.png

手順2. 取得フィルタを作成する

取得フィルタはパケット・キャプチャの際に、プロトコルや宛先ポートなどを絞り込むルールを定義するコンポートネントである。この手順で作成する取得フィルタを、ログを有効化するときに引き当てることができる。
メニューから「ネットワーキング」 > 「ネットワーク・コマンド・センター」 > 「取得フィルタ」を選択し、遷移先の「取得フィルタの作成」をクリックする。
image.png
名前とンパートメントに加え、以下を選択/入力する。

  • フィルタタイプ:「フロー・ログ取得フィルタ」(VTAPはパケットを複製できるサービスで、このサービスでも取得フィルタでルールを設定する。実は元々VTAPのための取得フィルタが今回のアップデートでVCN Flow Logsに応用された格好。使い方の例についてはOCIチュートリアルを参照のこと)
  • サンプリング・レート:「100%」
  • ルール(順序番号1)
    • トラフィック配置: 「すべて」
    • 包含/除外: 「含める」
    • ソースのIPv4アドレス: 自分のPCのグローバルIPアドレス(インターネットで提供されているIPアドレス確認サービスを用いると簡単)
    • 宛先のIPv4 CIDRまたは接頭辞: 指定しない(後ほどログを有効化する際に監視対象のVNICを指定するため不必要)
    • IPプロトコル:ICMP
      • ICMPタイプ: 「8―エコー」
      • ICMPコード: 「0―エコー・リクエスト」

作成ボタンをクリックすると、取得フィルタの詳細画面に遷移する(図)。入力したルールが取得フィルタに反映され、ステータスが有効になっていることを確認する。
image.png

手順3. フロー・ログを有効化する

メニューの「監視および管理」> 「ログ」を選択し、遷移先のページで「サービス・ログの有効化」ボタンをクリックする。
image.png
表示されるウィザードで、リソース・コンパ―トメントやログ名を設定し、その他の項目については次のように入力/設定し、「ログの有効化」ボタンをクリックする(図も参照のこと)。

  • サービス: 「Virtual Cloud Network - Flowlogs」
  • Resource Level: 「Virtual Network Interface Card (VNIC)」
  • リソース: pingを送るインスタンスのプライマリVNICを選択
  • ログカテゴリ: Flow Logs - vnic records
  • Capture filter: 手順3で作成したフィルタを選択

image.png

手順4. 標的のインスタンスにpingを打つ

NSG (Network Security Group) か、ネットワーク・セキュリティ・リストでICMP Type8のイングレス通信をステートフルで許可するルールを追加した後、PCからpingコマンドを叩く(NSGによる通信の許可の方法は補遺を参照)。

bash
ping -c 5 <標的のインスタンスのパブリックIPアドレス>

手順5. ログを確認する

作成したログの詳細画面を表示すると、pingを叩いた時間にtypeが「vcn.flowlogs.DataEvent」のログが記録されている(図)。
image.png

ログをドリルダウンして詳細を観察すると、合計パケット数やByteサイズ、ソースIPアドレスなどがJSON形式で記録されていることを確認できる(図)。
image.png

最後に

VCN Flow Logsで集めたログはオブジェクト・ストレージに保管したり、ログ・アナリティクス(Logging Analytics)サービスを用いて分析を行うことができる。今度使ってみたい。

補遺

NSGの設定方法

OCIではデフォルトでVCN内の全ての通信トラフィックが禁止されているため、許可したい通信についてルールの設定を行う。方法は二つあり、一つはセキュリティ・リストを用いる方法で、もう一つはNSGを用いる方法である。前者はサブネット内の全てのVNICが従うルールを定義し、後者はクラスを作成しそのクラスに属するVNICが従うルールを定義する。前者を用いる方法は多少簡単ではあるが、ルールを設定したことを忘れてしまうと、ルールを適用したかったVNIC以外に対しても望まない通信を許可してしまいかねないため、ここでは後者による設定方法を紹介する。

手順1. NSGを作成する

ICMPのエコー要求の受信を許可するルールを紐づけたNSGを作成する。メニューから「ネットワーキング」 > 「仮想クラウド・ネットワーク」 > 標的のインスタンスが配置されたVCNを選択する。遷移先の画面で「Resources」の項目から「ネットワーク・セキュリティ・グループ」を選択し(図)、「ネットワーク・セキュリティ・グループの作成」ボタンをクリックする。
image.png

NSGの名前を入力し、「次」の画面で以下のように入力/設定を行い「作成」ボタンをクリックする。

  • ステートレス: チェックしない
  • 方向: 「イングレス」
  • リソース・タイプ: 「CIDR」
  • ソースCIDR: PCのグローバルIPアドレス(/32で指定)
  • IPプロトコル: 「ICMP」
    • タイプ: 8
    • コード: 記入しない

image.png

手順2. 作成したNSGを標的インスタンスのVNICに紐づける

標的インスタンスの詳細画面を表示する。画面左下のリソース・メニューから「アタッチされたVNIC」を選択する(図)。

image.png

プライマリVNICを選択する(図)。
image.png

ネットワーク・セキュリティ・グループの項目から編集をクリックする(図)。
image.png

表示されるウィザードで、先ほど作成したNSGを選択して、「変更の保存」ボタンをクリックする(図)。
image.png

NSGの項目が変更されていること確認する(図)。ローカルPCからのpingが通るようになった。
image.png

参考文献

[1] 『VCNフロー・ログ』Oracle Cloud Infrastructureドキュメント (https://docs.oracle.com/ja-jp/iaas/Content/Network/Concepts/vcn-flow-logs.htm)
[2] 『New Release of VCN Flow Logs』Oracle Cloud Infrastructure Documentation / Release Notes (https://docs.oracle.com/en-us/iaas/releasenotes/changes/2be233e2-8717-495a-ba1e-cc96aa1663c3/)

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0