CONTACT
お問い合わせ

Apache「.htaccess」を用いた日本国内からのみアクセス可能なサーバの構築

Apacheの「.htaccess」を使用し日本国内からのみアクセス可能なサーバの構築方法を記述する。

目次

Apache「.htaccess」を用いた日本国内からのみアクセス可能なサーバの構築

  1. 概要
  2. 構成図
  3. 前提
  4. Apache「httpd.conf」設定
  5. Apache「.htaccess」設定
  6. 動作確認

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"