LoginSignup
3
2

More than 3 years have passed since last update.

簡単に、VPC FlowLogsをAthenaでクエリ

Last updated at Posted at 2021-04-16

VPC Flow LogsをすぐにAthenaでクエリできる。そんな機能が出ました

  • What's New

  • 公式ドキュメント

やってみよう

最初の状態

VPC Flow LogsをS3に出力する設定がされてる状態とします。手順は以下にあるのでご参照ください

任意のS3バケット作成

S3バケットを1作っておきます。これは今回のAthena統合で使うCFnテンプレートやAthenaクエリ結果の保存先バケットとして使います

Athena統合

Athena統合スタート

  • 対象のVPCにチェックを入れ
  • 下部のタブで"フローログ"をクリック
  • 作成したフローログ。ここでは"aes-siem-flowlogs"にチェックを入れ
  • その少し右上の[アクション]をクリックし、[Athena統合を生成]をクリックする

スクリーンショット 0003-04-16 10.49.06.png

Athena統合を生成画面

以下を入力し、右下の[Athena統合を生成]をクリック

  • 「ロード頻度のパーティション」を指定。ここでは"毎日"を指定
  • 「パーティションの開始日」「パーティションの終了日」を指定。ここでは画面の通りの日付を入力。これはAthenaが認識するパーティションになります。yyyy/MM/ddでパーティションが切られてるので、日付ごとにスキャン出来てコスパがいい形です。
  • 「CloudFormationテンプレートS3バケット」を指定。ここでは事前に作成したS3バケットを指定します。
  • 「クエリ結果S3バケット」を指定。ここでは事前に作成したS3バケットを指定します。
  • プレフィックは必要に応じて入力してください。上記で指定したバケット配下のディレクトリになります。

スクリーンショット 0003-04-16 10.54.45.png

VPCの画面に自動で戻る

VPCの画面に自動で戻ります。そしたら右上に[CloudFormationスタックの作成]ボタンが出てるのでそれをクリックする

スクリーンショット 0003-04-16 11.01.06.png

CloudFormation実行

クリックするとCloudFormationの画面に遷移します

  • 最初の画面はそのまま[次へ]
  • 次の画面でスタック名を任意の名前入れて[次へ]。ここではtmp-vpcとしました。
  • 次の画面はそのまま[次へ]
  • 最後の画面は"AWS CloudFormation によって IAM リソースが作成される場合があることを承認します。"にチェックを入れて、右下の[スタックの作成]をクリック
  • 数分すると完了します。

スクリーンショット 0003-04-16 11.03.24.png

完了したらAthenaを開く

Athenaを開いたら、先程のCloudFormationの実行で作成されたAthena ワークグループを選択します。(興味があればCloudFormationテンプレートも読んでみてください)
手順は、Athenaの画面から右上か真ん中の上部辺りの"ワークグループ"を選びます

スクリーンショット 0003-04-16 11.07.06.png

長い名前のワークグループがあります。それが今回作成されたものです。それにチェック入れて、画面上部の[ワークグループを切り替える]をクリックします。2回くらい注意事項がポップアップしますが[次へ]などクリックして進めます

スクリーンショット 0003-04-16 11.09.40.png

AthenaでVPC FlowLogsをクエリ

作成されたデータベースを選択し、該当のテーブル(多分1つしかないと思います)を対象にクエリを実行します。
画面では、対象のテーブル名の右横にある点々をクリックし、"テーブルのプレビュー"をクリックし、select...limit 10を実行しています。

スクリーンショット 0003-04-16 11.47.30.png

定義済みクエリを実行

Athenaの画面の上の方にある"保存したクエリ"をクリックする
CloudFormationによって自動作成された定義済のクエリが出てきます。
対象のクエリをクリックすると、クエリが入力された状態でエディタの画面に遷移します。あとはクエリ実行するだけです

スクリーンショット 0003-04-16 11.31.20.png

このクエリだと、トラフィックが多い送信元IPアドレスを、トラフィック量の多い順番で表示してます。
VpcFlowLogsTopTalkers –最も多くのトラフィックが記録された50個のIPアドレス。

スクリーンショット 0003-04-16 11.38.14.png

このクエリだと、SGやNACLで拒否されたIPアドレスのリストを拒否された数でソートして表示しています。
VpcFlowLogsRejectedTraffic –セキュリティグループまたはネットワークACLに基づいて拒否されたトラフィック。

スクリーンショット 0003-04-16 11.43.05.png

事前定義クエリはこんな感じです

  • VpcFlowLogsAcceptedTraffic –セキュリティグループとネットワークACLに基づいて許可されたTCP接続。
  • VpcFlowLogsAdminPortTraffic –管理Webアプリポートに記録されたトラフィック。
  • VpcFlowLogsIPv4Traffic –記録されたIPv4トラフィックの合計バイト数。
  • VpcFlowLogsIPv6Traffic –記録されたIPv6トラフィックの合計バイト数。
  • VpcFlowLogsRejectedTCPTraffic –セキュリティグループまたはネットワークACLに基づいて拒否されたTCP接続。
  • VpcFlowLogsRejectedTraffic –セキュリティグループまたはネットワークACLに基づいて拒否されたトラフィック。
  • VpcFlowLogsSshRdpTraffic –SSHおよびRDPトラフィック。
  • VpcFlowLogsTopTalkers –最も多くのトラフィックが記録された50個のIPアドレス。
  • VpcFlowLogsTopTalkersPacketLevel –最も多くのトラフィックが記録された50個のパケットレベルのIPアドレス。
  • VpcFlowLogsTopTalkingInstances –トラフィックが最も多く記録された50個のインスタンスのID。
  • VpcFlowLogsTopTalkingSubnets –最も多くのトラフィックが記録された50個のサブネットのID。
  • VpcFlowLogsTopTCPTraffic –送信元IPアドレスに対して記録されたすべてのTCPトラフィック。
  • VpcFlowLogsTotalBytesTransferred –最も多くのバイトが記録された50ペアの送信元IPアドレスと宛先IPアドレス。
  • VpcFlowLogsTotalBytesTransferredPacketLevel –最も多くのバイトが記録されたパケットレベルの送信元IPアドレスと宛先IPアドレスの50ペア。
  • VpcFlowLogsTrafficFrmSrcAddr –特定の送信元IPアドレスに対して記録されたトラフィック。
  • VpcFlowLogsTrafficToDstAddr –特定の宛先IPアドレスに対して記録されたトラフィック。
3
2
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
3
2