株式会社ヴァンデミックシステム

Blog

<スポンサーリンク>

構成

  • WAFで攻撃を検知したらSlackへ飛ばす

WAF → KinesisFirehose → Lambda → Slack

→ S3バケット

 

WAF

ルール設定

  • ルールは汎用的なものを設定
    • AWSManagedRulesCommonRuleSet
    • AWS-AWSManagedRulesLinuxRuleSet
  • DefaultActionはAllow

 

接続リソース設定

  • 紐づけたいALBを指定

 

Logging and metrics設定

KinesisiFirehoseにログ出力するようにする

 

 

KinesisFirehose

Transform設定

kinesisFirehoseのJson出力をLambdaへ渡す

  • Lambda側でのトリガーでKinesisFirehoseを指定することはできない

 

 

Lambda設定

  • トリガー、送信先は指定なし

 

ソースコード

  • ランタイムはpython3.8
  • AWSManagedRulesCommonRuleSetの中でNoUserAgent_HEADERUserAgent_BadBots_HEADERがやたらでるので、Slackへは飛ばしたくない
  • それ以外のルールはSlackへ飛ばす

 

 

環境変数

  • SlackのWebhookURLを指定する

 

 

動作確認用のテストデータ

  • kinesisFirehoseから送られるであろうデータ形式
  • dataはkinesisFirehoseからs3バケットに出力されているWAFのログをbase64エンコードしたもの
  • lambda関数では、data部分をデコードし、terminatingRuleを判定するようにしている

 

 

テスト

こちらの2パターンのテストを行い、挙動を見る

 

参考

https://dev.classmethod.jp/articles/aws-waf-block-log-pipeline/

 

 

<スポンサーリンク>

コメントを残す

Allowed tags:  you may use these HTML tags and attributes: <a href="">, <strong>, <em>, <h1>, <h2>, <h3>
Please note:  all comments go through moderation.

*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)