Apache「.htaccess」を用いた日本国内からのみアクセス可能なサーバの構築
Apacheの「.htaccess」を使用し日本国内からのみアクセス可能なサーバの構築方法を記述する。
目次
Apache「.htaccess」を用いた日本国内からのみアクセス可能なサーバの構築
1.概要
Apacheの「.htaccess」を使用し、接続元IPアドレスが日本国内のIPアドレスからのみアクセス可能なサーバを構築する。
2.構成図
日本国内ユーザはアクセス可能だが、日本国内ユーザでない場合はアクセスできず403Forbidden画面が表示される。
3.前提
・Apacheがインストールされていること
・AJPによりApacheからTomcatへProxyしていること
4.Apache「httpd.conf」設定
①Apache「httpd.conf」にバーチャルホストを定義する
『order allow,deny(許可し、その後に不許可とする設定)』とする。
②「日本国内のみアクセス許可」と定義する
APNIC-IPで管理している日本に割り当てられているグローバルIPアドレスリストの最新版を入手し、「allow from」で許可設定する。
※日本国内からのアクセスで、個別拒否設定したい場合
日本に割り当てられているグローバルIPアドレスのうち個別に拒否したい場合は、「deny from 」により個別に不許可設定する。
<VirtualHost *:80>
ServerName www.XXXXX.com
<Location /ABC>
AllowOverride All
order allow,deny
### APNIC-IP
### http://ftp.apnic.net/stats/apnic/2022/
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
・
・
・
### 個別拒否IP
deny from 111.111.111.111/32
ProxyPass ajp://localhost:8009/ABC
</Location>
</VirtualHost>
5.Apache「.htaccess」設定
ApacheのDocumentRootディレクトリの配下に「.htaccess」を配置する。
### 検索エンジンをまとめて許可するためにenv化
SetEnvIf User-Agent "Googlebot" allowbot
SetEnvIf User-Agent "msnbot" allowbot
SetEnvIf User-Agent "bingbot" allowbot
SetEnvIf User-Agent "Slurp" allowbot
### 許可→拒否の順序での設定
order allow,deny
### 検索エンジンからのアクセスを許可
allow from env=allowbot
### SearchConsoleのプロパティが確認出来るためにの対策
### https://support.google.com/webmasters/answer/80553?hl=ja
allow from googlebot.com
allow from google.com
### APNIC-IPアドレス
### http://ftp.apnic.net/stats/apnic/2022/
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
・
・
・
### 個別拒否IP
deny from 111.111.111.111/32
6.動作確認
海外IPからのアクセス(実際の不正アクセス)が403で返却されていることが確認できる。
※国内IPからのアクセスは正常
[root@XXXXXX logs]# cat access_log
- XXX.128.25.106 - - [01/Mar/2022:21:16:30 +0900] "GET /api/support/tickets HTTP/1.1" 403 164 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36"
- XXX.71.216.121 - - [01/Mar/2022:21:17:03 +0900] "GET /api/v4/spot/tickers?currency_pair=BTC_USDT HTTP/1.1" 403 164 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36"