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
340
第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
第160回 雲勉 それ、AWS Step Functions で置き換えれん?
iret
0
45
第159回 雲勉 Amazon Bedrock でブラウザを操作する AI エージェントを作ってみた
iret
0
63
第158回 雲勉 AWS CDK 入門 ~ プログラミング言語で書くインフラ Python 編 ~
iret
0
47
第157回 雲勉 AWSインフラ監視をNew Relicで行う際の個人的Tips
iret
0
46
第156回 雲勉 AWS on Windows入門
iret
0
82
第155回 雲勉 サーバレスアーキテクチャを 用いたコスト重視 AI サービス
iret
0
59
第154回 雲勉 AWS Codeシリーズ盛り上げ隊 ~ Codeシリーズは砕けない ~
iret
0
61
第153回 雲勉 トラシューが秒で終わる新機能 Amazon Q Developer operational investigations
iret
0
69
第150回 雲勉 AWS AppSyncではじめるGraphQL体験
iret
0
69
Other Decks in Technology
See All in Technology
コスト最適重視でAurora PostgreSQLのログ分析基盤を作ってみた #jawsug_tokyo
non97
2
870
GraphQLを活用したリアーキテクチャに対応するSLI/Oの再設計
coconala_engineer
0
200
OPENLOGI Company Profile for engineer
hr01
1
26k
ペアーズにおける評価ドリブンな AI Agent 開発のご紹介
fukubaka0825
8
2.2k
コードや知識を組み込む / Incorporating Codes and Knowledge
ks91
PRO
0
170
ビジネスとデザインとエンジニアリングを繋ぐために 一人のエンジニアは何ができるか / What can a single engineer do to connect business, design, and engineering?
kaminashi
2
870
意思決定を支える検索体験を目指してやってきたこと
hinatades
PRO
0
400
Part2 GitHub Copilotってなんだろう
tomokusaba
1
360
CodeRabbitと過ごした1ヶ月 ─ AIコードレビュー導入で実感したチーム開発の進化
mitohato14
1
230
Databricksで完全履修!オールインワンレイクハウスは実在した!
akuwano
0
150
Aspire をカスタマイズしよう & Aspire 9.2
nenonaninu
0
360
Mastraに入門してみた ~AWS CDKを添えて~
tsukuboshi
0
390
Featured
See All Featured
Rails Girls Zürich Keynote
gr2m
94
13k
StorybookのUI Testing Handbookを読んだ
zakiyama
30
5.7k
The World Runs on Bad Software
bkeepers
PRO
68
11k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
13
830
Optimising Largest Contentful Paint
csswizardry
37
3.2k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
30
2k
Writing Fast Ruby
sferik
628
61k
Large-scale JavaScript Application Architecture
addyosmani
512
110k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
179
53k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
29
1.7k
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
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 など) など、複数の対策を実施して、 万が一攻撃・侵入を受けた場合でも、被害を最小化できるように備えましょう