外国からのアクセスを遮断する。

未分類


外国のアクセスを遮断する方法として.htaccessで設定するのが一般的です。

ブロックする方法として

  • IPで日本のみを許可する。
  • IPで全ての外国IPを不可にする。

二択が考えられます。
その場合、全ての海外のサイトを網羅して不可は厳しいので、「IPで日本のみを許可する。」
をするが、よいと思います。日本のIPを網羅しているありがたいサイト(JPNIC)があるのでそちらのリストを使い許可の設定をしたいと思います。

その他の方法としてドメインによる制御で

  • 日本のJPドメインのみを許可する方法

も考えられますが、日本のドメインが全てjpとは限らないのでこの方法は厳しく思います。

実際の実装方法

実際の方法を考えましたが、こちら日本のリストが更新される可能性がある。
ので定期的なメンテナンスも必要な事があげられます。
(年1回程度メンテナンスか、マメにやるなら月1回)

まず実装方針として

  • 全てのアクセスを不可
  • 日本のIPを許可
  • 検索エンジンも許可(必要があれば)

を実装できればと思います。

こちらのdenyで記述するのはapatch 2.2の記述になります

<Directory "/var/www/html/">

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

### 初期設定として全てを拒否する 
order deny,allow
deny from all

### 検索エンジンからのアクセスを許可する。
allow from env=allowbot

### 日本国内のIPを許可する。
### リストはJPNICより参照
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
</Directory>

apatch2.4の記述は下記の通り

下記で
https://oopsoop.com/how-to-control-access-from-overseas-with-htaccess-apache24-compatible/
apatch 2.4用の.htaccessを生成してくれる神サイトがあるのでそちらを利用するがいいと思います。
一応記述例

# 海外IPアドレスからのアクセスを制限する設定
# データ更新日時: Sat Dec 10 2022 17:13:57 GMT+0900 (日本標準時)

# ウェブクローラに環境変数を設定
SetEnvIf User-Agent "msnbot" searchbot
SetEnvIf User-Agent "bingbot" searchbot
SetEnvIf User-Agent "Slurp" searchbot

<RequireAny>
# ウェブクローラのアクセスを許可
Require env searchbot
# Google関連のアクセスを許可
Require ip 8.8.4.0/24
Require ip 8.8.8.0/24
~
Require ip 209.85.128.0/17
Require ip 216.58.192.0/19
Require ip 216.73.80.0/20
Require ip 216.239.32.0/19
# 日本国内からのアクセスを許可
Require ip 1.0.16.0/20
Require ip 1.0.64.0/18
Require ip 1.1.64.0/18
~
Require ip 223.223.224.0/19
Require ip 223.252.64.0/19
Require ip 223.252.112.0/20
</RequireAny>
# ここまで

遮断ができたどうかのテスト

WebPagetestと言うツールを使って行います。下記よりアクセスして対象サイトを入力してアクセス状況を確認します。
https://www.webpagetest.org/