LoginSignup
3
5

More than 3 years have passed since last update.

AWS ALBにWAFを設定して海外からのアクセスを遮断してみる

Posted at

AWS ALBにWAFを設定して海外からのアクセスを遮断してみる

AWS WAF (Web Application Firewall)

クラウド上で動作するファイヤーウォール
IPアドレスや、国情報、ヘッダーの内容をもとにアクセスを許可、遮断できる

Amazon CloudFrontや、Application Load Balancer (ALB)にデプロイして利用できる
WAF(Web アプリケーションファイアウォール)とは?| AWS

2016年から後発でALBでも使用できるようになったとこと

AWS WAFがALB(Application Load Balancer)で利用出来るようになりました | Developers.IO

目標

  • 日本国内からはEC2にアクセス可能
  • ALBにWAFを設定し海外からのアクセスを遮断する

アーキテクチャ - 構成図

上が目標物、下はCloudfrontを使用するパターン
基本はweb serverの前に置く、よりクライアントに近い側に設置するのがいいと思われる
basic_VPC_ALBWAF.png

basic_VPC_CFWAF.png

既存のALBにWAFを設定する

web ACL (Access Control List)の作成

AWS WAF

  • ホワイトリスト、ルールなしで作成(すべてのトラフィックを遮断)
  • ALBにアクセスできなくなることを確認

Create web ACL

Describe web ACL and associate it to AWS resources

Web ACL details
Name: 任意
CloudWatch metric name: (自動)
Resource type: 
CloudFront distributions
Regional resources (Application Load Balancer and API Gateway) #こっちを選択
Region: Asia Pasific (Tokyo)

#後で選択することも可能
Associated AWS resources - optional
Add AWS resources > Application Load Balancer
適当なALBを選択 > ADD

Next

Add rules and rule groups

Rules
#後で追加します

Default web ACL action for requests that don't match any rules
Default action: Block

Default action: Blockとすることでホワイトリスト化、後で追加するルールのみalllowにする

Next > Next > Create web ACL

この時点でブラウザからドメインにアクセスすると403エラーを返すことを確認する

Allow Ruleを追加

  • Allow Rule (country - JP) を追加
  • allow条件でリクエストが成功することを確認

作成したweb ACLを選択して

Rules > Add rules > Add my own rules and rule groups

Rule type
Rule type: Rule builder

Rule builder

Rule
Name: 任意
Type: Regular rule

If a request: matches the statement
#(AND, OR, NOT指定可)

Statement
Inspect: Originates from country in
# 他にIPやリクエストの内容を選択可
Country codes: Japan - Ja

Source IP address #こっちを選択
IP address in header

Then

Action
Action: Allow

Add rule

再びブラウザからドメインにアクセスすると今度はリクエストが成功する

IP address in headerオプションの使用に注意

ヘッダーのIPは書き換えられる場合があり、それによって意図せずアクセスコントロールを通過するリスクが有り、注意が必要

When a request comes through a CDN or other proxy network, the source IP address identifies the proxy and the original IP address is sent in a header. Use caution with the option, IP address in header, because headers can be handled inconsistently by proxies and they can be modified to bypass inspection.

検証

以下のサイトで海外からのアクセスをシュミレート可能

WebPageTest - Website Performance and Optimization Test

Location: Tokyo, Japan 以外で"403 Forbidden"を確認

3
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
5