Save 37% off PRO during our Black Friday Sale! »

WafCharm運用の ベストプラクティスを 考えてみた

WafCharm運用の ベストプラクティスを 考えてみた

WafCharm運用のベストプラクティスを考えてみた
iret tech-labo #11

E6201f99a57023746913ecdc99261aeb?s=128

Yutaka Hiroyama

July 28, 2021
Tweet

Transcript

  1. WafCharm運⽤の ベストプラクティスを 考えてみた 2021/07/28 ヒロヤマ ユタカ

  2. about me • 廣⼭ 豊 • アイレット株式会社 クラウドインテグレーション事業部副事業部⻑ 兼 情報管理責任者

    兼 PCI DSS管理責任者 兼 Well Architected Lead • 2020, 2021 Japan APN AWS Ambassador, AWS Top Engineers • 組み込み開発SIer出⾝ • AWS * 8, GCP * 9, Azure * 1, 情報処理安全確保⽀援⼠、 その他多数の認定資格を保有
  3. about us • クラウド導⼊実績1,900社以上 • 年間プロジェクト2,600以上 • AWSプレミアコンサルティングパートナー8 年連続認定 •

    APN Consulting Partner of the year 2019 • GCPプレミアサービスパートナー認定 • クラウドのインフラ運⽤を主軸に、デザイン から開発までワンストップでサポート • 他拠点で運⽤
  4. 本⽇のテーマ • 汎⽤的な WafCharm(AWS WAF v2)運⽤ 本⽇話すこと • 個別要件に特化した運⽤ •

    個別機能に特化した詳細解説 本⽇話さないこと WafCharmおよびAWS WAFの運⽤についてのご案内。
  5. アジェンダ AWS WAFとは WafCharmがもたらす運⽤⾯での価値 運⽤に必要なインフラ構成 WafCharm(AWS WAF)運⽤時の注意点 WafCharm利⽤時の運⽤

  6. アジェンダ AWS WAFとは WafCharmがもたらす運⽤⾯での価値 運⽤に必要なインフラ構成 WafCharm(AWS WAF)運⽤時の注意点 WafCharm利⽤時の運⽤

  7. What is AWS WAF 参照: https://aws.amazon.com/jp/waf/

  8. アジェンダ AWS WAFとは WafCharmがもたらす運⽤⾯での価値 運⽤に必要なインフラ構成 WafCharm(AWS WAF)運⽤時の注意点 WafCharm利⽤時の運⽤

  9. WafCharmがないとき • ⾃前でルールを作成チューニング • システムに合わせたマネージドルールを選定

  10. 課題 システム変更に合わせたチューニング アプリケーションレイヤの担当者と 密なコミュニケーションが必要

  11. WafCharmがあるとき • WafCharmが⾃動的にルールをチューニング • Shield Advancedの機能の⼀部と類似

  12. アジェンダ AWS WAFとは WafCharmがもたらす運⽤⾯での価値 運⽤に必要なインフラ構成 WafCharm(AWS WAF)運⽤時の注意点 WafCharm利⽤時の運⽤

  13. AWS WAFログを出⼒しない • メリット AWSリソースコスト最⼩化 • デメリット 調査できることが限定

  14. AWS WAFログを出⼒する • メリット ログを元に解析可能 • デメリット 運⽤コスト増加 AWSリソースコスト増加

  15. WafCharmのレポートを利⽤ • メリット WafCharmが⽣成するレポート を取得可能 • デメリット 運⽤コスト増加 AWSリソースコスト増加

  16. ⽐較 WafCharmのレポートを利⽤ AWS WAFログを出⼒する AWS WAFログを出⼒しない 利便性 経済的

  17. アジェンダ AWS WAFとは WafCharmがもたらす運⽤⾯での価値 運⽤に必要なインフラ構成 WafCharm(AWS WAF)運⽤時の注意点 WafCharm利⽤時の運⽤

  18. モード切り替え時はルール設定更新必要 WafCharm上でのモード切り替えは、デフォルト設定の切り替え。 既に適⽤済みのルールは切り替わらないので、⼿動でOverride rules actionをON/OFF して切り替える必要がある。

  19. 異なるCOUNTのログ ⾃作のRuleでのログ • nonterminatingmatchingrules [{ruleid=my-rule01, action=COUNT}] • RulegroupList {rulegroupid=arn:aws:wafv2:us-east-1:XXXXXXXXXXXX:regional/rulegroup/<any-rules>/dafe994f-6a04-4426- 8dcf-9a23578669fd,

    terminatingrule=null, nonterminatingmatchingrules=[], excludedrules=null}, WafCharmのRuleでのログ • nonterminatingmatchingrules [] • RulegroupList {rulegroupid=arn:aws:wafv2:us-east- 1:XXXXXXXXXXXX:regional/rulegroup/WafCharm_Blacklist_Group_2132/dafe994f-6a04-4426-8dcf- 9a23578669fd, terminatingrule=null, nonterminatingmatchingrules=[], excludedrules=[{ruleid=wafcharm- blacklist-2132, exclusiontype=EXCLUDED_AS_COUNT}]},
  20. カウントログのフィルタリング カウントモード運⽤において、Log FiltersでAcceptログをドロップする場 合、グループアクションとしてカウ ントモードに設定しないと、カウン トアクションのログもAcceptのログ と同様にドロップされてしまう。

  21. 脆弱性診断や再現確認するとBlackList ⼊り • 別IPを持つ専⽤のホストから実⾏

  22. アジェンダ AWS WAFとは WafCharmがもたらす運⽤⾯での価値 運⽤に必要なインフラ構成 WafCharm(AWS WAF)運⽤時の注意点 WafCharm利⽤時の運⽤

  23. WafCharmユーザーの運⽤でできること • ルールのチューニング • メトリクスの監視 • AWS WAF障害時の対応 • COUNTモードとBLOCKモードの切り替え

  24. 運⽤シナリオパターン 導⼊ 検証 本運⽤ 最初はカウントモード で開始。 しばらく、誤検知/過検 知を観測 ブロックモードで本運⽤ 開始。

    本運⽤後に切り替えも可。
  25. 誤検知/過検知の判断 • カウント判定したログを全てチェック • ⼈的/ツールコストがかかる • 何も⾒ない • 意味がないのでブロックモードにした⽅がいい •

    チェックの精度とコストのバランスを鑑みた判断 • 国内からのアクセスのカウント判定が⼀定以上
  26. Athena WITH dataset AS (SELECT from_unixtime(timestamp/1000, 'Asia/Tokyo') AS JST, waf_logs.action

    AS Action, waf_logs.rulegrouplist AS RulegroupList, rulegroups AS rulegroups, waf_logs.httprequest.clientip AS ClientIP, waf_logs.httprequest.country AS Country, waf_logs.httprequest.httpmethod AS HttpMethod, waf_logs.httprequest.uri AS URI, waf_logs.terminatingruleid, waf_logs.responsecodesent AS Response, waf_logs.nonterminatingmatchingrules, waf_logs.httprequest FROM waf_logs, UNNEST(rulegrouplist) t(rulegroups) WHERE rulegroups.excludedrules is NOT null AND httpRequest.country = 'JP' AND from_unixtime(timestamp/1000) > now() - interval '3' day ) SELECT count(*) * 100.0 / (SELECT COUNT(*) FROM waf_logs WHERE from_unixtime(timestamp/1000) > now() - interval '3' day ) AS rate , excludedrules.ruleid AS ruleid FROM dataset, UNNEST(rulegroups.excludedrules) t(excludedrules) WHERE excludedrules.exclusiontype = 'EXCLUDED_AS_COUNT' GROUP BY excludedrules.ruleid ORDER BY rate DESC ;
  27. rate ruleid 25.5154639 wafcharm-blacklist-2132 1.80412371 OScmdi-qs-001 0.77319588 XXE-body-001 0.77319588 Traversal-body-001

    0.51546392 SSCi-body-002 0.25773196 OScmdi-body-001
  28. None
  29. まとめ • WafCharmを使うことで、AWS WAFのルールの⾃動チューニング が可能 • 誤検知/過検知のリスクを考えると、ロギングとモニタリングの 考慮が必要になる • 実施するには、運⽤およびリソースのコストが発⽣するので、

    落とし所を考える