---
title: "GCP Cloud armorとAWS WAFのban反映時間を比較 | grasys blog"
url: "https://blog.grasys.io/post/tsunoda/waf/"
description: "こんにちは角田(tsunoda)です。 最近腹が出てきた気がします。( ‘-’ ) GCPのCloud armorと、AWSのWAF、 実際に両方使ってみたのでban-timeを比較した結果を書いていこうと思います！ Cloud armorについては以前ご紹介したので、今回はWAFを主にご紹介します。 fail2ba…"
---

# GCP Cloud armorとAWS WAFのban反映時間を比較

-   ![](/_astro/noicon.CTHOhNiB_1HMs6A.webp)[tsunoda](/authors/tsunoda/)
-   公開日：2019年12月19日
-   カテゴリー：[Tech](/categories/tech/)
-   タグ：[#AWS](/tags/aws/)[#Cloud Armor](/tags/cloud-armor/)[#Google Cloud](/tags/google-cloud/)[#waf](/tags/waf/)

![GCP Cloud armorとAWS WAFのban反映時間を比較](/_astro/og-image.DDSiu2Ny_XHpDd.webp)

こんにちは角田(tsunoda)です。  
最近腹が出てきた気がします。( ‘-’ )

GCPのCloud armorと、AWSのWAF、  
実際に両方使ってみたのでban-timeを比較した結果を書いていこうと思います！  
Cloud armorについては以前ご紹介したので、今回はWAFを主にご紹介します。  
[fail2banとCloud armorでbanする](/post/tsunoda/cloud-armor-2/)

## Cloud armorとは

GCPのglobal HTTP(S) Load Balancerの新しいセキュリティ対策サービスです。  
主な機能は以下になります。

Plain textcontent\_copy

```
DDoS対策
IP制限(whitelist,bkacklist)
```

検証詳細はこちら↓  
[fail2banとCloud armorでbanする](/post/tsunoda/cloud-armor-2/)

## AWS WAFとは

可用性、セキュリティ侵害、リソースの過剰消費といった一般的なウェブの脆弱性から  
ウェブアプリケーションまたは API を保護するウェブアプリケーションファイアウォールです。  
こちらもDDoS対策やIP制限に使えます！

### WAFを設定してみる

まずはWeb ACLを作成します。

![AWS WAFのコンソールでWeb ACLの作成を開始する画面](/_astro/01-11-9-1024x289-90a9e6ad.DSlBppBI_u13se.webp)

regionの選択を忘れがちなので注意です。 `Create web ACL` をぽち。  
detailsの設定をして、今回Ruleなどは後で作成します。

![AWS WAFでWeb ACLのリージョンや基本情報を設定する画面](/_astro/02-12-8-896x1024-5cd43dbb.F7UQbgyd_Z1oigOH.webp)

`Create web ACL` ぽち！できました。

![AWS WAFで作成が完了したWeb ACL](/_astro/03-13-8-1024x262-16e11643.Cad8Rno3_Z3nvi7.webp)

Web ACLができたら、作成したWeb ACLを選択、`Add rules` をぽちってRuleを作成します。  
こんな感じで設定します。↓

![AWS WAFでWeb ACLにルールを追加する画面](/_astro/04-14-7-1024x403-f8cb53d1.BvkYjdkG_x5Ywh.webp)

5分間で100アクセス以上してきたIPをbanするルールを作成してみます。↓

![AWS WAFで5分間に100アクセスしたIPをブロックするレートベースルールの設定](/_astro/05-15-8-898x1024-c8003381.DxGLWtgr_Z1yWd3C.webp)

Plain textcontent\_copy

```
-Rule/Type
  Regular ruleか、Rateをベースにしたルールを作るよという意味

-Request rate details/Rate limit
  この値はアクセス数。全アクセスか、リクエスト指定か選べる。  
  Rate-based ruleの場合はここでrateを設定する。  

-Action/Action
  Blockは実際にルールにしたがってbanする。Countにすると計測のみ行いbanはしない。
```

`Add rule` ぽちで作成完了です。  
`5分間で100アクセス以上アクセスのあるIPを5分間ban` ルールができました。  
すると先ほど作成したWeb ACLに設定されています。

次にこの設定を入れるresourceを選びます。  
`Add AWS resources` ぽち。

![AWS WAFのWeb ACLに保護対象リソースを追加する画面](/_astro/06-16-4-1024x294-4434dfc5.DgexZHYA_ZvcynN.webp)

API GatewayかLBか選択できます。  
今回はLBを選択します。

![AWS WAFの保護対象としてApplication Load Balancerを選択する画面](/_astro/07-17-4-1024x489-8f71c3f6.CqGNZHd-_Z23Xn1e.webp)

以上で基本的な設定は完了です。おっしゃおっしゃ。

### AWS WAF検証

ということで、banされるまでおもむろにLBにcurlを投げてみます。

Plain textcontent\_copy

```
$ while true; do curl ${LB-DNS_NAME} -I; done
HTTP/1.1 200 OK
Date: Thu, 19 Dec 2019 09:28:32 GMT
Content-Type: text/html
Content-Length: 612
Connection: keep-alive

・・・

HTTP/1.1 403 Forbidden
Server: awselb/2.0
Date: Thu, 19 Dec 2019 08:09:07 GMT
Content-Type: text/html
Content-Length: 134
Connection: keep-alive

HTTP/1.1 403 Forbidden
Server: awselb/2.0
Date: Thu, 19 Dec 2019 08:09:08 GMT
Content-Type: text/html
Content-Length: 134
Connection: keep-alive
```

アクセスし続けること約30秒。  
403が返ってきました。  
Web ACLのoverviewでもちゃんとbanされたことを確認できます。

![AWS WAF検証の画面](/_astro/08-18-2-1024x210-5c5d9de6.C0o7ANNU_1801Xz.webp)

unbanは5分後なので、時々アクセスしながら待ってみます。

Plain textcontent\_copy

```
$ curl ${LB=DNS_NAME} -I
HTTP/1.1 200 OK
Date: Thu, 19 Dec 2019 09:15:10 GMT
Content-Type: text/html
Content-Length: 612
Connection: keep-alive
```

5分と言いながら実際にbanされてから約6分後にunbanでした。  
何回か検証しましたが、banになる時間、unbanになる時間は大体同じでした。

### GCP Cloud armorとAWS WAF ban-time比較

|  | banされるまでの時間 | unbanされるまでの時間 |
| --- | --- | --- |
| GCP Cloud armor | 約2~3min | 設定可能(約2〜3min〜) |
| AWS WAF | 約30sec | 約6min |

#### WAF早っ！

\### まとめ AWS WAFは \`反映時間が早く、インスタンスより手前でのアクセス計測なので\` 同一IPからの大量アクセスによる高負荷は最小限に抑えられそうですね。 かゆい所としては、 \`\`\` unbanされるまでの時間をまだ設定できない所、 overviewでは過去3時間分しか確認できない所、 より詳細なデータを収集するにはcloud watchやs3にログを吐かせる設定を追加しなければならない所 \`\`\` でしょうか。

GCP Cloud armorは `反映時間が遅く、インスタンス単位でのアクセス計測なので` 高負荷がやってくる事もしばしば。。  
unbanの反映にも最低2〜3分はかかります。  
ただfail2banと併用すればban-timeや、ルールの微調整も可能なので、柔軟性があると思いました。  
logもstackdriver loggingで調査し易く、過去のデータも閲覧しやすいです。

両方使ってみて、  
迅速な対応に向いているのは反映時間の早いAWS WAFでした。  
DDoS対策などに加えてホワイトリスト登録やbanの微調整など融通が効くのはGCP Cloud armorといった印象です。

もう少し詳細なWAFの設定などはまた次回紹介しようと思います。

## この記事を書いた人

[![](/_astro/tsunoda.CrA_Wh9V_Z1aOeCP.webp)](/authors/tsunoda/)

### [tsunoda](/authors/tsunoda/)

tsunodaのプロフィールと執筆記事をご覧いただけます。

[プロフィールと記事一覧](/authors/tsunoda/)