VPC Flow Logs(CloudWatch Logs)を閲覧時にフィルタする方法

記事タイトルとURLをコピーする

セキュリティグループを正しく設定したつもりなのに、なぜか通信ができない... そんなときはVPC Flow Logsをチェックしましょう。

VPC Flow LogsをONにしておけば、VPC内を流れるパケットのログを取ることができます。 また、セキュリティグループかNACLで許可あるいは拒否された場合の結果も、ログに残ります。 VPC FLow Logsを設定する方法は、下記のURLの手順の通りです。

参考: https://docs.aws.amazon.com/ja_jp/AmazonVPC/latest/UserGuide/flow-logs.html#working-with-flow-logs

上記の設定が完了すれば、あとはCloudWatch LogsのログストリームにVPC Flow Logsが出力されます。 そのレコードには、以下の情報が含まれています。

version, account, eni, source, destination, srcport, destport, protocol, packets, bytes, windowstart, windowend, action, flowlogstatus

CloudWatch Logsのコンソール画面でVPC Flow Logsを確認したときのスクリーンショット しかし、出力される情報は数分間で何百行にも及ぶでしょう。以下の通り、フィルタを利用して必要な情報を絞り込みましょう。

参考: https://docs.aws.amazon.com/ja_jp/AmazonVPC/latest/UserGuide/flow-logs.html#flow-logs-cw-alarm-example

  1. CloudWatchの画面へ遷移
  2. 左部メニューから「ログ」を選択
  3. VPC FLow Logsのロググループを選択
  4. ENI IDごとにログストリームがあるため見たいENIを選択
  5. 検索フィルタに以下の文法で入力し、絞り込む

宛先ポート22 かつ プロトコルがTCP かつ SGかNACLでREJECTされているパケット

[version, account, eni, source, destination, srcport, destport="22", protocol="6", packets, bytes, windowstart, windowend, action="REJECT", flowlogstatus]

接続元IPが10.0.0.10のパケット

[version, account, eni, source="10.0.0.10", destination, srcport, destport, protocol, packets, bytes, windowstart, windowend, action, flowlogstatus]

宛先IPが10.0.0.10のパケット

[version, account, eni, source, destination="10.0.0.10", srcport, destport, protocol, packets, bytes, windowstart, windowend, action, flowlogstatus]

ちょっとフィルタリングのルール(文法)が独特なので、いつも忘れてしまいます。 備忘的なブログでした。

杉村 勇馬 (記事一覧)

サーバーワークス → 株式会社G-gen 執行役員CTO

2021 Japan APN Ambassadors / 2021 APN All AWS Certifications Engineers

マルチAWSアカウント管理運用やネットワーク関係のAWSサービスに関するブログ記事を過去に執筆。

2021年09月から株式会社G-genに出向、Google Cloud(GCP)が専門に。G-genでもGoogle Cloud (GCP) の技術ブログを執筆中。