AWSでアクセス制限をかけたかったです。
- 日本国内アクセスのみを許可
- それ以外の海外アクセスを遮断
その方法はググると色々出てきます。
そして色々試してみた結果・・・
ベストだと思う方法がついに見つかりました。
その方法について記録に残しておきます。
このページの目次
.htaccessで海外IPブロックを試したが…
初めに試したのが次のやり方
- いわゆるホワイトリスト方式
- 日本国内で使われるIPを全て取得
- htaccessに1つ1つ追加していく
日本国内で使われるIPの範囲をしらみつぶしに許可していき、それ以外は弾くことで海外アクセス制限をかける方法です。(ただし検索エンジンなどは許可する)
ググると .htaccess による海外アクセス遮断の方法が出てくるし、逆にそれ以外の方法がなかなかヒットしません・・・でもこの対策を取っているサイトは多いみたいです。
実際にこういう内容を追加してみました。
▼ htaccessに追加した内容
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
# 許可する検索エンジンをまとめる SetEnvIf USer-Agent “Googlebot” okbot SetEnvIf USer-Agent “msnbot” okbot SetEnvIf USer-Agent “bingbot” okbot # ひとまず全てを拒否 order deny,allow deny from all # 検索エンジンを許可 allow from env=okbot # 日本国内のIPを列挙していく... allow from 1.0.16.0/20 allow from 1.0.64.0/18 allow from 1.1.64.0/18 allow from 1.5.0.0/16 allow from 1.21.0.0/16 allow from 1.33.0.0/16 allow from 1.66.0.0/15 allow from 1.72.0.0/13 allow from 1.112.0.0/14 allow from 14.0.8.0/22 allow from 14.1.4.0/22 # 5000行ほど続く(以下略... |
日本IPは以下サイトから取得可能です。
▼ 日本国外からのアクセスを制限する.htaccess
URL : http://www.cgis.biz/tools/access/
ここからIPアドレスを許可するhtaccessをダウンロードできるので、既存の .htaccess に追加してあげればOKです。あと検索エンジンも許可する設定にしました。
ところが僕の環境では上手く動きません。なぜか自分自身もブロックされました...そもそもの内容が不正確なのか、あるいは僕の環境(WiFiなど)が悪いのかもしれません。
とりあえず開発者自身がアクセス制限をかけられたら どうしようもないです。そこで仕方なく別の方法を模索することになりました。
Route53で位置情報からルーティングポリシーを設定
AWSではDNS管理にRoute53を使ってるはずです。
そこでルーティングポリシー設定を試しました。
- Aレコードを洗濯して編集
- ルーティングポリシーまで移動
- 位置情報として日本を設定
具体的には次のような手順です。
1.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で海外アクセス制限の方法でした。
問題点があればコメントからご指摘ください。ではまた