Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

AWS Black Belt Tech シリーズ 2015 - AWS WAF

11,849 views

Published on

2015年12月9日に放送したAWS WAF の資料です。今後の予定は以下をご覧ください。
http://aws.amazon.com/jp/about-aws/events/#webinar

Published in: Technology

AWS Black Belt Tech シリーズ 2015 - AWS WAF

  1. 1. AWS WAF AWS Black Belt Tech Webinar 2015 アマゾン ウェブ サービス ジャパン株式会社 荒⽊靖宏 2015/12/09
  2. 2. アジェンダ •  AWS WAF •  General Overview •  位置付け •  Technical Deep Dive
  3. 3. AWS WAF (Web Application Firewall)
  4. 4. Why AWS WAF? •  アプリ脆弱性 Good users Bad guys Web server Database Exploit code
  5. 5. Why AWS WAF? •  Abuse Good users Bad guys Web server Database
  6. 6. Why AWS WAF? •  Application DDoS Good users Bad guys Web server Database
  7. 7. What is AWS WAF? •  Application DDoS Good users Bad guys Web server Database AWS WAF
  8. 8. What is AWS WAF? •  Application DDoS Good users Bad guys Web server Database AWS WAF AWS WAF rules: 1: BLOCK from 悪者. 2: ALLOW from not 悪者.
  9. 9. What is AWS WAF? •  Application DDoS Good users Bad guys Web server Database AWS WAF
  10. 10. WAFとは? •  Web Application Firewall (WAF) は、HTTPトラフィックを フィルタなどの制御をするためのアプライアンスや、サーバプ ラグインなどのルールセットのこと。 •  WAFは以下4つで提供されることが多い •  Pure Play: スタンドアローンのアプライアンスやソフトウェア •  CDN: Content Delivery Networkへのバンドル •  Load Balancer: ロードバランサへのバンドル •  Universal Threat Manager (UTM): 統合セキュリティ管理 (UTM)の⼀部として提供
  11. 11. なぜWAFを使うのか •  WAFは、Webサイトやアプリケーションが、攻撃されてダウン したりデータが流出したりすることがないように⼿助けをする •  WAFの⼀般的なユースケース •  SQL Injection (SQLi) 、Cross Site Scripting (XSS)対策 •  Webクローラ、スクレイピング等のBOT対策 •  DDoS緩和 (HTTP/HTTPS floods) •  ガートナーのレポートによると、導⼊理由の25-30%はPCI- DSS対応のため •  Magic_Quadrant_for_Web_Application_Firewalls.pdfによる
  12. 12. AWS WAF カスタムルールに よるフィルタ SQLインジェクション、 XSSなどの よくある攻撃への対策 モニタリング
  13. 13. これまでのWAF •  設定は複雑で時間がかかる
  14. 14. これまでのWAF •  ルールが増えるにつれ誤検知(False positive) に悩むことになる
  15. 15. これまでのWAF •  No API
  16. 16. これまでの WAF •  導⼊と維持コストが⾼すぎる •  プロフェッショナルサービス が必要になる •  ⾒積もりが過⼤になりがち
  17. 17. お客様の要望に応じてAWSが実現したWAF •  実践的なセキュ リティモデルを 簡単に導⼊ •  フレキシブルに ルールをカスタ マイズできる •  DevOpsとの統 合 それらをAWSの「使っただけ」の⽀払い
  18. 18. AWS WAF •  Amazon CloudFrontとの併⽤ •  クラウドベースの防御 •  セルフサービス、簡単なデプロイ、 使った分だけのお⽀払い •  オートスケール •  DevOpsと相性がいい •  “Do it yourself” AWS WAFとMarketplaceの併⽤について Marketplace WAFs •  EC2インスタンス上で動作 •  マネージドサービス、BYOL、1時間単 位など様々 •  スケールさせるには別途設定、変更点、 特別作業等必要
  19. 19. CloudFront Edge Location EC2 users hackers bad bots site scraping SQL Injection, XSS, other attacks legitimate traffic 悪意をもったトラフィックを含めてHTTP/HTTPSであれば通る ELB CloudFront without WAF S3 AND/ OR Customer On Premises Environment Origin Server Origin Storage
  20. 20. これまでのWAF配置 CloudFront Edge Location users hackers bad bots site scraping SQL Injection, XSS, other attacks legitimate traffic WAF on EC2はELBでサンドイッチする。結果、複雑になり、レイテンシ も上昇する EC2ELBWAFELB ELB Sandwich Customer On Premises Environment Origin Origin StorageWAF
  21. 21. CloudFront with AWS WAF CloudFront Edge Location WAF users hackers bad bots site scraping SQL Injection, XSS, other attacks legitimate traffic 不正なトラフィックはエッジロケーションにあるWAFでブロック。 •  AWS外のリソースでもOK •  動的なコンテンツでも静的なコンテンツでもOK EC2ELBS3 AND/ OR Customer On Premises Environment Origin Server Origin Storage
  22. 22. AWS WAF Components 1.  Web Access Control Lists (WebACL) 2.  条件 – IPアドレス / ⽂字列 / SQLインジェクション 3.  ルール - 順位 / アクション 4.  AWSリソース (現状ではCloudFront) 5.  レポート (リアルタイムのメトリクスとサンプリングされたリ クエスト)
  23. 23. AWS WAF: WebACL •  WebACLsは、condition, rules, action で構成 •  WebACLsは⼀つあるいは複数の CloudFront distributionに適⽤ •  WebACLsはリアルタイムのメトリクス と、サンプリングされたリクエストを ルールごとに表⽰
  24. 24. AWS WAF: Conditions •  Conditionsはwebリクエストを判定するコン ポーネント •  Conditionsでは⼀致判定を⾏う •  IPアドレス i.e., /8, /16, /24, /32 •  ⽂字列, i.e., URI, クエリ⽂字列, ヘッダ, etc. •  SQLインジェクション, i.e., looks for invalid SQL statements •  Conditionsは論理的に分離されている(OR)
  25. 25. Match conditions: IPSets CIDR はオクテット毎の設定: •  192.0.0.0/8 – Matches 192.*.*.* •  192.168.0.0/16 •  192.168.32.0/24 •  192.168.32.64/32 – IPアドレスべた指定は/32を使う 制限について l IPSetあたり1,000 CIDRまで l webACLあたり、CIDRはトータルで10,000まで
  26. 26. Match conditions: Strings and bytes Webリクエストの内容と照合する Host: www.example.com User-Agent: Mozilla/5.0 (Macintosh; … Accept: image/png,image/*;q=0.8,*/ *;q=0.5 Accept-Language: en-US,en;q=0.5 Accept-Encoding: gzip, deflate Referrer: http://www.example.com/ Connection: keep-alive AWS WAF RAW request headers CloudFront Check: Header “Referrer” Match Type: Contains Match: “example.com” Action: ALLOW Rule String match condition Good users
  27. 27. Match conditions: Strings and bytes Host: www.example.com User-Agent: badbot Accept: image/png,image/*;q=0.8,*/ *;q=0.5 Accept-Language: en-US,en;q=0.5 Accept-Encoding: gzip, deflate Referrer: http://www.example.com/ Connection: keep-alive AWS WAF RAW request headers CloudFront Check: Header “User- Agent” Match Type: Contains Match: “badbot” Action: BLOCK Rule String match condition Scraper bot
  28. 28. Match conditions: Strings and bytes “transforms”をつかってちょっとした変更には対応可能 Host: www.example.com User-Agent: bAdBoT Accept: image/png,image/*;q=0.8,*/ *;q=0.5 Accept-Language: en-US,en;q=0.5 Accept-Encoding: gzip, deflate Referrer: http:// www.InTeRnEtkItTiEs.com/ Connection: keep-alive AWS WAF RAW request headers CloudFront Check: Header “User- Agent” Transform: To lower Match Type: Contains Match: “badbot” Action: BLOCK Rule String match condition Scraper bot
  29. 29. Match conditions: Strings and bytes 条件 1.  Contains 2.  Exact 3.  Begins with 4.  Ends with 5.  Contains word Transformation 1.  Convert to lowercase 2.  HTML decode 3.  空⽩除去 4.  Simplify command line 5.  URL decode
  30. 30. Match conditions: Strings and bytes 悪意のあるバイナリの発⾒にはBase64エンコードが使える “iVBORw0KGgoAAAAN” 8950 4e47 0d0a 1a0a 0000 000d bad.bin 1. Select binary file 2. Base64 encode 3. Set match criteria $> base64 bad.bin iVBORw0KGgoAAAAN
  31. 31. Match conditions: SQLインジェクション query stringsを URL decode後にチェックする SQLiについては AWS WAFが定義 しているコードの み
  32. 32. Match conditions: SQLインジェクション /login?x=test%27%20UNION%20ALL%20select%20NULL%20-- /login?x=testʼ UNION ALL select NULL -- クエリ文字列のチェックには URL decode URL decode
  33. 33. AWS WAF: Rules •  ルールはあらかじめ決められたcondition とアクションのセット •  利⽤可能なアクション •  Block •  Allow •  Count •  ルールは論理的には結合している (AND) •  ルールは複数のWebACLsと適⽤される
  34. 34. Reuse conditions •  web ACLの再利⽤イメージ CloudFront distributions Web ACL #1 Web ACL #2 Shared blacklist
  35. 35. AWS WAF: Resource •  WebACLsはCloudFront distributionsに適⽤される •  ルールは再利⽤できる:ひとつのWebACLを全ての distributionsに使える •  フレキシブル: WebACLをdistributionに個別にセットできる
  36. 36. AWS WAF: Reporting and Logs •  Real-Time Metrics (CloudWatch): •  ブロック •  許可 •  カウントのみ –  分析のためのルールはすぐに適 ⽤される –  時間区切りはグラフをスライド させて指定できる •  WAFのログはCloudFrontと統 合
  37. 37. AWS WAF: Request Process HTTP/HTTPSのリク エストがCloudFront に発せられる WAFはリクエストを レビューし、CFに対 してallow/denyを伝 える CFはWAFの対象かど うかを判定 WAFはメトリクスを Cloudwatchに送る。 利⽤者はルールをいつ でも変更可 CloudFront経由でコンテンツ配送エラーページがCloudFrontから戻され る
  38. 38. 費⽤について ⽉間の費⽤例 –  テスト⽤ (1 rule): $6 –  Small site (6 rules, 58M views): $46 –  Medium site (6 rules, 260M views): $167
  39. 39. AWS WAFの利⽤戦略
  40. 40. ネガティブ •  多くの本番はこちら •  ALLOW by default •  BLOCK known-bad threats ルール戦略 ポジティブ •  制限実⾏時が多い •  BLOCK by default •  ALLOW known-good Examples •  BLOCK マルウェア配布IPレンジ •  BLOCK “{;}” Examples •  ALLOW オフィスのIPレンジ •  ALLOW referrer header “example.com”
  41. 41. 緩和戦略 •  Static policies – よく知られた⼿法の脅威むけ •  Reactive policies – ⼿法が変化する脅威向け AWS WAF パートナー によるルールの更新も
  42. 42. カウント機能を使った脅威発⾒ Count mode Alert on Amazon CloudWatch metrics Get sampled requests Add bad IPs to BlackList
  43. 43. これらをあわせた典型的な使い⽅ •  Ruleの順番に注意! 1.  WhiteListed IPs – ALLOW 2.  BlackListed IPs – BLOCK 3.  BlackListedSignatures – BLOCK 4.  SQLInjection – COUNT 5.  SuspiciousActivity - COUNT •  Default: ALLOW
  44. 44. レポート⾃動化の流れ CloudWatch Alarm SNS Topic AWS Lambda AWS WAF Operator SNS Topic 1. Alarm on count 2. Send Amazon SNS notification 4. Format sampled requests 5. Get sampled requests 6. Send email notification
  45. 45. AWS WAFウォークスルー
  46. 46. AWS WAF: End to End Flow 1) WebACLの作成 2) Conditions (IP, string match, SQL)作成 3) RulesとActions (order, rule, action)作成 4) WebACLをCloudFrontに適⽤ 5) レビュー
  47. 47. AWS WAF: Update WAF resources via API •  トークンベースで処理: 変更⽤トークン取得: WAFリソースを変更するための⼀回 限りのトークンを取得 変更のためにトークン使⽤ ステータス確認のためにトークン使⽤: INSYNCは、変更中で あることを⽰す 1 2 3
  48. 48. GetChangeToken $ aws waf get-change-token { "ChangeToken”:"d4c4f53b-9c7e-47ce-9140-0ee5765d6bff" }
  49. 49. Create* $ aws waf create-web-acl --name Test --metric-name Test --default-action Type=ALLOW --change-token d4c4f53b-9c7e-47ce-9140-0ee5765d6bff
  50. 50. GetChangeTokenStatus $ aws waf get-change-token-status --change-token d4c4f53b-9c7e-47ce-9140-0ee5765d6bff { "ChangeTokenStatus":{ ”ChangeToken":"d4c4f53b-9c7e-47ce-9140-0ee5765d6bff ", “Status”: "PROVISIONED", OR "PENDING", OR "INSYNC" ] }, }
  51. 51. Update*Set $ aws waf update-ip-set --ip-set-id --change-token d4c4f53b-9c7e-47ce-9140-0ee5765d6bff --updates [ {"Action": "INSERT", "IPSetDescriptor": {"Type": "IPV4", "Value": "192.168.0.0/16"} }, {"Action": "INSERT", "IPSetDescriptor": {"Type": "IPV4", "Value": "192.168.5.0/24"} } ]
  52. 52. GetSampledRequests GetSampledRequestsは、指定された時間内(最⼤3時間前まで) に⾏われた最⼤500リクエストをサンプリングした情報を得るのに つかう。 { "MaxItems": number, "RuleId": "string", "TimeWindow": { "EndTime": number, "StartTime": number }, "WebAclId": "string" }
  53. 53. WAF Example: A Technical Implementation 悪いボットを動的に退治する
  54. 54. WAF Example: Blocking Bad Bots •  必要なもの •  IPSet: ブロックするIPアドレスリスト •  Rule: IPSetにマッチしたら、ブロックする •  WebACL: デフォルトではリクエストは許可。Ruleに含まれる •  加えて必要なのは… •  悪いボットを検出する⽅法 •  悪いボットのIPアドレスをIPSetに追加する⽅法
  55. 55. WAF Example: 悪いボットの検出 •  robots.txt にスクレイプ禁⽌ 条項を書いておく •  スクレイプ禁⽌コンテンツへの リンクを隠しリンクとして書い ておく •  $ cat webroot/robots.txt •  User-agent: * •  Disallow: /honeypot/ •  <a href="/honeypot/" class="hidden" aria- hidden="true">click me</a>
  56. 56. WAF Example: 悪いボットのブラックリスト •  悪いボット (robots.txtを無視するも の)は隠しリンクをリクエストする •  トリガスクリプトが •  ソースIPアドレスを検出 •  トークンを変更 •  ソースIPアドレスをIPSetのブ ラックリストに追加 •  WebACLは続くリクエストをブロッ ク $ aws --endpoint-url https:// carrot.amazon.com/ carrot get-change-token { "ChangeToken": "acbc53f2-46db-4fbd-b8d5- dfb8c466927f” } $ aws --endpoint-url https:// carrot.amazon.com/ carrot update-ip-set -- cli-input-json '{ "IPSetId": ”<<IP SET ID>>", "ChangeToken": "acbc53f2-46db-4fbd-b8d5- dfb8c466927f", "Updates": [ { "Action": "INSERT", "IPSetDescriptor": { "Type": "IPV4", "Value": ”<<SOURCE IP>>/32" } } ] }’ { "ChangeToken": "acbc53f2-46db-4fbd-b8d5- dfb8c466927f” }
  57. 57. Q&A 次回Webinarのお申し込み http://aws.amazon.com/jp/event_schedule/
  58. 58. AWS Black Belt Tech Webinar 2015 〜今後の配信 •  12⽉は「新サービス紹介⽉間」 – 12/16 Amazon EC2 スポットインスタンス & Auto Scaling – 12/22 AWS Black Belt 年の瀬座談会(※⽕曜⽇開催です) •  お申し込みサイト •  http://aws.amazon.com/jp/about-aws/events/
  59. 59. Webinar資料の配置場所 •  AWS クラウドサービス活⽤資料集 –  http://aws.amazon.com/jp/aws-jp-introduction/
  60. 60. 公式Twitter/Facebook AWSの最新情報をお届けします @awscloud_jp 検索 最新技術情報、イベント情報、お役⽴ち情報、お得なキャンペーン情報などを ⽇々更新しています! もしくは http://on.fb.me/1vR8yWm
  61. 61. ご参加ありがとうございました。

×