AWS WAFで国単位のアクセス制限をかけてみた

はやし
2022-11-21
2023-06-09

thum_aws

はじめに

Webシステムなどでは、国内のみのアクセスに制限したい、特定の国からのアクセスは制限したいといった要件があったりするかと思います。
国単位のアクセス制限は色んな方法で行うことができますが、AWS WAFを使えばとても簡単に実装することができるので、試してみました。

設定方法

AWSマネージメントコンソールのAWS WAFから、制限の設定を行いたいWeb ACLsから「Rules」タブを開き、「Add rules」の「Add my own rules and rule groups」を選択する。

awswaf01

awswaf02

「Rule Type」:Rule builder
「Name」 :任意
「Type」 :Regular rule

awswaf03

「If a request」 :matches the statement
「Inspect」 :Originates from a country in
「Country codes」 :任意(制限したい国コードを選択※複数選択可)
「Action」 : Block
※上記例は日本からのアクセスを遮断する場合の設定
※特定の国からのアクセスのみ許可したい場合は、Default web ACL actionをBlockにして、上記ActionをAllowに設定する

 

上記項目を入力して保存すると、タイミングにもよりますが、1分程度で設定が反映されます。(即時ではないので慌てないこと)

awswaf04

動作確認

該当AWS WAFを適用しているCloudFrontやALB配下にあるコンテンツに、制限した国のIPからアクセスしてみます。

■制限設定前

awswaf07

■制限設定後

awswaf06

適切に設定されている場合は、403が返されるようになります。

まとめ

CloudFrontを利用している場合は、地理的制限設定で同様のアクセス制限を設定することができます。CloudFrontで国単位のアクセス制限をかけてみた


ALB+EC2構成などの場合に、簡単に国単位のアクセス制限をしたい場合には、今回のようなAWS WAFを使った実装がお勧めです。


サーバ側(EC2など)でGeoIPやhtaccess、iptablesなどを組み合わせて実装することもできますが、
運用も大変になるため、コスト的な余裕があるのであれば導入を検討してみるのも良いと思います。