Edited at

海外からのアクセス(IP)を拒否するhtaccessの設定


海外からのアクセス(IP)を拒否するhtaccessの設定

不要なアクセスを受けるとサーバーのパフォーマンスが落ちたりします。

海外のIPから無作為にアクセスを受けることも珍しくありません。

不正ログインやアクセス超過を防ぐための設定になります。

このため.htaccessに設定をして、海外からはサイトなどにアクセスできないような設定をします。


.htaccess

#########  海外IPを許可しないための設定  #########

### 検索エンジンをまとめて許可するためにenv化する (Must)
SetEnvIf User-Agent "Googlebot" allowbot
SetEnvIf User-Agent "msnbot" allowbot
SetEnvIf User-Agent "bingbot" allowbot
SetEnvIf User-Agent "Slurp" allowbot

### いったん全てを拒否する (Must)
order deny,allow
deny from all

### 検索エンジンからのアクセスを許可 (Must)
allow from env=allowbot

### SearchConsoleのプロパティが確認出来るためにの対策 (使っていなければ不要)
### https://support.google.com/webmasters/answer/80553?hl=ja
allow from googlebot.com
allow from google.com

### vagrantなどのアクセス許可 (使っていなければ不要)
### vagrantなど使っていれば許可にしないと開発環境が使えないため
allow from 192.168.xx.xx/24

### 日本国内のIPを許可 (Must)
### http://www.cgis.biz/tools/access/
### 2018.12.1時点 割り当て個数 203,957,760
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 223.223.164.0/22
allow from 223.223.208.0/21
allow from 223.223.224.0/19
allow from 223.252.64.0/19
allow from 223.252.112.0/20



説明

流れとしては、まず全てのアクセスを拒否します。

次に検索エンジンからのアクセスを許可します。

これをしないと検索エンジンがクロールできないため、SEOで上位にくるどころか検索結果に出るかどうかもあやしいです。

これは必要であればですが、googleのSearchConsoleやアナリティクスを使っている場合も指定のものを許可して下さい。

また開発環境で同じ.htaccessを使用している場合は、そのIPも記載ください。

最後に日本からのアクセスを許可します。

最初に全てのアクセスを拒否しているため、日本のIPの全て記載する必要があります。

下記のサイトが、日本国外(海外/外国)からのアクセスを制限する(禁止する)ために

日本に割り当てられているIPアドレスをAPNICより取得してリスト化してくれていますのでこちらからコピると良いと思います。

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


サーバーへのアクセスの確認方法

参考までに。

サーバーにsshログイン後、下記などのパスを探して実行してみて下さい。(サーバーによって多少異なります)

cat /var/log/httpd/access_log