61
AWS WAF AWS Black Belt Tech Webinar 2015 アマゾン ウェブ サービス ジャパン株式会社 荒⽊靖宏 2015/12/09

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

Embed Size (px)

Citation preview

Page 1: AWS Black Belt Tech シリーズ 2015 - AWS WAF

AWS WAF

AWS Black Belt Tech Webinar 2015アマゾン ウェブ サービス ジャパン株式会社

荒⽊靖宏

2015/12/09

Page 2: AWS Black Belt Tech シリーズ 2015 - AWS WAF

アジェンダ

•  AWS WAF•  General Overview •  位置付け •  Technical Deep Dive

Page 3: AWS Black Belt Tech シリーズ 2015 - AWS WAF

AWS WAF (Web Application Firewall)

Page 4: AWS Black Belt Tech シリーズ 2015 - AWS WAF

Why AWS WAF?

•  アプリ脆弱性

Good users

Bad guys

Web server Database

Exploit code

Page 5: AWS Black Belt Tech シリーズ 2015 - AWS WAF

Why AWS WAF?

•  Abuse

Good users

Bad guys

Web server Database

Page 6: AWS Black Belt Tech シリーズ 2015 - AWS WAF

Why AWS WAF?

•  Application DDoS

Good users

Bad guys

Web server Database

Page 7: AWS Black Belt Tech シリーズ 2015 - AWS WAF

What is AWS WAF?

•  Application DDoS

Good users

Bad guys

Web server Database

AWSWAF

Page 8: AWS Black Belt Tech シリーズ 2015 - AWS WAF

What is AWS WAF?

•  Application DDoS

Good users

Bad guys

Web server Database

AWSWAF

AWS WAF rules:1: BLOCK from 悪者.2: ALLOW from not 悪者.

Page 9: AWS Black Belt Tech シリーズ 2015 - AWS WAF

What is AWS WAF?

•  Application DDoS

Good users

Bad guys

Web server Database

AWSWAF

Page 10: AWS Black Belt Tech シリーズ 2015 - AWS WAF

WAFとは?

•  Web Application Firewall (WAF) は、HTTPトラフィックをフィルタなどの制御をするためのアプライアンスや、サーバプラグインなどのルールセットのこと。

•  WAFは以下4つで提供されることが多い•  Pure Play: スタンドアローンのアプライアンスやソフトウェア•  CDN: Content Delivery Networkへのバンドル•  Load Balancer: ロードバランサへのバンドル•  Universal Threat Manager (UTM): 統合セキュリティ管理

(UTM)の⼀部として提供

Page 11: AWS Black Belt Tech シリーズ 2015 - AWS WAF

なぜ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による

Page 12: AWS Black Belt Tech シリーズ 2015 - AWS WAF

AWS WAFカスタムルールによるフィルタ

SQLインジェクション、XSSなどのよくある攻撃への対策

モニタリング

Page 13: AWS Black Belt Tech シリーズ 2015 - AWS WAF

これまでのWAF

•  設定は複雑で時間がかかる

Page 14: AWS Black Belt Tech シリーズ 2015 - AWS WAF

これまでのWAF

•  ルールが増えるにつれ誤検知(False positive)に悩むことになる

Page 15: AWS Black Belt Tech シリーズ 2015 - AWS WAF

これまでのWAF

•  No API

Page 16: AWS Black Belt Tech シリーズ 2015 - AWS WAF

これまでの WAF

•  導⼊と維持コストが⾼すぎる

•  プロフェッショナルサービスが必要になる

•  ⾒積もりが過⼤になりがち

Page 17: AWS Black Belt Tech シリーズ 2015 - AWS WAF

お客様の要望に応じてAWSが実現したWAF

•  実践的なセキュリティモデルを簡単に導⼊

•  フレキシブルにルールをカスタマイズできる

•  DevOpsとの統合

それらをAWSの「使っただけ」の⽀払い

Page 18: AWS Black Belt Tech シリーズ 2015 - AWS WAF

AWS WAF•  Amazon CloudFrontとの併⽤•  クラウドベースの防御•  セルフサービス、簡単なデプロイ、

使った分だけのお⽀払い•  オートスケール•  DevOpsと相性がいい•  “Do it yourself”

AWS WAFとMarketplaceの併⽤について

Marketplace WAFs•  EC2インスタンス上で動作•  マネージドサービス、BYOL、1時間単

位など様々•  スケールさせるには別途設定、変更点、

特別作業等必要

Page 19: AWS Black Belt Tech シリーズ 2015 - AWS WAF

CloudFront

Edge Location

EC2

users

hackers

bad bots site scraping

SQL Injection, XSS, other

attacks

legitimatetraffic

悪意をもったトラフィックを含めてHTTP/HTTPSであれば通る

ELB

CloudFront without WAF

S3

AND/OR

Customer On Premises Environment

Origin Server Origin Storage

Page 20: AWS Black Belt Tech シリーズ 2015 - AWS WAF

これまでのWAF配置

CloudFront

Edge Location

users

hackers

bad bots site scraping

SQL Injection, XSS, other

attacks

legitimatetraffic

WAF on EC2はELBでサンドイッチする。結果、複雑になり、レイテンシも上昇する

EC2ELBWAFELB

ELB Sandwich

Customer On Premises Environment

Origin Origin StorageWAF

Page 21: AWS Black Belt Tech シリーズ 2015 - AWS WAF

CloudFront with AWS WAF

CloudFront

Edge Location WAF

users

hackers

bad bots site scraping

SQL Injection, XSS, other

attacks

legitimatetraffic

不正なトラフィックはエッジロケーションにあるWAFでブロック。•  AWS外のリソースでもOK•  動的なコンテンツでも静的なコンテンツでもOK

EC2ELBS3

AND/OR

Customer On Premises Environment

Origin Server Origin Storage

Page 22: AWS Black Belt Tech シリーズ 2015 - AWS WAF

AWS WAF Components

1.  Web Access Control Lists (WebACL)2.  条件 – IPアドレス / ⽂字列 / SQLインジェクション3.  ルール - 順位 / アクション4.  AWSリソース (現状ではCloudFront)5.  レポート (リアルタイムのメトリクスとサンプリングされたリ

クエスト)

Page 23: AWS Black Belt Tech シリーズ 2015 - AWS WAF

AWS WAF: WebACL

•  WebACLsは、condition, rules, actionで構成

•  WebACLsは⼀つあるいは複数のCloudFront distributionに適⽤

•  WebACLsはリアルタイムのメトリクスと、サンプリングされたリクエストをルールごとに表⽰

Page 24: AWS Black Belt Tech シリーズ 2015 - AWS WAF

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)

Page 25: AWS Black Belt Tech シリーズ 2015 - AWS WAF

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まで

Page 26: AWS Black Belt Tech シリーズ 2015 - AWS WAF

Match conditions: Strings and bytes

Webリクエストの内容と照合する

Host: www.example.comUser-Agent: Mozilla/5.0 (Macintosh; …Accept: image/png,image/*;q=0.8,*/*;q=0.5Accept-Language: en-US,en;q=0.5Accept-Encoding: gzip, deflateReferrer: http://www.example.com/Connection: keep-alive

AWSWAF

RAW request headers

CloudFront

Check: Header “Referrer”Match Type: ContainsMatch: “example.com”Action: ALLOW

RuleString match condition

Good users

Page 27: AWS Black Belt Tech シリーズ 2015 - AWS WAF

Match conditions: Strings and bytes

Host: www.example.comUser-Agent: badbotAccept: image/png,image/*;q=0.8,*/*;q=0.5Accept-Language: en-US,en;q=0.5Accept-Encoding: gzip, deflateReferrer: http://www.example.com/Connection: keep-alive

AWSWAF

RAW request headers

CloudFront

Check: Header “User-Agent”Match Type: ContainsMatch: “badbot”Action: BLOCK

RuleString match condition

Scraper bot

Page 28: AWS Black Belt Tech シリーズ 2015 - AWS WAF

Match conditions: Strings and bytes

“transforms”をつかってちょっとした変更には対応可能

Host: www.example.comUser-Agent: bAdBoTAccept: image/png,image/*;q=0.8,*/*;q=0.5Accept-Language: en-US,en;q=0.5Accept-Encoding: gzip, deflateReferrer: http://www.InTeRnEtkItTiEs.com/Connection: keep-alive AWS

WAF

RAW request headers

CloudFront

Check: Header “User-Agent”Transform: To lowerMatch Type: ContainsMatch: “badbot”Action: BLOCK

RuleString match condition

Scraper bot

Page 29: AWS Black Belt Tech シリーズ 2015 - AWS WAF

Match conditions: Strings and bytes

条件1.  Contains2.  Exact3.  Begins with4.  Ends with5.  Contains word

Transformation1. Convert to lowercase2. HTML decode3. 空⽩除去4. Simplify command line5. URL decode

Page 30: AWS Black Belt Tech シリーズ 2015 - AWS WAF

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.biniVBORw0KGgoAAAAN

Page 31: AWS Black Belt Tech シリーズ 2015 - AWS WAF

Match conditions: SQLインジェクション

query stringsを URL decode後にチェックする

SQLiについてはAWS WAFが定義しているコードの

Page 32: AWS Black Belt Tech シリーズ 2015 - AWS WAF

Match conditions: SQLインジェクション

/login?x=test%27%20UNION%20ALL%20select%20NULL%20--

/login?x=testʼ UNION ALL select NULL --

クエリ文字列のチェックには URL decode

URL decode

Page 33: AWS Black Belt Tech シリーズ 2015 - AWS WAF

AWS WAF: Rules•  ルールはあらかじめ決められたcondition

とアクションのセット•  利⽤可能なアクション

•  Block•  Allow•  Count

•  ルールは論理的には結合している(AND)

•  ルールは複数のWebACLsと適⽤される

Page 34: AWS Black Belt Tech シリーズ 2015 - AWS WAF

Reuse conditions

•  web ACLの再利⽤イメージ

CloudFrontdistributions

Web ACL #1

Web ACL #2

Shared blacklist

Page 35: AWS Black Belt Tech シリーズ 2015 - AWS WAF

AWS WAF: Resource

•  WebACLsはCloudFront distributionsに適⽤される•  ルールは再利⽤できる:ひとつのWebACLを全ての

distributionsに使える•  フレキシブル: WebACLをdistributionに個別にセットできる

Page 36: AWS Black Belt Tech シリーズ 2015 - AWS WAF

AWS WAF: Reporting and Logs

•  Real-Time Metrics (CloudWatch):•  ブロック•  許可•  カウントのみ–  分析のためのルールはすぐに適

⽤される–  時間区切りはグラフをスライド

させて指定できる•  WAFのログはCloudFrontと統

Page 37: AWS Black Belt Tech シリーズ 2015 - AWS WAF

AWS WAF: Request Process

HTTP/HTTPSのリクエストがCloudFront

に発せられる

WAFはリクエストをレビューし、CFに対してallow/denyを伝

える

CFはWAFの対象かどうかを判定

WAFはメトリクスをCloudwatchに送る。

利⽤者はルールをいつでも変更可

CloudFront経由でコンテンツ配送エラーページがCloudFrontから戻される

Page 38: AWS Black Belt Tech シリーズ 2015 - AWS WAF

費⽤について

⽉間の費⽤例–  テスト⽤ (1 rule): $6–  Small site (6 rules, 58M views): $46–  Medium site (6 rules, 260M views): $167

Page 39: AWS Black Belt Tech シリーズ 2015 - AWS WAF

AWS WAFの利⽤戦略

Page 40: AWS Black Belt Tech シリーズ 2015 - AWS WAF

ネガティブ•  多くの本番はこちら•  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”

Page 41: AWS Black Belt Tech シリーズ 2015 - AWS WAF

緩和戦略

•  Static policies – よく知られた⼿法の脅威むけ•  Reactive policies – ⼿法が変化する脅威向け

AWS WAF パートナーによるルールの更新も

Page 42: AWS Black Belt Tech シリーズ 2015 - AWS WAF

カウント機能を使った脅威発⾒

Count mode Alert on Amazon CloudWatch metricsGet sampled requestsAdd bad IPs to BlackList

Page 43: AWS Black Belt Tech シリーズ 2015 - AWS WAF

これらをあわせた典型的な使い⽅

•  Ruleの順番に注意!1.  WhiteListed IPs – ALLOW2.  BlackListed IPs – BLOCK3.  BlackListedSignatures – BLOCK4.  SQLInjection – COUNT5.  SuspiciousActivity - COUNT

•  Default: ALLOW

Page 44: AWS Black Belt Tech シリーズ 2015 - AWS WAF

レポート⾃動化の流れ

CloudWatch

Alarm

SNS

Topic

AWS Lambda

AWS WAF

Operator

SNS

Topic

1. Alarm on count 2. Send Amazon SNS notification

4. Formatsampled requests

5. Getsampled requests

6. Send emailnotification

Page 45: AWS Black Belt Tech シリーズ 2015 - AWS WAF

AWS WAFウォークスルー

Page 46: AWS Black Belt Tech シリーズ 2015 - AWS WAF

AWS WAF: End to End Flow

1) WebACLの作成2) Conditions (IP, string match, SQL)作成3) RulesとActions (order, rule, action)作成4) WebACLをCloudFrontに適⽤5) レビュー

Page 47: AWS Black Belt Tech シリーズ 2015 - AWS WAF

AWS WAF: Update WAF resources via API

•  トークンベースで処理:

変更⽤トークン取得: WAFリソースを変更するための⼀回限りのトークンを取得変更のためにトークン使⽤

ステータス確認のためにトークン使⽤: INSYNCは、変更中であることを⽰す

1

2

3

Page 48: AWS Black Belt Tech シリーズ 2015 - AWS WAF

GetChangeToken

$ aws waf get-change-token

{ "ChangeToken”:"d4c4f53b-9c7e-47ce-9140-0ee5765d6bff"

}

Page 49: AWS Black Belt Tech シリーズ 2015 - AWS WAF

Create*

$ aws waf create-web-acl --name Test --metric-name Test --default-action Type=ALLOW --change-token d4c4f53b-9c7e-47ce-9140-0ee5765d6bff

Page 50: AWS Black Belt Tech シリーズ 2015 - AWS WAF

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" ] },}

Page 51: AWS Black Belt Tech シリーズ 2015 - AWS WAF

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"} }]

Page 52: AWS Black Belt Tech シリーズ 2015 - AWS WAF

GetSampledRequests

GetSampledRequestsは、指定された時間内(最⼤3時間前まで)に⾏われた最⼤500リクエストをサンプリングした情報を得るのにつかう。{"MaxItems": number,"RuleId": "string","TimeWindow": {"EndTime": number,"StartTime": number},"WebAclId": "string"}

Page 53: AWS Black Belt Tech シリーズ 2015 - AWS WAF

WAF Example: A Technical Implementation

悪いボットを動的に退治する

Page 54: AWS Black Belt Tech シリーズ 2015 - AWS WAF

WAF Example: Blocking Bad Bots

•  必要なもの•  IPSet: ブロックするIPアドレスリスト•  Rule: IPSetにマッチしたら、ブロックする•  WebACL: デフォルトではリクエストは許可。Ruleに含まれる

•  加えて必要なのは…•  悪いボットを検出する⽅法•  悪いボットのIPアドレスをIPSetに追加する⽅法

Page 55: AWS Black Belt Tech シリーズ 2015 - AWS WAF

WAF Example: 悪いボットの検出

•  robots.txt にスクレイプ禁⽌条項を書いておく

•  スクレイプ禁⽌コンテンツへのリンクを隠しリンクとして書いておく

•  $ cat webroot/robots.txt

•  User-agent: *

•  Disallow: /honeypot/

•  <a href="/honeypot/" class="hidden" aria-hidden="true">click me</a>

Page 56: AWS Black Belt Tech シリーズ 2015 - AWS WAF

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”

}

Page 57: AWS Black Belt Tech シリーズ 2015 - AWS WAF

Q&A

次回Webinarのお申し込みhttp://aws.amazon.com/jp/event_schedule/

Page 58: AWS Black Belt Tech シリーズ 2015 - AWS WAF

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/

Page 59: AWS Black Belt Tech シリーズ 2015 - AWS WAF

Webinar資料の配置場所

•  AWS クラウドサービス活⽤資料集–  http://aws.amazon.com/jp/aws-jp-introduction/

Page 60: AWS Black Belt Tech シリーズ 2015 - AWS WAF

公式Twitter/FacebookAWSの最新情報をお届けします

@awscloud_jp検索

最新技術情報、イベント情報、お役⽴ち情報、お得なキャンペーン情報などを⽇々更新しています!

もしくはhttp://on.fb.me/1vR8yWm

Page 61: AWS Black Belt Tech シリーズ 2015 - AWS WAF

ご参加ありがとうございました。