Fastlyで特定の国からのアクセスをブロック


#1

Fastlyではエッジサーバー上で様々な情報にもとづいて処理を行うことが出来ますが、そのひとつとしてよく使われるものにアクセス元の国によるアクセス制限があります。

この記事では特定の国からのアクセスをFastlyサーバー上でブロックする手順を紹介します。なお、この設定はカスタムVCL機能を利用せずにGUIから設定が可能です。

特に記載がない限り本記事の記載内容はデフォルト設定での挙動となります。
Fastlyの正式なサポート情報は以下のサイトでご確認下さい。
https://docs.fastly.com/

設定の手順としてはまず503や404などを返却するレスポンス設定を作成し、その設定に条件としてアクセスを拒否する国を設定します。

アクセス拒否レスポンスの作成

  1. FastlyのWebポータルにログインしConfigureをクリックします。
  2. Serviceメニューから設定を行いたいServiceを選択して下さい。
  3. Edit Configurationボタンをクリックし、Clone activateをクリックして下さい。Serviceの新しいversionが表示されます。
  4. Contentタブをクリックして下さい。
  5. Create Responseをクリックして下さい。以下の画面が表示されます。
  6. Statusからアクセスを拒否した際に返却したいレスポンスコードを選択して下さい。503 Service Unavailableや404 Page Not Foundを利用するのが一般的です。
  7. 適当な名前をDescriptionに記入してCreateをクリックして下さい。

なお、ResponseにHTMLコードを記入すると、このレスポンスを返却する際に記入したHTMLコードをレスポンスとして返却する事が出来ます。簡単なカスタムエラーページを返却したい場合などに利用することが出来ます。

アクセス拒否条件の作成と割当

続いて作成したアクセス拒否レスポンスにアクセスを拒否する条件を割り当てます。

  1. 作成したアクセス拒否設定の横に表示されているAttach a condtionをクリックして下さい。
  2. Create a new conditionウインドウが表示されるので、以下のように入力して下さい。
  • Type: Request
  • Name: 条件を識別するための適当な名前
  • Apply if…: ここでアクセスを拒否する国を指定します。

クライアントのアクセス元の国はgeoip.country_code変数で取得できますので、たとえば日本からのアクセスを条件としたい場合はApply ifに
geoip.country_code == "JP"
と指定して下さい。

複数の国を指定したい場合はgeoip.country_code ~ "(JP|US)"と指定することが可能です。
3. 条件を作成したらSaveしてからコンフィグをActivateして下さい。

以上で設定は完了です。新しい設定は通常数秒程度で反映されます。

実際にアクセスを行って期待通りに動作しているかを確認して下さい。

なお、geoip.country_codeの詳細や国以外の地域情報変数については
https://docs.fastly.com/guides/vcl/geoip-related-vcl-features
を参照下さい。