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
180
第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
第145回 雲勉 Amazon ECSでサービス間通信する方法を調べてみよう
iret
0
32
第144回 雲勉 Amazon Aurora Serverless v2の基礎とアーキの裏側を覗いてみる
iret
0
32
第143回 雲勉 [New Relic]インフラストラクチャ監視と気をつけたいポイント
iret
0
33
第142回 雲勉 AWS Backupの復元テストで自動化できること・できないこと
iret
0
77
第141回 雲勉 Amazon Inspectorによる脆弱性管理~ECR コンテナイメージ編~
iret
0
88
第2回 雲勉LT大会 パブリッククラウドのサーバレスサービスの違いを調べてみた
iret
0
21
第2回 雲勉LT大会 AWS Control Tower の「コントロール」って何? という謎から AWS Control Tower を知る
iret
0
20
第2回 雲勉LT大会 AWS/Google Cloud/Wasabi ストレージサービスを比較したい
iret
0
33
第2回 雲勉LT大会 クラウド時代は CRUD ではなく CQRS で考えよう
iret
0
38
Other Decks in Technology
See All in Technology
Low Latency Join Method for Distributed DBMS
yugabytejapan
0
180
CData Virtuality 日本ローンチイベントのKeynote
cdataj
0
230
Develop to Survive - YAPC::Hakodate 2024 Keynote
moznion
8
3k
エムスリー全チーム紹介資料 / Introduction of M3 All Teams
m3_engineering
1
320
テクニカルライターのチームで「目標」をどう決めたか / MVV for a Team of Technical Writers
lycorptech_jp
PRO
3
120
TypeScript x Raycast x AIで変える開発者体験
nagauta
1
280
Qdrant を用いた検索改善施策の紹介 / Search Engineering Tech Talk 2024 Summer
visional_engineering_and_design
1
210
寒冷地稲作の歴史にみるコミュニティ
miu_crescent
2
110
Oracle Database 23ai 新機能#4 Real Application Clusters
oracle4engineer
PRO
0
160
エンジニア向け会社紹介資料
caddi_eng
14
270k
Amazon ECS & AWS Fargate 今昔物語 / past and present stories of Amazon ECS and AWS Fargate
iselegant
15
2.6k
Databricks Appのご紹介
databricksjapan
0
360
Featured
See All Featured
Producing Creativity
orderedlist
PRO
341
39k
In The Pink: A Labor of Love
frogandcode
139
22k
Docker and Python
trallard
40
3k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
364
22k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
327
21k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.1k
Web development in the modern age
philhawksworth
205
10k
Debugging Ruby Performance
tmm1
73
12k
Design by the Numbers
sachag
278
19k
Visualization
eitanlees
143
15k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
92
16k
Java REST API Framework Comparison - PWX 2021
mraible
PRO
28
7.5k
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 など) など、複数の対策を実施して、 万が一攻撃・侵入を受けた場合でも、被害を最小化できるように備えましょう