VPC Flow LogsをLogstorageで可視化する
森永です。
先月VPCに「VPC Flow Logs」という新機能が追加されました。
VPC内のサブネットやENIのトラフィックを記録するというものです。
先日、LogstorageにVPC Flow Logsを可視化するテンプレートが追加されたので試してみました。
試してみる
VPC Flow Logsの設定
まず、VPC Flow Logsの設定を行います。 詳しい設定手順は、こちらを御覧ください。
Logstorageに取り込むためにはCloudWatchのロググループ名を「VPCFlowLogsGroup」とする必要があります。
Logstorageのインストール
次に、LogStorageのインストールを行います。
インストールについてはこちらを御覧ください。試用も出来ます。
テンプレートのインポート
VPC Flow Logs対応のテンプレートが7/1より公開されているようです。
試用の場合は、メールにて「VPC_Flow_Logs_export.xml」が送付されてきます。
Logstorageにログインして、[システムの設定]->[インポート・エクスポート]をクリックします。
インポートタブで[ファイルを選択]でテンプレートファイルを選択し、[アップロード]します。
最下部の[インポート項目確認へ]をクリックします。
テンプレートインポートによりどんな影響が出るのかを確認できます。
確認したら、[インポート]をクリックします。
ログの収集
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]とたどります。
現在は以下の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 Flow Logs] REJECTされた通信/ポート」を見ると、REJECTされた通信の接続元IPと接続しに来ているIPアドレスを確認することが出来ます。
「[VPC Flow Logs] 通信パケット数」を見ると、グラフで通信されたパケット数を確認できます。
最後に
AWSではいろいろな情報を収集できるサービスを提供していますが、可視化については今一歩です。(どんどん出来るようになってきていますが)
パートナーのツールをうまく使い、AWSが提供してくれるあらゆる情報を活用できるといいですね。
結構いろんな通信が来てました。 セキュリティグループで0.0.0.0/0はなるべく避けたほうがいいですね。