Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

about me • 廣⼭ 豊 • アイレット株式会社 クラウドインテグレーション事業部副事業部⻑ 兼 情報管理責任者 兼 PCI DSS管理責任者 兼 Well Architected Lead • 2020, 2021 Japan APN AWS Ambassador, AWS Top Engineers • 組み込み開発SIer出⾝ • AWS * 8, GCP * 9, Azure * 1, 情報処理安全確保⽀援⼠、 その他多数の認定資格を保有

Slide 3

Slide 3 text

about us • クラウド導⼊実績1,900社以上 • 年間プロジェクト2,600以上 • AWSプレミアコンサルティングパートナー8 年連続認定 • APN Consulting Partner of the year 2019 • GCPプレミアサービスパートナー認定 • クラウドのインフラ運⽤を主軸に、デザイン から開発までワンストップでサポート • 他拠点で運⽤

Slide 4

Slide 4 text

本⽇のテーマ • 汎⽤的な WafCharm(AWS WAF v2)運⽤ 本⽇話すこと • 個別要件に特化した運⽤ • 個別機能に特化した詳細解説 本⽇話さないこと WafCharmおよびAWS WAFの運⽤についてのご案内。

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

異なるCOUNTのログ ⾃作のRuleでのログ • nonterminatingmatchingrules [{ruleid=my-rule01, action=COUNT}] • RulegroupList {rulegroupid=arn:aws:wafv2:us-east-1:XXXXXXXXXXXX:regional/rulegroup//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}]},

Slide 20

Slide 20 text

カウントログのフィルタリング カウントモード運⽤において、Log FiltersでAcceptログをドロップする場 合、グループアクションとしてカウ ントモードに設定しないと、カウン トアクションのログもAcceptのログ と同様にドロップされてしまう。

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

誤検知/過検知の判断 • カウント判定したログを全てチェック • ⼈的/ツールコストがかかる • 何も⾒ない • 意味がないのでブロックモードにした⽅がいい • チェックの精度とコストのバランスを鑑みた判断 • 国内からのアクセスのカウント判定が⼀定以上

Slide 26

Slide 26 text

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 ;

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

No content

Slide 29

Slide 29 text

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