【.htaccess】IPアドレス・ドメインによるアクセス制御

サーバー

「部外者に管理画面へアクセスされたくない」
「ブルートフォースアタックが心配材料だ・・・」
「セキュリティをできる限りで高めておきたい」

このような場合は、この記事が役に立ちます。
この記事では、.htaccessを用いたIPアドレス・ドメインによるアクセス制御を解説しています。

本記事の内容

  • .htaccessを用いたアクセス制御
  • IPアドレス・ドメインの許可・拒否を行う方法

それでは、上記に沿って解説していきます。

.htaccessを用いたアクセス制御

.htaccessを用いたアクセス制御には、次の2つの方法が存在します。

  • Basic認証(ベーシック認証)
  • IPアドレス・ドメインの許可・拒否

ここで質問です。
そもそも、なぜアクセス制御を行いたいのでしょうか?

「部外者の人間に作成中のページにアクセスされたくない」
「外部からの攻撃を防ぎたい」

一般的には、上記のような回答になるでしょう。
その場合、パスワードで守るという発想が存在します。

これが、Basic認証になります。
しかし、このBasic認証には弱点があります。

Basic認証は、総当たり攻撃(ブルートフォースアタック)に弱いです。
hydraやncrackと言ったツールでクラックできてしまいます。

よって、Basic認証のセキュリティが高いとは言えません。
ブルートフォースアタックされれば、アウトです。

それでは、パスワードで守ることは諦めましょう。
「アクセスさせないことで守る」、これがもう一つの方法です。

IPもしくはドメインをもとに、アクセスの可否を制御します。
この方法を採用すれば、ブルートフォースアタックの脅威を下げることができます。

もちろん、100%安全とは言い切れません。
しかし、Basic認証よりは数段安心できます。

以上、.htaccessを用いたアクセス制御について説明しました。
次は、実際にIPアドレス・ドメインで許可・拒否を行っていきます。

IPアドレス・ドメインの許可・拒否を行う方法

サイト全体でもディレクトリ単位でも制御が可能です。
まずは、守りたい場所に.htaccessを配置します。

内容は、非常にシンプルです。
コピペではなく、理解して使いましょう。

.htaccessでは、次の二つの方式で制御ができます。

  • ホワイトリスト方式
  • ブラックリスト方式

それぞれの方式を確認していきます。

ホワイトリスト方式

ホワイトリスト方式では、次の内容を.htaccessに記述します。

order deny,allow 
deny from all 
allow from 123.123.123.123

orderは、処理の順番です。
処理とは、次の二つとなります。

  • 許可(allow)
  • 拒否(deny)

上記の記述では、拒否(deny)からの許可(allow)という順番です。
では、その処理の内容を確認します。

deny from all

all(すべて)からのアクセスを拒否するという内容です。
この時点では、誰もアクセスできません。

そこに例外を設けましょうとなります。
それが、次の記述です。

allow from 123.123.123.123

IPアドレス123.123.123.123からのアクセスは、許可するという内容になります。
ここには、IPアドレス以外にもドメイン(ホスト)を設定できます。

allow from example.com

上記のドメインにあるホストからであれば、アクセスが許可されるということです。

ブラックリスト方式

ブラックリスト方式では、次の内容を.htaccessに記述します。

order allow,deny
allow from all
deny from 123.123.123.123

orderの記述が、ホワイトリスト方式とは逆です。
許可してからの拒否という順番になります。

「アクセスを禁止する相手が判明していること」が、条件になります。
判明したところで、固定IPではなければ意味がありません。
もしくは、ドメインですね。

そのため、あまり利用するケースはないかもしれません。
よって、ホワイトリスト形式を中心に覚えていけばよいでしょう。

以上、IPアドレス・ドメインの許可・拒否を行う方法の説明でした。

タイトルとURLをコピーしました