CloudFrontのログをS3に保存する(相当攻撃を受けてました)

この記事は約3分で読めます。

当ブログですがAWS WAF(CloudFrontと連携)を設定しており、

  • 自宅からはWP-login.phpへのアクセスは許可
  • 自宅以外はWP-login.phpへのアクセスは全て拒否

をするようWAFで設定しています。
どれくらいブロックしているかCloudWatchのダッシュボードにメトリックグラフを設定し確認してみました。

スポンサーリンク

CloudWatch:CloudFrontとWAFのメトリックグラフ

CloudFrontLog-Save-S3-Cloudwatch-Graph-WAF-CloudFront

WAFのグラフを見るとBlockグラフが綺麗な水平方向の直線を描いています。
CloudFrontの4xxエラーのグラフと並べてみましたが、見事に波形が一致しています。

ついでにWAFとCloudFrontのコンソールからも確認してみます。

スポンサーリンク

WAFコンソール-Block情報

1時間くらいのスコープでざっくり表示させましたが、30件以上のBlockログが上がっていました。

CloudFrontLog-Save-S3-WAF-Block-Log

スポンサーリンク

CloudFront-4xxエラー情報

同じく1時間のスコープで表示させました。
4xxエラーが多発しています。

CloudFrontLog-Save-S3-CloudFront-4xxError

2週間ほど遡ってCloudFront-4xxエラーを見てみました。
WP-login.phpに四六時中アクセスを試みているものがあるということがよく分かります。

CloudFrontLog-Save-S3-CloudFront-4xxError-2weeks

WAFで対策を講じて良かったなー…で済ますとネタ的に面白くありません。
コンソールからもある程度の攻撃者情報は確認できるのですが、

  • 情報が散見して確認に手間がかかる
  • 不足している情報もあり精度の高い分析ができない

といった問題があると感じてます。
丁度AWSの分析系サービスを使ってみたいなと思ってたので、

  • CloudFrontのログをS3に保管
  • ログを元にAthenaやKibana(ElasticsearchService)で可視化、分析

といったことをやってみようと思います。

前振りが長くなりました、早速ログを取ります。

スポンサーリンク

ログ保管用S3バケットの作成

S3コンソールを開き[バケットを作成]をクリックします。
バケット名はグローバルでユニークであれば何でもいいと思います。
[log.任意の名前]を入力し、[作成]をクリックします。

作成したバケットにCloudFrontのログを格納するフォルダを作成します。
S3のバケット一覧画面で、先ほど作成したバケットをクリックします。

CloudFrontLog-Save-S3-Backet-List

[フォルダの作成]をクリックし、フォルダ名を入力し保存をクリックします。

CloudFrontLog-Save-S3-SubFolder-Create

スポンサーリンク

CloudFrontの設定

CloudFrontコンソールを開き、ログ収集対象のディストリビューションをクリックします。
[General]タブを選択し[Edit]をクリックします。

CloudFrontLog-Save-S3-CloudFront-General-Edit

[Logging]:ONにして[Bucket for Logs]と[Log Prefix]に先ほど作成したバケットとフォルダを設定し、[Yes,Edit]をクリックします。

CloudFrontLog-Save-S3-CloudFrontLogSetting

スポンサーリンク

動作確認

設定変更を行ったCloudFront-ディストリビューションのステータスがDeployになった後に、ログ格納先に指定したバケット->フォルダを確認します。
ログファイルの登録が確認できました。

CloudFrontLog-Save-S3-OK

解析はまた別の記事で。

スポンサーリンク
AWS
ヤマログ
タイトルとURLをコピーしました