AN HTTPDにアクセス制限をかけよう

ここではHTTPサーバーであるAN HTTPDでアクセス制限をかけます。
用途としては、他の人間にこのページ、もしくはこのディレクトリ内は見せたくない!という時に使用します。
では前に解説したユーザー認証との違いはなんでしょうか?

ユーザー認証はユーザー名とパスワードを知る人間のみにアクセスを許可します。
しかしパスワードの盗聴、漏洩があり得ます。

アクセス制限とは、IPアドレスを元にアクセスの許可あるいは拒否をしますので、パスワードを知らなくてもアクセスすることが可能になります。
ただしインターネット側からのアクセスを考えた場合、IPアドレスいくらでも変化しますので、思うような制限をかけるのは難しいです。

以上のことを考えると、IPアドレスが変化しない場合にしか有効でない=LAN内やループバックアドレスしか実質的には使えないことになります。
phpMyAdminをはじめとした、自分だけがブラウザから何かを管理するような場合に効果的と言えるでしょう。

では早速説明に入ります。
まずはAN HTTPDのオプション画面を開きます。

AN HTTPDでアクセス制限

オプションの中からアクセス制御タブを選択します。
一番上の項目、アクセス制御にチェックを入れてください。
追加をクリックして実際に制御するディレクトリを指定していきます。


AN HTTPDでアクセス制限

パスには制限したいディレクトリをルートディレクトリから見たパス(相対パス)を入力します。
ここでは/~kokoですので、実質のURLとしては
http://mizushima.ne.jp/~koko
になりますね。

次に許可IPのところに許可したいIPアドレスを指定します。
192.168.1.1のようにひとつずつIPアドレスをしても構いませんし、192.168.1.10-192.168.1.20のように範囲指定も可能です。
特別拒否IPアドレスを入力する必要はありません。許可アドレス以外は全て拒否されます。

逆に拒否IPアドレスだけを書き込めば、拒否リストに乗っていないIPアドレスからのアクセスはすべて許可されます。

IPアドレスの書き方ですが、192.168.1.1のようにひとつずつIPアドレスをしても構いません。
192.168.1.10-192.168.1.20のように範囲指定も可能です。当然意味としては192.168.1.10&192.168.1.11&192.168.1.13・・・192.168.1.20ですね。
またワイルドカードを使うことも可能です。
例の192.168.2.*ならば、192.168.2.から始まるアドレス全てが拒否されることになります。

OKをクリックします。


AN HTTPDでアクセス制限

制限したいパス、許可なり拒否なりのIPアドレスを確認し、OKをクリックします。


AN HTTPDでアクセス制限

いつも通り、設定を有効にするにはAN HTTPDの再起動です。
お疲れ様でした・・・ここから先はちょっと裏技?です。

外からのアクセスに対して、アクセス制限をかけてみましょう。


AN HTTPDでアクセス制限

一般タブからリモートホストの取得を常時にします。
常時にすることでAN HTTPDのレスポンスは若干ながら犠牲になります。


AN HTTPDでアクセス制限

あとはなんてことありません。許可IPアドレスに取得したドメインを書き込んでやればいいだけです。

ただしいくつか考えてください。
当然サーバーに利用しているドメインを外から使ってしまったら、他の人がサーバーにアクセスできなくなってしまいます。
よって外で自分がアクセスする専用のドメインを取得する必要があります。

またIPアドレスは変化しますからDDNSの更新をしていない時に、他人が偶然アクセス制限をすり抜ける可能性があります。
(可能性としてはおそろしく低いと思いますが)

ホストはいつでもどこでも完全に取得できる保証はありません。
許可IPに書いたつもりでもアクセスできない可能性もあるわけです。
もっと怖いのは拒否IPで書いたつもりが、拒否できずにアクセスできてしまうことです。

以上です。お疲れ様でした。