• 検索結果がありません。

アジェンダ AWS WAF General Overview 位置付け Technical Deep Dive

N/A
N/A
Protected

Academic year: 2021

シェア "アジェンダ AWS WAF General Overview 位置付け Technical Deep Dive"

Copied!
61
0
0

読み込み中.... (全文を見る)

全文

(1)

AWS WAF

AWS Black Belt Tech Webinar 2015

アマゾン ウェブ サービス ジャパン株式会社

荒⽊靖宏

(2)

アジェンダ

AWS WAF

General Overview

位置付け

(3)

AWS WAF

(Web Application

Firewall)

(4)

Why AWS WAF?

アプリ脆弱性

Good users

Bad guys

Web server

Database

Exploit

(5)

Why AWS WAF?

Abuse

Good users

Bad guys

(6)

Why AWS WAF?

Application DDoS

Good users

Bad guys

(7)

What is AWS WAF?

Application DDoS

Good users

Bad guys

Web server

Database

AWS

(8)

What is AWS WAF?

Application DDoS

Good users

Bad guys

Web server

Database

AWS

WAF

AWS WAF rules:

1: BLOCK from

悪者

.

(9)

What is AWS WAF?

Application DDoS

Good users

Bad guys

Web server

Database

AWS

(10)

WAFとは?

Web Application Firewall (WAF) は

HTTPトラフィックを

フィルタなどの制御をするためのアプライアンスや

サーバプ

ラグインなどのルールセットのこと

WAFは以下4つで提供されることが多い

Pure Play:

スタンドアローンのアプライアンスやソフトウェア

CDN: Content Delivery Network

へのバンドル

Load Balancer:

ロードバランサへのバンドル

Universal Threat Manager (UTM):

統合セキュリティ管理

(11)

なぜWAFを使うのか

WAFは

Webサイトやアプリケーションが

攻撃されてダウン

したりデータが流出したりすることがないように⼿助けをする

WAF

の⼀般的なユースケース

SQL Injection (SQLi) 、Cross Site Scripting (XSS)

対策

Web

クローラ、スクレイピング等の

BOT

対策

DDoS緩和

(HTTP/HTTPS floods)

ガートナーのレポートによると

導⼊理由の25-30%はPCI-DSS対応のため

(12)

AWS WAF

カスタムルールに

よるフィルタ

SQLインジェクション

XSSなどの

(13)

これまでのWAF

(14)

これまでのWAF

ルールが増えるにつれ誤検知(

False positive

(15)

これまでのWAF

(16)

これまでの WAF

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

プロフェッショナルサービス

が必要になる

(17)

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

実践的なセキュ

リティモデルを

簡単に導⼊

フレキシブルに

ルールをカスタ

マイズできる

DevOpsとの統

それらを

AWS

の「使っただけ」の⽀払い

(18)

AWS WAF

Amazon

CloudFrontとの併⽤

クラウドベースの防御

セルフサービス

簡単なデプロイ

使った分だけのお⽀払い

オートスケール

DevOpsと相性がいい

“Do it yourself”

AWS WAFとMarketplaceの併⽤について

Marketplace WAFs

EC2

インスタンス上で動作

マネージドサービス

、BYOL、1

時間単

位など様々

スケールさせるには別途設定

変更点

特別作業等必要

(19)

CloudFront Edge Location EC2 users hackers

bad bots scrapingsite SQL Injection, XSS, other attacks legitimate traffic

悪意をもったトラフィックを含めて

HTTP/HTTPS

であれば通る

ELB

CloudFront without WAF

S3

AND/ OR

Customer On Premises Environment

(20)

これまでのWAF配置

CloudFront Edge Location users hackers

bad bots scrapingsite SQL Injection,

XSS, other attacks legitimate

traffic

WAF on EC2は

ELB

でサンドイッチする

結果

複雑になり

レイテンシ

も上昇する

EC2 ELB WAF ELB ELB Sandwich Customer On Premises Environment

Origin Origin Storage WAF

(21)

CloudFront with AWS WAF

CloudFront Edge Location WAF users hackers

bad bots scrapingsite SQL Injection, XSS, other attacks legitimate traffic

不正なトラフィックはエッジロケーションにある

WAF

でブロック

AWS

外のリソースでも

OK

動的なコンテンツでも静的なコンテンツでも

OK

EC2 ELB S3 AND/ OR Customer On Premises Environment

(22)

AWS WAF Components

1.

Web Access Control Lists (WebACL)

2.

条件

– IP

アドレス

/

⽂字列

/ SQL

インジェクション

3.

ルール

-

順位

/

アクション

4.

AWS

リソース

(

現状ではCloudFront)

5.

レポート (リアルタイムのメトリクスとサンプリングされたリ

(23)

AWS WAF:

WebACL

WebACLsは

condition, rules, action

で構成

WebACLsは⼀つあるいは複数の

CloudFront distributionに適⽤

WebACLsはリアルタイムのメトリクス

サンプリングされたリクエストを

ルールごとに表⽰

(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

(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)

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

(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

(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

(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)

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)

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

query strings

URL decode

後にチェックする

SQLiについては

AWS WAFが定義

しているコードの

(32)

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

/login?x=testʼ UNION ALL select NULL

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

URL decode

(33)

AWS WAF:

Rules

ルールはあらかじめ決められたcondition

とアクションのセット

利⽤可能なアクション

Block

Allow

Count

ルールは論理的には結合している

(AND)

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

(34)

Reuse conditions

web ACL

の再利⽤イメージ

CloudFront distributions Web ACL #1 Web ACL #2 Shared blacklist

(35)

AWS WAF:

Resource

WebACLsはCloudFront distributionsに適⽤される

ルールは再利⽤できる:ひとつのWebACLを全ての

distributionsに使える

(36)

AWS WAF:

Reporting and Logs

Real-Time Metrics (CloudWatch):

ブロック

許可

カウントのみ

分析のためのルールはすぐに適

⽤される

時間区切りはグラフをスライド

させて指定できる

WAFのログはCloudFrontと統

(37)

AWS WAF:

Request Process

HTTP/HTTPSのリク エストがCloudFront に発せられる WAFはリクエストを レビューし、CFに対 してallow/denyを伝 える CFはWAFの対象かど うかを判定 WAFはメトリクスを Cloudwatchに送る。 利⽤者はルールをいつ でも変更可 CloudFront経由でコンテンツ配送 エラーページがCloudFrontから戻され

(38)

費⽤について

⽉間の費⽤例

テスト⽤ (1 rule): $6

Small site (6 rules, 58M views): $46

(39)
(40)

ネガティブ

多くの本番はこちら

ALLOW by default

BLOCK known-bad threats

ルール戦略

ポジティブ

制限実⾏時が多い

BLOCK by default

ALLOW known-good

Examples

BLOCK マルウェア配布

IP

レンジ

BLOCK “{;}”

Examples

ALLOW オフィスの

IP

レンジ

ALLOW referrer header

(41)

緩和戦略

Static policies –

よく知られた⼿法の脅威むけ

Reactive policies –

⼿法が変化する脅威向け

AWS WAF

パートナー

(42)

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

Count mode

Alert on Amazon CloudWatch metrics

Get sampled requests

(43)

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

Ruleの順番に注意!

1.

WhiteListed IPs – ALLOW

2.

BlackListed IPs – BLOCK

3.

BlackListedSignatures – BLOCK

4.

SQLInjection – COUNT

5.

SuspiciousActivity - COUNT

(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)
(46)

AWS WAF:

End to End Flow

1)

WebACLの作成

2)

Conditions (IP, string match, SQL)作成

3)

RulesとActions (order, rule, action)作成

4)

WebACLをCloudFrontに適⽤

(47)

AWS WAF:

Update WAF resources via API

トークンベースで処理:

変更⽤トークン取得:

WAF

リソースを変更するための⼀回

限りのトークンを取得

変更のためにトークン使⽤

ステータス確認のためにトークン使⽤: INSYNCは

変更中で

あることを⽰す

1

2

3

(48)

GetChangeToken

$ aws waf get-change-token

{

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

(49)

Create*

$ aws waf

create-web-acl

--name Test

--metric-name Test

--default-action Type=ALLOW

--change-token d4c4f53b-9c7e-47ce-9140-0ee5765d6bff

(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)

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)

GetSampledRequests

GetSampledRequestsは

指定された時間内(最⼤

3

時間前まで)

に⾏われた最⼤

500

リクエストをサンプリングした情報を得るのに

つかう

{

"

MaxItems

":

number

,

"

RuleId

": "

string

",

"

TimeWindow

": {

"

EndTime

":

number

,

"

StartTime

":

number

},

"

WebAclId

": "

string

"

}

(53)

WAF Example:

A Technical Implementation

(54)

WAF Example:

Blocking Bad Bots

必要なもの

IPSet

: ブロックするIPアドレスリスト

Rule

: IPSetにマッチしたら

ブロックする

WebACL: デフォルトではリクエストは許可

Ruleに含まれる

加えて必要なのは…

悪いボットを検出する⽅法

悪いボットのIPアドレスをIPSetに追加する⽅法

(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)

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)

Q&A

次回

Webinar

のお申し込み

(58)

AWS Black Belt Tech Webinar 2015 〜今後の配信

12⽉は「

新サービス紹介⽉間

12/16 Amazon EC2 スポットインスタンス & Auto Scaling

12/22 AWS Black Belt 年の瀬座談会(※⽕曜⽇開催です)

お申し込みサイト

(59)

Webinar資料の配置場所

AWS クラウドサービス活⽤資料集

(60)

公式

Twitter/Facebook

AWSの最新情報をお届けします

@awscloud_jp

検索

最新技術情報

イベント情報

お役⽴ち情報

お得なキャンペーン情報などを

⽇々更新しています!

もしくは

http://on.fb.me/1vR8yWm

(61)

参照

関連したドキュメント

There is a unique Desargues configuration D such that q 0 is the von Staudt conic of D and the pencil of quartics is cut out on q 0 by the pencil of conics passing through the points

The geometrical facts used in this paper, which are summarized in Section 2, are based on some properties of maximal curves from [10], [28], [29]; St¨ ohr-Voloch’s paper [38] (which

Polynomials (2.1) satisfy the following very useful identity originally formulated for so called contin- uous q − Hermite polynomials h n (can be found in e.g.. First assertions

These provide many new examples of each of the following: generalized quadrangles (GQ) with order (q 2 , q) having subquadrangles of order (q, q ); ovals in PG(2, q); flocks of

In particular, we show that the q-heat polynomials and the q-associated functions are closely related to the discrete q-Hermite I polynomials and the discrete q-Hermite II

Dive [D] proved a converse of Newton’s theorem: if Ω contains 0, and is strongly star-shaped with respect to 0, and for all t &gt; 1 and sufficiently close to 1, the uniform

In place of strict convexity we have in this setting the stronger versions given by the order of contact with the tangent plane of the boundary: We say that K ∈ C q is q-strictly

However its power ∇ / 2 , though not conformally covariant, has positive definite leading symbol (in fact, leading symbol |ξ| 2 Id), and so satisfies our analytic and