Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
WAF に頼りすぎない AWS WAF 運用術 meguro sec #1
Search
izzii
February 07, 2025
Technology
1
520
WAF に頼りすぎない AWS WAF 運用術 meguro sec #1
WAF に頼りすぎない AWS WAF 運用術 meguro sec #1
izzii
February 07, 2025
Tweet
Share
More Decks by izzii
See All by izzii
スタートアップが AWS FTR を取得するべき理由
izzii
0
470
触って理解する Go コンパイラ最適化 go conference mini 2023
izzii
2
280
Goのとある未定義動作 golang.tokyo #33
izzii
1
670
Other Decks in Technology
See All in Technology
モンテカルロ木探索のパフォーマンスを予測する Kaggleコンペ解説 〜生成AIによる未知のゲーム生成〜
rist
4
1.1k
モジュラーモノリスでスケーラブルなシステムを作る - BASE のリアーキテクチャのいま
panda_program
7
2k
KCD Brazil '25: Enabling Developers with Dapr & Backstage
salaboy
1
120
コンソールで学ぶ!AWS CodePipelineの機能とオプション
umekou
2
110
ClineにNext.jsのプロジェクト改善をお願いしてみた / 20250321_reacttokyo_LT
optim
1
1.3k
アプリケーション固有の「ロジックの脆弱性」を防ぐ開発者のためのセキュリティ観点
flatt_security
28
10k
技術的負債を正しく理解し、正しく付き合う #phperkaigi / PHPerKaigi 2025
shogogg
7
1.8k
Restarting_SRE_Road_to_SRENext_.pdf
_awache
0
160
非エンジニアにも伝えるメールセキュリティ / Email security for non-engineers
ykanoh
13
3.9k
caching_sha2_passwordのはなし
boro1234
0
220
スケールアップ企業のQA組織のバリューを最大限に引き出すための取り組み
tarappo
4
930
大規模アジャイル開発のリアル!コミュニケーション×進捗管理×高品質
findy_eventslides
0
520
Featured
See All Featured
Building Applications with DynamoDB
mza
94
6.3k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
4
500
4 Signs Your Business is Dying
shpigford
183
22k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
28
2k
The Art of Programming - Codeland 2020
erikaheidi
53
13k
Making the Leap to Tech Lead
cromwellryan
133
9.2k
Optimising Largest Contentful Paint
csswizardry
35
3.2k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
33
2.1k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
47
5.3k
Art, The Web, and Tiny UX
lynnandtonic
298
20k
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
40
2k
Transcript
WAF に頼りすぎない AWS WAF 運用術 市川悠人 @ テックタッチ株式会社
Meguro Sec #1 2025/02/07
自己紹介 名前:市川悠人/izzii 所属:テックタッチ株式会社 職種:セキュリティ、SRE 趣味:登山!ボルダリング! X: ahneahneahne
自己紹介 大学院:ゲノムインフォマティクス 仕事1:ERP の AI エンジニア 仕事2:WAF の事業部長 仕事3:DAP
の SRE 文字列をいじる仕事をしてきてる? WAF の提供側の経験があります!
テックタッチ株式会社の紹介 プログラミング不要でブラウザで動くあらゆるサービスの UX の拡張が行える DAP (Digital Adaptation Platform) サービスを提供しています。
テックタッチ株式会社の紹介
WAF に頼りすぎない。と言っておきながら 2重で使ってます! App ALB Fargate AWS WAF … agent
WAF
WAF に頼りすぎるって何? 攻撃の見極め 攻撃のハンドリング 両方を WAF に依存しすぎている状態
WAF に頼りすぎるって何? 攻撃の見極め 攻撃のハンドリング 両方を WAF に依存しすぎている状態 WAF の運用を難しくしている
WAF に頼りすぎてしまうのはなぜ? WAF の外側と内側について、 知らない || コントロールできないことが原因 AWS WAF
アプリケーション インターネット
WAF に頼りすぎてしまうのはなぜ? WAF の内側をコントロールできるなら、 頼りすぎなくて済む。 AWS WAF
インターネット App Fargate
WAFに頼りすぎない運用とは
攻撃者にとってヒントが少ないのはベター しかし分業的ソフトウェア開発では外形的なヒントが一切ないのは非効率 攻撃に対してどのレスポンスを返す?
200 OK 400 Bad Request 403 Not Allowed etc. 404
Not Found 500 Internal Server Error 無視している?悪用成功した? ナイスブロック! ナイスブロック?それともDB まで行った? 例外処理に失敗した? 攻撃文字列にどのレスポンスを返す? 受信者目線での「攻撃」は送信者目線では、 スキャニングである場合が大半 https://attack.mitre.org/techniques/T1595/
攻撃文字列にどこでレスポンスを返す? WAF Multiplexer Validator Business Logic 403 Not Allowed 404
Not Found DB 400/422 .. 500 Internal Server Error 404 Not Found ナイスブロック! ナイスブロック! ナイスブロック!
攻撃文字列にどこでレスポンスを返す? メリ デメ (AWS) WAF 正規表現が使える プロのルールを利用できる 早くない
リクエストサイズ制限がある Multiplexer (ミドルウェア、プロキシ) 2分探索で早い ホワイトリスト方式限定 脆弱性を含みうる Validator (アプリケーション) 正規表現が使える ホワイトリスト方式限定 作るのはあなた https://aws.amazon.com/jp/about-aws/whats-new/2024/03/aws-waf-larger-body-inspections-regional-r esources/
非専門家の API Protection 運用 App 世間、自社への攻撃動向を元にルールを更新 (ある程度 managed) 攻撃を 400,
404, etc. で返せるようにコードを更新 検知されたが通過した攻撃
WAF log にステータスコードは載らない 2025-01-23T10:11:23 /.env rule001 で遮断しました 2025-01-23T10:11:23
/api/users rule002 で検知しました 通しました 2025-01-23T10:11:23 /api/users 500 123ms 紐づけたい! AWS WAF log App log https://docs.aws.amazon.com/waf/latest/developerguide/logging-fields.html
custom header を用いて攻撃であることを伝える GET /api/users Accept: application/json X-amzn-waf-my-custom-header: foo GET
/api/users Accept: application/json label match を使って COUNT 対象のリクエ ストにカスタムヘッダーをつけます。丁寧に ルールとヘッダーバリューの対応づけをして いくと WCU は比較的嵩みます。ザックリで も案外運用は周ります。 https://docs.aws.amazon.com/waf/latest/developerguide/customizing-the-incoming-request.html https://docs.aws.amazon.com/waf/latest/developerguide/waf-rule-label-match-examples.html
https://dev.classmethod.jp/articles/update-securityhub-matchdetails-for-regex/ application log に BODY は載らないのが普通 waf log にも載らない
実は少しの間 WAF log の正規表現ルールで検知した文字列の詳細がログに記録 されていました。 しかし気がついたらドキュメントごと機能が消えていました。。 アプリケーションで出力する(常に全て出力するのは一般的ではない)か 脆弱性診断で妥協するか。 BODY の扱いは難しい..
WAFに頼ろう
プロ任せでいいものはプロ任せ どういった文字列が攻撃か? という判断は WAF およびルールに任せてしまおう AWS WAF インターネット App
Fargate
非常事態には超頼もしい Log4j のシグネチャはコロコロと変わり続けていました。 最新のルールを信頼せよ。 AWS WAF インターネット App Fargate
ミドルウェアを理解して使えていますか? WAF Multiplexer Validator Business Logic 403 Not Allowed 404
Not Found 怖いねー DB 400/422 .. 500 Internal Server Error 404 Not Found 怖いねー ナイスブロック! ナイスブロック! ナイスブロック! ミドルウェアが脆弱性を含んでいたり、 脆弱な設定にしていたり
テイクノートメッセージ - アプリケーションで攻撃を防ぐという選択肢も持ちましょう。 - 攻撃か否かの判断は WAF(ルール)に任せましょう。 - 攻撃の遮断はアプリケーションと分担しましょう。 - custom
header を利用してステータスコードと検知を並べましょう。 - matchdetails によって BODY が見れるようになるかも?現状はアプリケーションで出 力するしかない。 - あなたの設定や知識は完璧ではないので WAF に頼りましょう。
宣伝 弊SREの同僚が書籍を出版しました。 AWS でのメジャーな IaC ツール、 CDK と terraform の比較が詳細に書かれていま
す。 IaC ツールは色々な選択肢が出てきていますが、 比較論に目を通すことで技術選定の目を鍛えら れるのでは?