AWSで海外からのアクセス制限をかける手っ取り早い方法/注意点

AWSでアクセス制限をかけたかったです。

  • 日本国内アクセスのみを許可
  • それ以外の海外アクセスを遮断

その方法はググると色々出てきます。

そして色々試してみた結果・・・
ベストだと思う方法がついに見つかりました。

その方法について記録に残しておきます。

.htaccessで海外IPブロックを試したが…

初めに試したのが次のやり方

  • いわゆるホワイトリスト方式
  • 日本国内で使われるIPを全て取得
  • htaccessに1つ1つ追加していく

日本国内で使われるIPの範囲をしらみつぶしに許可していき、それ以外は弾くことで海外アクセス制限をかける方法です。(ただし検索エンジンなどは許可する)

ググると .htaccess による海外アクセス遮断の方法が出てくるし、逆にそれ以外の方法がなかなかヒットしません・・・でもこの対策を取っているサイトは多いみたいです。

 

実際にこういう内容を追加してみました。

▼ htaccessに追加した内容

日本IPは以下サイトから取得可能です。

▼ 日本国外からのアクセスを制限する.htaccess

URL : http://www.cgis.biz/tools/access/

ここからIPアドレスを許可するhtaccessをダウンロードできるので、既存の .htaccess に追加してあげればOKです。あと検索エンジンも許可する設定にしました。

ところが僕の環境では上手く動きません。なぜか自分自身もブロックされました...そもそもの内容が不正確なのか、あるいは僕の環境(WiFiなど)が悪いのかもしれません。

とりあえず開発者自身がアクセス制限をかけられたら どうしようもないです。そこで仕方なく別の方法を模索することになりました。

Route53で位置情報からルーティングポリシーを設定

AWSではDNS管理にRoute53を使ってるはずです。

そこでルーティングポリシー設定を試しました。

  • Aレコードを洗濯して編集
  • ルーティングポリシーまで移動
  • 位置情報として日本を設定

具体的には次のような手順です。

 

1.Aレコードを選択して編集

海外アクセス制限したいドメインのAレコードを選択して編集

2.位置情報のルーティングポリシー追加

こんな感じで位置情報のルーティングポリシー追加

この画像のように次を選択・入力すればOK

  • ルーティングポリシー
    初期設定では「シンプルルーティング」になっているはず。アクセス者の位置でアクセス制限をかけるためには「位置情報」を選択する
  • 場所
    アクセス制限をかけない位置を選択する。ここれは「日本」を選択したが、より広範囲に「アジア」等の大陸も指定可能。ただし複数国は設定できない模様
  • レコードID
    分かりやすければ任意の名前でなんでもOK。ここでは適当に「allow-from-japan」という名前でレコードID名を入力した

そしたら保存を押せば適用完了です。

実際に僕の環境からは問題なくアクセスできるし、VPNとかでアメリカ・その他海外に切替したら「ERR_NAME_NOT_RESOLVED」でアクセス制限がかかるようになりました。

位置情報ルーティングポリシーは複数追加可能

あとから分かったことですが・・・

この位置情報ポリシーは複数追加可能です。

▼ アメリカ・日本だけを許可する場合

位置情報ルーティングポリシーは複数追加できる。アメリカ・日本だけをアクセス許可する設定例

このように位置情報のルーティングポリシーを持つAレコードを必要なだけ作ればOK。これで「日本・アメリカだけアクセス許可する、それ以外はアクセス制限」みたいなことができます。

ちなみにアメリカだけはアクセス遮断しない方がいい

もし海外アクセスを制限するとしても・・・

アメリカからのアクセスは許可した方がいいです。

その理由は主にSEO的な理由があるから

▼ この記事で詳しく解説されている

▼ この記事の一部引用

基本的に、Googlebot は米国の IP アドレスからアクセスしてきます。
米国からのユーザーをブロックしたとすると、Googlebot のアクセスもブロックしたことになります。
したがって、Googlebot はそのサイトをクロールできません。
つまり、検索結果に表示されることはないでしょう。米国からのユーザーをブロックする一方で Googlebot のアクセスだけは許可した場合、これはクローキングのガイドライン違反になります。

Googlebotは米国IPアドレスでアクセスしてきます。

海外アクセス遮断して「これでスパムとか攻撃対策ばっちりだぜ!」と思っていたら、グーグル検索にヒットしなくなってしまうという訳ですね。

だからアメリカからのアクセスは許可しておいた方がベストです。ベストというよりマストかもしれません。(SEOが必要ないサイトなら日本だけでも問題なし)

以上、AWSで海外アクセス制限の方法でした。

問題点があればコメントからご指摘ください。ではまた