LoginSignup
1
0

More than 3 years have passed since last update.

NLB に VPCFlowLogs を設定する

Last updated at Posted at 2020-05-15

背景

AWS上にTCPリスナーのNLBを構築した時に、
全て正しく設定されているように見えるのに、なぜかログが出力されない事象に遭遇しました。

ALBと同じようにアクセスログを出力してくれるものだと思っていたのですが、
TCPリスナーの場合はアクスエスログを出力しない仕様でした。

VPCフローログは設定できそう、という情報をもらい

  • 存在は認識していたが、触ったことがなかった
  • なんらかの方法でトラフィックを確認できるものがあれば、、と思っていた

ので、ドキュメントを読みつつ設定を試してみることにしました。

目的

AWSのドキュメントを読んだり、実際に設定してみてせっかくなのでわかったことをまとめておきます。

VPCフローログとは

VPC内のネットワークインターフェースを行き来するトラフィックのをキャプチャするもので
主に以下のような情報が含まれます。
※詳しくはこちら

フィールド 概要
version ログフォーマットのバージョン
account-id AWSアカウントID
interface-id ネットワークインターフェイスのID(eni-とつく)
srcaddr 受信トラフィックの送信元アドレス
dstaddr 送信トラフィックの送信先アドレス
srcport 送信元のポート
dstport 送信先のポート
protocol トラフィックのプロトコル
packets 転送されたパケット数
bytes 転送されたバイト数
start 最初のパケットが受信された時間
end 最後のパケットが受信された時間
action セキュリティグループorネットワークACLで許可されているか
log-status ロギングのステータス

ログフォーマット

以下の2パターンです。

  • デフォルト形式
  • カスタム形式

カスタム形式の場合は各フィールドの出力順や、各フィールドを出力させるかさせないかをカスタマイズすることが可能です。

ログフォーマットのバージョン

2020/5時点では最新バージョンは3、デフォルトバージョンは2になっています。

VPCフローログをデフォルト形式で作成した場合、ログのフィールドに含まれるバージョン2のフィールドですが、カスタム形式だとバージョン3のフィールドも利用可能です。

ログ送信先

選択肢はCloudwatch LogsまたはS3 Bucketの2つで、それぞれの特徴は以下です。

  • Cloudwatch Logs

    • デフォルト形式のみ対応
    • Cloudwacth アラームとの連携が可能
  • S3 Bucket

    • カスタム形式の利用が可能
    • Athenaでログの検索が可能

設定方法

今回はNLBのネットワークインターフェイスに対して設定し、送信先はS3(事前に作成済み)、カスタム形式で試してみます。

コンソールでEC2 > ネットワークインターフェイス > NLBにアタッチされているネットワークインターフェースを選択すると画面下にフローログのタブが表示されるので、「フローログの作成」をクリックします。

create-vpc-flow-log.png

必要事項を入力します。
setting-vpc-flow-log.png

Filter欄では、Accept、Reject、Allの選択が可能です。
S3バケットの欄はキーを含めることも可能で、1つのS3 Bucketに複数のVPCフローログを含める、ということができそうです。

設定はこれで完了です。

発行されるログ

version account-id instance-id interface-id srcaddr dstaddr srcport dstport protocol packets bytes start end action log-status
3 unknown - eni-xxxxxxxxxxx 10.1.1.15 10.1.2.32 1433 57640 6 3 164 1589466553 1589466612 ACCEPT OK

所感

  • 設定は簡単
  • このログで最も確認できるのは、本当にシンプルにセキュリティグループで許可されたトラフィックか否か
  • ヘルスチェックのログがそこそこある
    • バイト数は記録されるので、ヘルスチェックのものかサービスのものかはバイト数が唯一の比較材料?
  • やはりセキュリティの観点で利用するものの印象。サービスのトラブルシューティングに使うものではなさそう

注意点

  • 送信先に関わらず、料金はCloudwatchのログが課金されます。
  • ログには最初と最後のパケットを受信した時間が記録されますが、UNIX秒なので読み替えが必要です。
  • フローログを作成してから実際に送信先に出力されるまで、多少時間がかかります。
1
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
1
0