日本国内からのアクセスのみ許可する

WebサーバとFTPサーバをインターネットに公開しましたが、海外からの不正アクセスが多いので、
「日本のIPアドレスを許可、他は拒否」する設定を入れてみます。

数件ならIISの管理画面から設定すれば良いのですが、サブネット単位でも数千件あるのでconfigを直接編集します。
国内向けのサービス、公開が限定されるβサイトや、私的利用ではこの運用が適していると思います。

まず、
 https://ipv4.fetus.jp/jp
 に「日本に割り当てられたIPアドレス一覧」が提示してあるのでこれを利用します。
 apacheやiptablesはそのまま使えるひな形がありますが、IIS用は無いので「プレインテキスト」から取得して加工します。
 2016年05月時点で2675行あります。

(1)サブネットマスクの形式を変換
例) 1.0.16.0/20 → 1.0.16.0/255.255.240.0

(2)IISのconfig形式に変換
例) <add ipAddress="1.0.16.0" subnetMask="255.255.240.0" allowed="true" />
※ブログ表記制限のためタグ記号 ”<” および ”>” を全角で表記しています

プログラム組んでも良いのですが、変換パターンは32個で他は固定文なのでExcelでVLOOKUP使って(1)(2)同時に変換がお勧めです。
<サブネット変換パターン>
1 128.0.0.0
2 192.0.0.0
3 224.0.0.0
4 240.0.0.0
5 248.0.0.0
6 252.0.0.0
7 254.0.0.0
8 255.0.0.0
9 255.128.0.0
10 255.192.0.0
11 255.224.0.0
12 255.240.0.0
13 255.248.0.0
14 255.252.0.0
15 255.254.0.0
16 255.255.0.0
17 255.255.128.0
18 255.255.192.0
19 255.255.224.0
20 255.255.240.0
21 255.255.248.0
22 255.255.252.0
23 255.255.254.0
24 255.255.255.0
25 255.255.255.128
26 255.255.255.192
27 255.255.255.224
28 255.255.255.240
29 255.255.255.248
30 255.255.255.252
31 255.255.255.254
32 255.255.255.255


--先頭4行は↓こんな感じで
<ipSecurity allowUnlisted="false">
<add ipAddress="1.0.16.0" subnetMask="255.255.240.0" allowed="true" />
<add ipAddress="1.0.64.0" subnetMask="255.255.192.0" allowed="true" />
<add ipAddress="1.1.64.0" subnetMask="255.255.192.0" allowed="true" />
 ・
 ・

--ローカル側からのアクセスも許可したい場合は以下の3行も追加
<add ipAddress="10.0.0.0" subnetMask="255.0.0.0" allowed="true" />
<add ipAddress="172.16.0.0" subnetMask="255.240.0.0" allowed="true" />
<add ipAddress="192.168.0.0" subnetMask="255.255.0.0" allowed="true" />
--最後は↓で閉じます
</ipSecurity>
※ブログ表記制限のためタグ記号 ”<” および ”>” を全角で表記しています

これをconfigファイル
C:\Windows\System32\inetsrv\config\applicationHost.config
のサーバ/サイト/フォルダの各レベルにて設定可能なので必要なところに挿入します。
初めて設定する場合は、管理画面から何か1つ設定を入れると、configファイルにipSecurityセクションができるのでそれを置換すると簡単でしょう。
この設定は即時反映されます。

以上で、既定がアクセス不許可、日本国内に割り当てられたIPアドレスからのアクセスのみ許可、になりました。
実際には、申請レベルでのIPアドレスの割り当てと利用地域が一致している保証はないので完璧とはいきませんが「ほぼ」実現できていると思います。

拒否IPアドレスからアクセスがあった場合は、Webは応答コード 403.6 で、FTPは応答コード 534 で、アクセスログに記録されます。


応用すれば「特定の国や地域からのアクセスのみ拒否」もできます。

ちなみに、某国からのWebアクセスを拒否したい場合はもっと簡単な方法があります。
ページのどこかに「天安門事件」という単語を入れるだけで拒否してくれるそうです。便利です。

"日本国内からのアクセスのみ許可する" へのコメントを書く

お名前
メールアドレス
ホームページアドレス
コメント