2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Flow LogsによるGlobal IPからのアクセスログの取得方法

Last updated at Posted at 2025-03-24

はじめに

VPCのようなCloud環境を利用するにあたり、セキュリティの観点からアクセスログを保管したいといった要件があるかと思います。

IBM CloudではVPC環境のネットワークインターフェースに対してFlow Logを使用することでアクセスログを取得することができます。

本稿ではVPC内に構築したWEBサーバーへネットワークロードバランサー経由でアクセスするケースにてFlow Logsを用いてアクセスログを取得する方法を記載します。

作成手順についてはIBM Cloud docsのフロー・ログ・コレクターの作成を参考に記載しています。

Flow Logsとは

IBM Cloud Flow Logs for VPC を使用すると、VPC内のネットワーク・インターフェースを出入りするインターネット・プロトコル(IP)トラフィックについての情報の収集、保管、表示が可能になります。

VPCもしくはサブネット、インスタンス、インターフェースの中から指定した範囲でFlow Log Collectorによりログを取得し、ICOS上にディレクトリ形式でログの保存が実行されます。

fl-granularity.png

作成時に指定したVPCの取得範囲に対して、5分おきにアクセスログを取得し、ICOSへ保存します。ネットワークインターフェース毎に100KBを超えるログが発生した場合はさらに頻度をあげてログが取得されます。

Flow Logsで取得可能なログの種類についてはフロー・ログ・オブジェクトの表示を参照ください。

ログの取得手順

本稿ではVPC内に構築したWEBサーバーへネットワークロードバランサー経由でアクセスするケースにてFlow Logsを用いてアクセスログを取得する方法を記載します。

最終的にWEBサーバーにアクセスしたローカルPCのGlobal IPをICOSで確認することを目標とします。(下の図のx.x.x.xにあたるIP)

スクリーンショット 2025-03-23 20.55.57.png

手順は以下のとおりです。

  1. Flow Logインスタンスの作成
  2. WEBサーバーへのアクセスログの確認

事前準備

以下の環境は事前に作成済みなものとします。

  • VPC(jp-tok) : vpc-tok
  • 仮想サーバー(OS : CentOS, 2corex4GB, tok04) : vsi-web-tok
  • Object Storage : icos-instance, バケット(smart tier, jp-tok) : fl-bucket
  • ネットワークロードバランサー(public) : nlb-tok

仮想サーバーはWEBサーバーとしてアクセスできるように、あらかじめhttpdをインストールし、サーバーのIPアドレスを表示する簡単な設定をします。

WEBサーバーは外部からアクセスできるようにNLBに登録しておき、NLB経由でアクセスできるように設定します。

スクリーンショット_2025-03-23_20_36_19.png

また、Flow Logのインスタンス作成にはVPCとICOS間のS2S認証でライター以上の権限が必要ですのであらかじめ設定しておいてください。
設定方法はフロー・ログ・コレクターの作成 : UI の前提条件を参考に設定してください。

1. Flow Logインスタンスの作成

まずはFLow Logのインスタンスを作成します。

ポータルのホーム画面左上のメニューボタンからインフラストラクチャーネットワークフロー・ログを選択します。

スクリーンショット_2025-03-23_21_56_24.png

作成済みFlow Logの一覧から右上の青い作成ボタンから新規Flow Logを作成します。

スクリーンショット_2025-03-23_22_19_09.png

Flow Log作成の際に設定する項目は以下の通りです。それぞれの項目で事前に作成したVPC, ICOSの名前を選択してください。

項目
名前 fl-collector(任意の名前)
ターゲット・サービス VPC
仮想プライベートクラウド vpc-tok
Cloud Object Storageインスタンス icos-instance
バケット fl-bucket

作成時に権限が足りていない場合はICOSインスタンスの選択ができなくなります。
必要なS2S権限を追加後、再度試してみてください。

Flow Logのログの取得範囲として「VPC・サブネット・インスタンス・インターフェース」
から選択できます。

VPCを選ぶと指定したVPC内のネットワークインターフェースのログを取得でき、サブネット→インスタンス→インターフェースの順に取得する範囲が狭くなります。

今回はVPCを選択していますが、取得ログを1つのインスタンスに限定したい場合やインスタンスが1つのサブネットに限定したい場合はターゲットサービスにサブネットやインスタンスを選択してください。

インスタンス作成後からすぐにログの取得が開始され、ICOSにログが保管されます。
Flow Log作成時に設定したバケットを開くと以下のようにログデータが保存され始めます。

初期設定ではICOSはディレクトリ表示になっていないため、右上のファイルマークを選択し、ディレクトリ表示に変更することで取得したいログを見つけやすくなります。

スクリーンショット_2025-03-24_0_22_50.png

ディレクトリ表示すると一番上のディレクトリのibm_vpc_flowlogs_v1が表示されます。

スクリーンショット_2025-03-24_0_29_25.png

ここからリージョン、インスタンス、日時等をディレクトリを指定することで対象のログを確認することが可能です。

スクリーンショット_2025-03-24_0_57_14.png

2. WEBサーバーへのアクセスログの確認

事前準備で作成していたWEBサーバーにアクセスして、その時間帯にログが発生していることを確認します。

ローカルPCからNLBのパブリックIPを使ってWEBサーバーにアクセスします。
flow logのログは通常だと5分おきに生成されるため、5分ほど置いてからicosのバケットを確認します。

今回はWEBサーバーにアクセスしてから1.WEBサーバーのログ、2.NLBのログの2つを確認してみます。

2-1. WEBサーバーのログ

ICOSのバケットから対象となるWEBサーバーのログを探します。
一番上のibm_vpc_flowlogs_v1からaccountregionvpc-idsubnet-idendpoint-typeinstance-idvnic-idrecord-typeyearmonthdayhourstream-idの順番に指定します。
vpc-idsubnet-id等のidはポータルから対象のインスタンスに当てはまるidが確認可能なため、適切なものを選択してください。

WEBサーバーにアクセスした時間帯のファイルを取得し、中身を確認してみるとflow logの5分間分のアクセスデータが保存されていることが確認できます。

量が多い場合はIPアドレス(今回はLocal PCのGlobal IP)で検索をかけることで目的のログを見つけることが可能です。

スクリーンショット_2025-03-24_1_16_03.png

アクセスログを確認するとWEBサーバーにアクセスした時間帯で正しくGlobal IPが保存されていることが確認できます。

また、WEBサーバーはパブリックIPをつけていないため、actionの項目が全てacceptedとなっていることが確認できます。

2-2. NLBのログ

ICOSのバケットから同様にNLBのログを探します。
ディレクトリから探すことはVSIと同じですが、NLBはポータルからinstance-idを確認する方法が見つかっていません。(見つけたら追記します)

ですが、ICOSの中にはNLBに当てはまるinstance-idのディレクトリは存在するのでログファイルを確認する等の方法で特定してください。

スクリーンショット_2025-03-24_1_27_49.png

NLBもVSIと同様にLocal PCのGlobal IPからのアクセスが確認できました。

また、NLBはパブリックIPをつけていますがセキュリティグループの機能によってアクセスを制限しているため、VSIと違いactionのほとんどがrejectedとなっていることが確認できます。

そのため、アクセス成功したIP一覧を調べるにはacceptedの文字検索することで絞り込めます。

ALBのログでは外部IPからALBのPrivate IPにNATされていることが確認できます。
また、ALBはVPC内部からもアクセスがあるためacceptedで外部IPの検索をかけることはできません。

まとめ

本稿ではVPC内のWEBサーバーに対して外部からアクセスをした際のアクセスログをFlow Logで取得する方法を記載しました。

今回はNLB経由のVSIのログを取得しましたが、Floating IP経由のVSIやIKS、ROKS、そのALBのログも同様に取得できます。
ICOSの保管ポリシーと組み合わせることで任意の期間アクセスログを保管し、問題があった際に指定の日時のログを取得する、といった使用方法も可能です。

Flow Logの導入は非常に容易なので皆さんもぜひ利用してみてください。

参考記事

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?