この記事には広告を含む場合があります。
記事内で紹介する商品を購入することで、当サイトに売り上げの一部が還元されることがあります。
目次
.htaccessによるアクセス制限
サイトを運用していると特定のフォルダやファイルへのアクセスを制限したいときがあります。Apache のモジュール「mod_access_compat」には保有する全てのファイルを対象にして、.htaccess によるアクセスの制限を設定する機能が備わっています。
本記事では、.htaccess 内でも特にアクセス制限を設定する方法を確認していきます。
.htaccess の基本的な記述方法
まずは次の記述をご覧ください。
1 2 3 |
Order allow,deny Allow from all Deny from 192.168.100.0/24 |
.htaccess にてアクセス制限の基本的な記述は上記のような内容となります。
Order:アクセス制限を行う順番
アクセス制限を設定するときは、許可と拒否を組み合わせながら自分が望む制限を行います。その中で許可と拒否の順番を設定するための命令が「Order」です。
1 2 |
Order allow,deny #許可してから拒否 Order deny,allow #拒否してから許可 |
order 命令は上記の2種類しかありません。許可してから拒否する「Order allow,deny」を設定したときは、以降に allow を書いて、そのあとに deny の設定を記述します。反対に拒否してから許可する「Order deny,allow」を設定したときは、以降に deny を書いて、そのあとに allow の設定を記述します。
※正確には他にも「Order Mutual-failure」がありますが、「Order allow,deny」と全く同じ効果のため非推奨となっているため今回は説明を省きます。
各order設定したときの結果
マッチ/設定 | allow,deny設定時 | deny,allow設定時 |
---|---|---|
allowのみマッチ | 許可 | 許可 |
denyのみマッチ | 拒否 | 拒否 |
どちらにもマッチしない | 拒否(※1) | 許可(※1) |
両方ともマッチする | 許可(※2) | 拒否(※2) |
(※1)2番目に記述した命令がデフォルトになる
(※2)最後にマッチしたほうが有効になる
Allow / Deny:アクセスできるユーザーの制御
許可を設定するときに指定するのが「Allow」、拒否を設定するときに指定するのが「Deny」のディレクティブです。
1 2 |
Allow from [対象] Deny from [対象] |
設定できるものは次のようなものです。
all
「all」を設定したときは全ての接続が対象となります。
1 2 |
Allow from all #全てのアクセスを許可します。 Deny from all #全てのアクセスを拒否します。 |
ドメイン名(ホスト名)
ドメイン名(ホスト名)を設定したときは、記述したホスト名からの接続が対象となります。アクセス元のIPからホスト名を調べて、対象のホスト名のときは後方一致で適用されます。
1 2 |
Allow from example.com #[example.com]からのアクセスを許可します。 Deny from example.com #[example.com]からのアクセスを拒否します。 |
IPアドレス
IPアドレスを設定したときは、記述したIPアドレスをもった接続が対象となります。
1 2 |
Allow from 192.168.1.10 #[192.168.1.10]からのアクセスを許可します。 Deny from 192.168.1.10 #[192.168.1.10]からのアクセスを拒否します。 |
IPアドレスのときはサブネットマスクを設定することもできます。
1 2 |
Allow from 192.168.1.0/24 #[192.168.1.0/24]からのアクセスを許可します。 Deny from 192.168.1.0/24 #[192.168.1.0/24]からのアクセスを拒否します。 |
IPアドレスによる限定公開
.htaccess のアクセス制限を行うときに需要が多いのが、開発中のサイトやテスト環境は関係者だけアクセスできるようにしたい!という需要ではないでしょうか。
そこで需要が多い IPアドレスによる限定公開のサンプルを載せておきます。
1 2 3 |
Order deny,allow Deny from all Allow from [IPアドレス] |
もしIPアドレスを複数設定したい時は、「Allow from [IPアドレス]」を次の行に追記すれば接続先は簡単に追加できます。
さいごに
アクセス制限としては有名な Order や Allow、Deny は、Apache2.4.8から非推奨となりました。
代わりに「mod_authz_host」によるアクセス制限を実装することになるようです。また別記事にしたいとは思いますが、気になる方は下記に公式サイトへのリンクを貼っておきますので確認して下さい。
〇アパッチ公式サイト:Apache Module mod_authz_host
https://httpd.apache.org/docs/2.4/ja/mod/mod_authz_host.html