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
第117回 雲勉【オンライン】実際の課題から学ぶ:C1WS のメモリ不足の解消と AWS WA...
Search
iret.kumoben
October 18, 2023
Technology
0
380
第117回 雲勉【オンライン】実際の課題から学ぶ:C1WS のメモリ不足の解消と AWS WAF の基本
下記、勉強会での資料です。
https://youtu.be/owYyj2X3ao4
iret.kumoben
October 18, 2023
Tweet
Share
More Decks by iret.kumoben
See All by iret.kumoben
第166回 雲勉 コードを読んで理解する AWS Amplify Gen2 Backend
iret
0
12
第165回 雲勉 Google Agentspace について
iret
0
15
第164回 雲勉 Agent Development Kit と MCP Toolbox for Databases で MCP 連携してみた
iret
1
34
第163回 雲勉 CircleCIで複数リポジトリ間のパイプラインを連携する
iret
1
34
第162回 雲勉 比較して学ぶ AWS Amplify Gen 2
iret
0
46
第161回 雲勉 Amazon Kinesis Data Streams と Amazon Data Firehose を使ってみよう
iret
0
46
第160回 雲勉 それ、AWS Step Functions で置き換えれん?
iret
0
69
第159回 雲勉 Amazon Bedrock でブラウザを操作する AI エージェントを作ってみた
iret
0
82
第158回 雲勉 AWS CDK 入門 ~ プログラミング言語で書くインフラ Python 編 ~
iret
0
65
Other Decks in Technology
See All in Technology
OAuth/OpenID Connectで実現するMCPのセキュアなアクセス管理
kuralab
5
840
Claude Code Actionを使ったコード品質改善の取り組み
potix2
PRO
3
1.5k
VISITS_AIIoTビジネス共創ラボ登壇資料.pdf
iotcomjpadmin
0
140
データプラットフォーム技術におけるメダリオンアーキテクチャという考え方/DataPlatformWithMedallionArchitecture
smdmts
5
560
Observability infrastructure behind the trillion-messages scale Kafka platform
lycorptech_jp
PRO
0
130
Observability в PHP без боли. Олег Мифле, тимлид Altenar
lamodatech
0
270
PHP開発者のためのSOLID原則再入門 #phpcon / PHP Conference Japan 2025
shogogg
0
160
Model Mondays S2E02: Model Context Protocol
nitya
0
180
CIでのgolangci-lintの実行を約90%削減した話
kazukihayase
0
340
変化する開発、進化する体系時代に適応するソフトウェアエンジニアの知識と考え方(JaSST'25 Kansai)
mizunori
0
130
Welcome to the LLM Club
koic
0
130
Navigation3でViewModelにデータを渡す方法
mikanichinose
0
200
Featured
See All Featured
KATA
mclloyd
29
14k
Automating Front-end Workflow
addyosmani
1370
200k
Rebuilding a faster, lazier Slack
samanthasiow
81
9k
Building Flexible Design Systems
yeseniaperezcruz
328
39k
Writing Fast Ruby
sferik
628
61k
The Cult of Friendly URLs
andyhume
79
6.4k
Adopting Sorbet at Scale
ufuk
77
9.4k
Fireside Chat
paigeccino
37
3.5k
StorybookのUI Testing Handbookを読んだ
zakiyama
30
5.8k
The Invisible Side of Design
smashingmag
299
51k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
8
660
Typedesign – Prime Four
hannesfritz
42
2.7k
Transcript
実際の課題から学ぶ:C1WS のメモリ不足の解消と AWS WAF の基本 第117回 雲勉【オンライン】 AWS WAF の基本を押さえて安全に使おう
0.講師自己紹介 2 ▪ 村上 桃子 ≫ クラウドインテグレーション事業部 セキュリティセクション セキュリティサービスの提供や、 サービス立ち上げなどを行っています
≫ 2021年 6月入社 ≫ 西の方に行ってみたい今日この頃 @iret_security
アジェンダ 3 0. 自己紹介 1. 本日のゴール 2. 現場の課題から学ぶ AWS WAF
の基本 ▪ 構成図 どう描く? ▪ WAF どこに付ける? ▪ AWS WAF の構成要素が多すぎる! ▪ Default action に要注意 ▪ 誤検知が発生した! ▪ WAF でアクセス制限したはずなのに、アクセスできている! ▪ その他 3. おわりに
1. 本日のゴール 4 AWS WAF の基礎を理解し、安全に設定できるようになる
今回お話ししないこと 5 具体的な設定手順 具体的なルールの内容 具体的な誤検知対応手順 AWS WAF Classic
1. 現場の課題から学ぶ WAF の基本 6
構成図 どう描く? 7 WAF は CloudFront や ALB の前に置けばOK? CloudFront
ALB WAF WAF WAF = Web Application Firewall 1 2 3 4 5 6 7
構成図 どう描く? 8 AWS WAF はどのようにトラフィックをブロックまたは許可しますか? 基礎となるサービスがウェブサイトへのリクエストを受け取ると、 ルールに対して検査するためにそれらのリクエストを AWS WAF
へ転送します。 リクエストがルールで定義された条件を満たすと、 AWS WAF は基礎となるサービスに対し、定義したアクションに基づいて リクエストのブロックまたは許可のいずれかを指⽰します。 https://aws.amazon.com/jp/waf/faqs/ 1 2 3 4 5 6 7
構成図 どう描く? 9 AWS WAF はどのようにトラフィックをブロックまたは許可しますか? 基礎となるサービスがウェブサイトへのリクエストを受け取ると、 ルールに対して検査するためにそれらのリクエストを AWS WAF
へ転送します。 × WAFを通ったリクエストがALBに転送される ◯ ALBに届いたリクエストがWAFに転送される 1 2 3 4 5 6 7 ALB WAF WAF ALB
Security Group 構成図 どう描く? 10 構成図に絶対これという正解は 無いですが、 p.7 のような描き方は 避けた方が良いと考えます
その他、紛らわしい評価順序 • ALBリスナールール → WAF • WAF → Lambda@Edge ビュ ーワーリクエスト • CloudFront地理的一致 ステートメント → WAF CloudFront WAF ALB EC2 ALB WAF EC2 ※色々省略しています! 1 2 3 4 5 6 7
WAF どこに付ける? 11 CloudFront の後ろに ALB が配置されている場合、どちらに WAF を付ける? ALB
AWS WAF CloudFront システム上はどちらにも紐付けられる 1 2 3 4 5 6 7
WAF どこに付ける? 12 CloudFront の後ろに ALB が配置されている場合、どちらに WAF を付ける? ALB
CloudFront ・全てのリクエストを検査できる ・リクエスト元 IP を検査できる※ CloudFront に紐付ける ※ ALB にリクエストが送信される際に、リクエスト元IPは X-Forwarded-For ヘッダに設定される。 一部の AWS マネージドルールでは、ヘッダの IP 検査ができないほか、 自分で IP を判定条件とするルールを作成する際にも、ヘッダを参照するように指定する必要がある。 ALBに紐付ける ・WAFの費用が下がる可能性がある ・CloudFront の後ろに複数ALBがある場合、 それぞれに異なるWAF ルールを適用できる 1 2 3 4 5 6 7
AWS WAF の構成要素が多すぎる! 13 ルールとルールグループはどう違う? マネージドルールはまた別物? 1 2 3 4
5 6 7
AWS WAF の構成要素が多すぎる! 14 AWS WAF Web ACL IP Set
Regex Pattern Web ACL に直接紐づいた Rule ウェブアクセスコントロールリスト AWS リソースに関連付けて使う、リージョナルリソース 登録されたルールに従い、アクセスをブロック/許可する Rule Group Managed Rule Group ステートメント (条件の定義) + アクション 利用者が作成する 複数 Web ACLで使い回せない 複数の Rule (ステートメント+アクション) を グループ化したもの 利用者が作成する 複数の Web ACL で使い回せる AWS または セキュリティベンダーが作成したルールセット Rule Rule Rule は、Rule のステートメントで使う https://docs.aws.amazon.com/ja_jp/waf/latest/devel operguide/how-aws-waf-works-components.html 1 2 3 4 5 6 7
AWS WAF の構成要素が多すぎる! 15 AWS WAF Web ACL Web ACL
に直接紐づいた Rule リソースを守るため配置された警備員 何もルールを知らされないと、 全員通すor止める しかしないよ! Rule Group Managed Rule Group ステートメント (どんな人が来たら)+アクション(どうする) この警備員専用の通行人チェックルール 警備専門会社が作ったルール集 中身はそれぞれ異なるので、 守るリソースに応じて選ぼう! Rule Rule Rule 複数の警備員で共用できるルール集 「これを選べば どんな環境でも大丈夫!」 というルールは ありません。 詳細は非公開な点も注意 1 2 3 4 5 6 7
Default action に要注意 16 攻撃アクセスをブロックしたいと思って、 Web ACL の default action
を 「Block」 に設定して ALB に紐付けたら、 全部のアクセスが 403 でブロックされてしまった! 攻撃を止めるためにWAFを入れるんだから、 Block でいいよね! 403 Forbidden 1 2 3 4 5 6 7
Default action に要注意 17 Default action は、Web ACL に設定されている全てのルールで Allow/Block
されなかった場合の、WAFの動作を定める設定です。 Allow Block Block Allow/Block ルール 1 ルール 2 ルール 3 default action ルール1の ステートメントに合致 ルール2の ステートメントに合致 ルール3の ステートメントに合致 上記以外 1 2 3 4 5 6 7
Default action に要注意 18 Default action を Allow にする 拒否リスト方式。
指定IPや攻撃パターンに一致するリクエストは ブロックし、その他は許可 Default action を Block にする 許可リスト方式。 ほとんどのアクセスをブロックするが、 指定したIPなどの一部のアクセスのみ許可 検査して 攻撃者でなければ 通ってOK! 基本的に通行NG! 一部の許可された方のみ 通します! 1 2 3 4 5 6 7
誤検知が発生した! 19 WAF でウェブサイトへのアクセスがブロックされてしまった! ファイルアップロードができない... テキスト入力して送信したらエラーに... etc. 1 2 3
4 5 6 7
誤検知が発生した! 20 正規のアクセスであっても、 WAF で攻撃として検知されてしまう場合があります 怪しいので通らせません! コスプレしてる だけの 正規職員 なのですが...
1 2 3 4 5 6 7
誤検知が発生した! 21 導入直後は、検知モード (Count モード) での WAF 運用をおすすめします ルールに基づきアクセスを検査しますが、遮断はしないモードです 業務に支障が出るので、
しばらくは全員通ってOKとします! 怪しくない 怪しい 怪しい 1 2 3 4 5 6 7
最初から防御モード (Block モード) ではだめなの? → 誤検知リスクと、攻撃遮断のトレードオフになります。 正規の通信が遮断されるリスクを 許容してでも、 攻撃遮断を優先したいという場合は、 最初から防御モードという選択も
考えられます。 誤検知が発生した! 22 攻撃を遮断す る 正規の通信を 遮断しない 1 2 3 4 5 6 7
検知 (Count) モードとは? 誤検知が発生した! 23 Allow Block Block Allow ルール
1 ルール 2 default action ルール1の ステートメントに合致 ルール2の ステートメントに合致 ルール3の ステートメントに合致 上記以外 ルール 3 アクションが Allow/Block なら そこで評価終了 正規のアクセスが攻撃とみなされ、 ブロックされてしまう可能性がある 1 2 3 4 5 6 7
誤検知が発生した! 24 Allow Block Block Allow ルール 1 ルール 2
default action ルール1の ステートメントに合致 ルール2の ステートメントに合致 ルール3の ステートメントに合致 上記以外 Count Count ルール 3 ルールのアクションを 検知のみ(Count)に上書きしておく Countアクションの場合、 ステートメントに合致しても、 検査処理は終了せず、 その他のルールで評価される 検知 (Count) モードとは? 1 2 3 4 5 6 7
WAF でアクセス制限したはずなのに、アクセスできている! 25 CloudFront WAF ALB WAFを迂回して アクセスできる 設定になって いませんか?
WAFは 外れていませんか? ルールの内容や 優先順は 適切ですか? IaCなどによる 設定上書きに要注意 ステートメントは シンプルに、 初めて作成したルールは 動作確認を! 1 2 3 4 5 6 7
その他 26 AWS コンソールの Web ACL 詳細の Sampled Request にリクエストが表示されない。
Sampled Request があるから、WAF ログは出力しなくてもいい? 全部は記録されません。 誤検知対応やインシデント対応などのため、ログを出力しておくことを おすすめします。 費用を抑えたいので、Web ACLを使いまわしても良い? 同一 AWS アカウント、同リージョン※のリソースなら、 同じ Web ACL を共用できますが、適用されるルールも共通になります。 運用者が同じかどうか、システム特性が大きく異なっていないか、 など考慮の上で決定することを推奨します。 ※ CloudFront は us-east-1 ではなく global という別扱い。 Web ACL ALB ウェブサイトA用 ALB ウェブサイトB用 1 2 3 4 5 6 7
3. おわりに 27 AWS WAF やマネージドルールを使うと、 アプリケーションに保護レイヤーが追加されますが、 セキュリティの責任が AWS に移るわけではありません。
色々と細かく設定できる反面、複雑なところもあります。 まずは基本を押さえて、正しく設定・利用しましょう。
C1WS + AWS WAF と多層防御のすすめ 28
Cloud One Workload Security (C1WS) と AWS WAF の得意領域 29
C1WS AWS WAF 保護レイヤー L3〜L6 (一部 L7※) L7 (一部 L3) 配置先 サーバにインストール サーバの前に配置 主な機能 不正プログラム対策 侵入防御 変更監視 セキュリティログ監視 Webレピュテーション Webアプリへの攻撃防御 ※ C1WS にも、以下の攻撃に対応したルールはありますが、アプリケーション層への対策は WAF を推奨しています。 ・クロスサイトスクリプティング ・SQL インジェクション
どっち使えばいいの? 30 公開サイトであれば、両方使うことをおすすめします!
よくある誤検知 - C1WS 31 侵入防御機能による誤検知 • CMSのコンテンツ更新の遮断 • ApacheServerでファイルのアップロードの検知 不正プログラム対策機能による誤検知
• tmpディレクトリ配下でのPHPファイルの検知
よくある誤検知 - AWS WAF編 32 • 自由入力のフォーム投稿時の誤検知 • ファイルアップロードの誤検知
おわりのおわりに 33 家やオフィスに例えるなら 侵入しやすい構造になっていないか検査し、(雲勉 第114回で登場した CSPM) 出入りする人をきちんと管理し、(同回に登場した IDaaS) 入り口の警備や設備を強化し、(WAF や
L3、L4 のファイアウォール) 室内も警備や監視を行う (C1WS など) など、複数の対策を実施して、 万が一攻撃・侵入を受けた場合でも、被害を最小化できるように備えましょう