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
280
第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
第155回 雲勉 サーバレスアーキテクチャを 用いたコスト重視 AI サービス
iret
0
41
第154回 雲勉 AWS Codeシリーズ盛り上げ隊 ~ Codeシリーズは砕けない ~
iret
0
38
第153回 雲勉 トラシューが秒で終わる新機能 Amazon Q Developer operational investigations
iret
0
53
第150回 雲勉 AWS AppSyncではじめるGraphQL体験
iret
0
46
第151回 雲勉 プロジェクトのドキュメントにおける課題をAmazon Bedrockで解決してみる
iret
0
62
第152回 雲勉 シームレスなマルチリージョンへの移行と検討 ~Amazon EKSとAWS Global Acceleratorを使用した環境〜
iret
0
58
第149回 雲勉 AWS ベストプラクティスの最新と実際 AWS Well-Architected
iret
0
90
第148回 雲勉 Web アプリケーションセキュリティ
iret
0
53
第147回 雲勉 Amazon CloudWatchをウォッチ!
iret
0
66
Other Decks in Technology
See All in Technology
E2Eテスト自動化入門
devops_vtj
1
110
事業を差別化する技術を生み出す技術
pyama86
2
480
Охота на косуль у древних
ashapiro
0
120
【5分でわかる】セーフィー エンジニア向け会社紹介
safie_recruit
0
19k
LINE NEWSにおけるバックエンド開発
lycorptech_jp
PRO
0
340
2025/3/1 公共交通オープンデータデイ2025
morohoshi
0
100
データモデルYANGの処理系を再発明した話
tjmtrhs
0
220
AIエージェント入門
minorun365
PRO
33
19k
Amazon Q Developerの無料利用枠を使い倒してHello worldを表示させよう!
nrinetcom
PRO
2
120
遷移の高速化 ヤフートップの試行錯誤
narirou
6
1.9k
EMConf JP 2025 懇親会LT / EMConf JP 2025 social gathering
sugamasao
2
210
Apache Iceberg Case Study in LY Corporation
lycorptech_jp
PRO
0
360
Featured
See All Featured
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
114
51k
Fireside Chat
paigeccino
35
3.2k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
134
33k
Bash Introduction
62gerente
611
210k
Optimizing for Happiness
mojombo
377
70k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
29
1k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.5k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
44
7.1k
Become a Pro
speakerdeck
PRO
26
5.2k
Imperfection Machines: The Place of Print at Facebook
scottboms
267
13k
Thoughts on Productivity
jonyablonski
69
4.5k
A Tale of Four Properties
chriscoyier
158
23k
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 など) など、複数の対策を実施して、 万が一攻撃・侵入を受けた場合でも、被害を最小化できるように備えましょう