VPC Flow LogsをLogstorageで可視化する

2015.07.03

森永です。

先月VPCに「VPC Flow Logs」という新機能が追加されました。
VPC内のサブネットやENIのトラフィックを記録するというものです。

先日、LogstorageにVPC Flow Logsを可視化するテンプレートが追加されたので試してみました。

試してみる

VPC Flow Logsの設定

まず、VPC Flow Logsの設定を行います。 詳しい設定手順は、こちらを御覧ください。

Logstorageに取り込むためにはCloudWatchのロググループ名を「VPCFlowLogsGroup」とする必要があります。

vpc_logstorage_05

Logstorageのインストール

次に、LogStorageのインストールを行います。
インストールについてはこちらを御覧ください。試用も出来ます。

テンプレートのインポート

VPC Flow Logs対応のテンプレートが7/1より公開されているようです。
試用の場合は、メールにて「VPC_Flow_Logs_export.xml」が送付されてきます。

Logstorageにログインして、[システムの設定]->[インポート・エクスポート]をクリックします。

vpc_logstorage_01

インポートタブで[ファイルを選択]でテンプレートファイルを選択し、[アップロード]します。

vpc_logstorage_02

最下部の[インポート項目確認へ]をクリックします。

vpc_logstorage_03

テンプレートインポートによりどんな影響が出るのかを確認できます。
確認したら、[インポート]をクリックします。

vpc_logstorage_04

ログの収集

LogstorageをインストールしたインスタンスにSSHでログインします。
ログ収集スクリプトを実行する前に設定を行います。

試用版で提供されているAMIでは/usr/local/logstorage/aws/collector/conf/に設定ファイルがあります。
基本的にはregionにVPC Flow Logsを設定しているリージョンを設定するだけでいいです。

$ vi /usr/local/logstorage/aws/collector/conf/awslogscollector.properties

region = ap-northeast-1
excludeLogGroupNamePattern =
excludeLogStreamNamePattern =
outputDirectory = /usr/local/logstorage/aws/collector/output/
outputFileNamePrefix = awslogs
outputFileEncoding = UTF-8
appendLogStreamInfo = true
startFromHead = false
collectThreads = 2

設定ファイルの編集が終わったら、ログ収集スクリプトを実行しましょう。
試用版AMIだと/usr/local/logstorage/aws/collector/bin/にあります。
「Finish collecting.」が出れば成功です。

このスクリプトをcronなどで定期的に実行する設定をしておきましょう。

ここでうまくいかない場合は、インスタンスへのIAM Roleに適切な権限が付与されていないか、ロググループ名が「VPCFlowLogsGroup」になっていない等が考えられますので、正しく設定しましょう。

$ cd /usr/local/logstorage/aws/collector/bin/
$ ./awslogscollector.sh
[INFO ] [main] - Start collecting CloudWatch Logs events.
[INFO ] [main] - Getting LogGroup and LogStream list from CloudWatch Logs.
[INFO ] [main] - Successfully getting LogGroup and LogStream list from CludWatch Logs.
[INFO ] [main] - Successfully collected 494 events. LogGroup:VPCFlowLogsGroup LogStream:eni-8b18fdd3-all
[INFO ] [main] - Finish collecting.

レポートを出力する

Logstorage左メニューより[レポート]->[レポート作成条件]->[テンプレート]-> [Logstorage for AWS]->[CloudWatchLogs]->[VPC Flow Logs]とたどります。

vpc_logstorage_08

現在は以下の8つのレポートを出力可能です。

  • [VPC Flow Logs] ACCEPT/REJECT 比率
  • [VPC Flow Logs] REJECT Protocol比率
  • [VPC Flow Logs] REJECT 接続元IPアドレス
  • [VPC Flow Logs] REJECTされた通信/ポート
  • [VPC Flow Logs] 通信バイト数
  • [VPC Flow Logs] 通信バイト数 / Interface毎
  • [VPC Flow Logs] 通信パケット数
  • [VPC Flow Logs] 通信パケット数 / Interface毎

セキュリティの観点でREJECT系のレポートは気になりますね。

出力したいレポートを選択し、期間と出力フォーマットを選択して実行します。
今回は手動で実行していますが、1周間に1回自動で実行し、メールで送る、ような設定も可能です。

vpc_logstorage_09

出てきたレポートを見てみます。
レポートは[レポート作成履歴]より確認することが出来ます。

vpc_logstorage_10

「[VPC Flow Logs] REJECTされた通信/ポート」を見ると、REJECTされた通信の接続元IPと接続しに来ているIPアドレスを確認することが出来ます。

vpc_logstorage_11.png

「[VPC Flow Logs] 通信パケット数」を見ると、グラフで通信されたパケット数を確認できます。

vpc_logstorage_12

最後に

AWSではいろいろな情報を収集できるサービスを提供していますが、可視化については今一歩です。(どんどん出来るようになってきていますが)
パートナーのツールをうまく使い、AWSが提供してくれるあらゆる情報を活用できるといいですね。

結構いろんな通信が来てました。 セキュリティグループで0.0.0.0/0はなるべく避けたほうがいいですね。