IPアドレスによるアクセス制限

最終修正日 2008.8.2.  

IPおよびホスト名によるアクセス制限とはなにか

しばしば「外人をIPで弾く」と言われますね。
ここではこの「IPで弾く」のやり方を紹介します。

これは「どこから接続しているか」で相手を判断して、拒否する方法です。
この場合の「どこから」は「どの接続ポイントから」ということです。
自分の身元はどの程度向こうにわかるのか、という点については環境変数をチェックしてみてください。

ネットワークを介してコンピュータ同士が通信を行う上で、相互に決められた約束事の集合をプロトコルといいます。
IPというのは、UNIXの標準プロトコルです。たとえば、ドコモユーザーの場合、docomo.ne.jp がホスト名、210.153.84.7がIPアドレスとなります。
これによって相互に接続されたコンピュータネットワークをインターネットといいます。

CGIによるアクセス制限

 CGIが使えるサーバの場合は、それを使う手もあります。

 有限工房最後の良心

 掲示板や自動登録リンク集などのCGIにだけ、アクセス制限をかけたい人はこちらを。

 The RoomAccess Denial Ver.1.43

.htaccessを用いたアクセス制限について

可能なら「.htaccess」によるアクセス制限がベストです。まず、プロバイダのサービス内容を確認して、「.htaccessによるアクセス制限が可能か」を調べましょう。が、ジオシティーズなど、無料ウェブスペースの場合はたいてい不可能ですね。

ウェブサイトというのは「コンピューターに蓄積されたデータの集積」で、他のコンピューターからの「送信要求」に答えてデータを送ります。

送信を要求する際に、こちらの情報も相手に送られます。
実はコンピューター同士は「私はこういうところから、こういうものを使って接続している者です」「私はどこどこにあるこういうコンピュータです」と名乗り合っているんです。
そして、情報を送信しているコンピューターに直接「ここから来た人間にはファイルを送信しないように」と命令する方法が、.htaccessによるアクセス制限です。

ちなみに、サーバ用のコンピュータに搭載されるコンピュータの多くが、UNIXというOSを使用し、アパッチというフリーソフトウェアで動作します。.htaccessはUNIX用です。

.htaccessについて、より詳しくはW3G - World Wide Web Guide.htaccessをごらんください。

.htaccessでjpドメイン以外を弾く

これ、実は簡単です。
.htaccessファイルを作成するのに必要なツールは、Winで「メモ帳」、Macで「シンプルテキスト」
最初から入ってるのでなんの準備も必要ありません。
で、「メモ帳」で「新規作成」を選び、「.htaccess」と名付けて下さい。ファイルに「.htaccess」と名付けることが、不可能なパソコンであれば、「htaccess.txt」と名付け、サーバに転送した後で、名称を変更して下さい。


jpドメイン以外のアクセスを弾く場合は、これをその白紙ファイルにコピー、ペーストして下さい。

order deny,allow 
deny from all   
allow from .jp

意味解説

order 実行 allow 許可 deny 制限

order deny,allow 制限、許可の順で実行
deny from all  全てのホストからのアクセスを制限
allow from .jp  jpドメインのホストからのアクセスを許可

もちろん、前後に「<body><html>」等のHTMLタグを書く必要もありません。
こういうファイルは「設定ファイル」と呼ばれます。
それをアクセス制限したいディレクトリにテキストモードで転送し、出来上がりです。

.htaccess ファイルを簡単作成「.htaccess Editor」というサイトもあります。

ちなみにこのサイトのあるさくらでは可能です。もし、あなたのプロバイダがjpで終わるIPアドレスなら、このページにはアクセスできないはずです。

ホスト名によるアクセス制限の例

.htaccessで特定のドメインを弾く

 逆にカントリーコードで識別し、特定の国からのアクセスを弾く事もできます。この例では、カナダとフランスからのアクセスを制限しています。

order allow,deny
allow from all
deny from .ca
deny from .fr

便利コム!! 「世界のドメイン情報」(国名とドメイン名の対照表はこちら)

国名に他意はありません。こうやって、deny from国名のリストを増やしていけば、海外からのアクセスをかなり制限できます。ただし、インターネットの発祥地、アメリカのプロバイダは多くの場合、.usではなく、netやcomで終わっていますので、アメリカからのホスト名でのアクセスを制限したい場合、アクセス解析をして、見つけた海外のプロバイダの名を片端から制限リストに加えていくことになります。deny from proxy.aol.com とか。たぶん、真面目にやったら何十何百という長大なリストになるでしょうね。ですから、アメリカからのアクセスを弾く場合にこの手段を用いるのは、あまりおすすめしません。

.htaccessとCGIを用いたホスト名でのアクセス制限

Access_v35というプログラムで、特定のホストのアクセスが制限できます。

.htaccessで特定のIPを弾く

アパッチ(標準的なサーバーソフトウェア)の初期設定では、サーバーはホスト名を名乗りません。韓国等ではIPによるアクセス制限だけしか受け付けないサーバーが多いそうです(つまりdeny from .krで弾けない接続者が多い)。なお、ホスト名での制限よりIPでの制限の方が、サーバーに負担をかけません。

まずアクセス制限したい相手のIPを突き止めます。掲示板やアクセス解析などに、ハッキリとIPが残っているならばそれを利用しましょう。相手がどこの国から接続しているかという事を知りたい場合は、あなたが得た、220.163.67.152等の情報を、whois してみて下さい。例えば、下の方に country: CN と書いてあった場合は中国からの訪問者です。ちなみに.htaccessは、こんな感じのファイルになります。

order allow,deny
allow from all
deny from 61.32.0.0/16
deny from 61.39.0.0/16

ですが、国別の場合は手書きではちょっとどうにもならないので、ソフトを使うやり方を説明します。国別にIPによるアクセス制限をしたい場合は、ガードプロクシ というソフトがあります。HPを匿名プロキシ(PROXY)経由と、特定の国からのアクセスを.htaccessでガードします。

また、韓国(.kr)・中国(.cn)・台湾(.tw)・香港(.hk)等,アジア地域の国別のIPリストを公開しているkrfilter - deny accesses from .kr のようなページもあります。ここの0.0.0.0/0 形式のリストにソフトや手書きで、deny from を書き加えて下さい。

IPアドレスで日本国外からのアクセスを制限する.htaccessを作成するPHPというものもあります。

192.244.0.0 - 192.244.255.255のようなIPを、192.244.0.0/16のような形式に変換する際は、ネットマスク変換スクリプトをご利用下さい。

 

 弾いた相手を特定のファイルに跳ばす

初期設定では先述のホスト名によるアクセス制限の例のように、403 Forbiddenと表示されます。が、以下のように跳ばし先のファイルを指定することで、特定の人用のページを作ることもできます(英語版サイトに強制的に跳ばすこともできます。)この文字列は、アクセス制限をするための命令を書いているのと同じ.htaccessファイルに書いて下さい。

sakura.ne.jp/~aaa/a/index.htmlに置いた.htaccessファイルではじいた閲覧者(例 abc.comから接続)をsakura.ne.jp/~aaa/b/403.htmlに飛ばす場合のaディレクトリに置く.htaccessの書き方です。bディレクトリには.htaccessファイルを置く必要はありません。使う場合は赤文字部分を書き替えて下さい。

order allow,deny
allow from all
deny from abc.com
ErrorDocument 403 /~aaa/b/403.html

 ちなみに、こう書くと403メッセージのカスタマイズのみ出来ます。

ErrorDocument 403 /~aaa/b/403.html

 なおこのサイトでは、以下のように書いて404メッセージを独自のものにカスタマイズしていました。見ます?

ErrorDocument 404 /~akikan/404.html

なお、跳ばし先の403ファイルは、アクセス制限されているディレクトリ以下には置かないで下さい。アクセス制限されているので、通常の403エラーが出て表示されません。なので、sakura.ne.jp/~aaa/index.htmlにアクセス制限をかける場合はこの方法は使えません。また飛ばし先をhttp://www.yahoo.co.jp/等と外部のサーバーに指定することもできます。ジオシティーズあたりに外国人用サイトを作って、そこへ飛ばすことも可能です。いっそ403ファイルに「閉鎖しました」と英語で書くのも手ですが、嘘はおすすめしません。

 実例

http://www.yuzuriha.sakura.ne.jp/~akikan/kaigai/403/

JPドメインの人が上記のURLにアクセスした場合、実際には以下のURLに跳ばされます。jp以外のプロキシを使って、再度試してみて下さい。

http://www.yuzuriha.sakura.ne.jp/~akikan/kaigai/index2.html

アクセス制限されたことに相手が気付かないこともあり得るということで、利用価値の高い方法です。なお、403エラーの際に「404エラー」と書いたファイルを表示させてアクセスを拒否したい相手にサイトが移転・閉鎖したように見せかけることもできます。もっとも通常のブラウザではわからなくとも、巡回ソフトなど特殊なソフトを使った場合は404と403の違いが信号でわかります。

参考サイト JAPACHE HTTP Server Project

IPやホスト名によるアクセス制限突破法

実はこれも簡単です。
プロキシを使いましょう。
プロクシ、正確には「proxy server」は代理サーバーという意味です。
間に代理を立てて自分が「どこから」来たかをごまかすことができます。(これが本来の使い方ではありませんが)
例えば、jp以外を弾く設定のページは、最後がjpのプロキシを使えば、外人も閲覧可能になります。
そこは踏まえておいてください。

プロキシについて詳しくは、このあたりを参考にして下さい。

 プロキシ - Wikipedia

プロキシを使いたい人はこちらをどうぞ。
 Cyber Syndrome

串の性能チェックはここで。
 診断くん


わからない用語があった場合は、IT用語辞典 e-Wordsをどうぞ。


  
< prev back next >