はじめに
Webサイトを公開する前のテスト環境では、「特定の人だけアクセスできるようにしたい」というケースがあります。
そんな時によく利用されるのがIPアドレス制限です。
IPアドレス制限を設定すると、指定したIPアドレスからのみアクセスを許可できるため、テストサイトの誤公開防止や管理画面の保護に役立ちます。
この記事ではApacheの.htaccessを利用してIPアドレス制限を設定する方法を解説します。
IPアドレス制限とは
IPアドレス制限とは、特定のIPアドレスからのみアクセスを許可する仕組みです。
例えば、
会社の固定IPのみ許可
自宅のIPのみ許可
開発メンバーのみ許可
といった制御ができます。
.htaccessとは
.htaccessはApacheサーバーの設定ファイルです。
このファイルにアクセス制御のルールを記載することで、
- Basic認証
- リダイレクト
- URL書き換え
- IPアドレス制限
などを設定できます。
自分のIPアドレスを確認する方法
IPアドレス制限を設定するためには、まずアクセスを許可したいIPアドレスを確認する必要があります。
例えば自宅のPCからのみアクセスを許可したい場合は、自宅回線のIPアドレスを設定します。
Googleで
IPアドレス確認
と検索すると、現在利用しているグローバルIPアドレスを確認できます。
また、以下のような確認サイトを利用する方法もあります。
https://www.cman.jp/network/support/go_access.cgi
表示例
123.45.67.89
このIPアドレスを .htaccess の Require ip に設定することで、その回線からのみアクセスできるようになります。
コードスクリプトの概要
Apacheでは Require ip を利用することで、指定したIPアドレスからのアクセスのみ許可できます。
今回は例として、123.45.67.89 のみアクセスを許可する設定を紹介します。
この設定を .htaccess に記述すると、許可したIPアドレス以外からのアクセスは自動的に拒否され、403 Forbidden が表示されます。
特定のIPのみ許可する
もっともシンプルなIPアドレス制限の設定です。
以下の設定では、123.45.67.89 からのアクセスのみ許可します。
Require ip 123.45.67.89
設定内容
| 記述 | 説明 |
|---|---|
| Require | アクセス許可ルールを設定する命令 |
| ip | IPアドレスを対象とする指定 |
| 123.45.67.89 | アクセスを許可するIPアドレス |
利用シーン
- テストサイトを社内からのみ閲覧可能にする
- 管理画面を特定の場所からのみアクセス可能にする
- 開発中サイトの誤公開を防ぐ
などの用途で利用されます。
.htaccessの記述例
例えば開発中のテストサイトを公開サーバー上に設置した場合、URLを知っていれば誰でもアクセスできてしまいます。
そのような場合にIPアドレス制限を設定することで、指定したIPアドレス以外からのアクセスを拒否できます。
今回は 123.45.67.89 のみアクセスを許可する設定を例に見てみましょう。
<RequireAll>
Require ip 123.45.67.89
</RequireAll>
この設定を適用すると、許可されたIPアドレスからは通常どおりページを閲覧できますが、それ以外のIPアドレスからアクセスした場合は 403 Forbidden が表示されます。
実行結果
設定した .htaccess をサーバーへ配置すると、アクセス元のIPアドレスによって表示結果が変わります。
許可したIPアドレスからアクセスした場合は通常どおりページが表示されます。
許可IPの場合
アクセス可能
ブラウザ上でWebサイトが正常に表示されます。
一方で、許可していないIPアドレスからアクセスした場合は、Apacheによってアクセスが拒否されます。
許可以外の場合
403 Forbidden
この場合、ブラウザには403 Forbiddenエラーが表示され、ページの内容を閲覧することはできません。
複数IPを許可する方法
テスト環境では、自分だけでなく複数の開発メンバーやクライアントにも確認してもらいたいケースがあります。
そのような場合は、複数のIPアドレスを許可対象として登録できます。
以下の例では、3つのIPアドレスからのアクセスを許可しています。
<RequireAny>
Require ip 123.45.67.89
Require ip 111.22.33.44
Require ip 222.33.44.55
</RequireAny>
設定内容
<RequireAny> は、記載された条件のいずれかを満たした場合にアクセスを許可する設定です。
そのため、以下のいずれかのIPアドレスからアクセスした場合にサイトを閲覧できます。
| IPアドレス | アクセス可否 |
|---|---|
| 123.45.67.89 | ○ |
| 111.22.33.44 | ○ |
| 222.33.44.55 | ○ |
| それ以外 | × |
Basic認証と組み合わせる
実務ではIPアドレス制限だけでなく、Basic認証を組み合わせて運用するケースがよくあります。
IPアドレス制限は「どこからアクセスするか」を制御する仕組みですが、Basic認証は「誰がアクセスするか」を確認する仕組みです。
そのため、両方を組み合わせることでより安全にサイトを保護できます。
設定例
AuthType Basic
AuthName "Restricted Area"
AuthUserFile /path/.htpasswd
Require valid-user
Require ip 123.45.67.89
動作イメージ
- まずアクセス元のIPアドレスを確認
- 許可されたIPアドレスの場合のみ認証画面を表示
- ID・パスワードが正しい場合にアクセス許可
利用シーン
- テスト環境の保護
- 管理画面の保護
- クライアント確認用サイト
- 社内限定ページ
このように二重でアクセス制御を行うことで、URLが外部へ漏れた場合でも第三者によるアクセスを防ぎやすくなります。
注意点
- 自分のIPを許可し忘れると自分もアクセスできなくなる
- スマホ回線はIPが変わることがある
- VPN利用時はVPNのIPになる
- 本番環境へ適用する前にテスト環境で確認する
まとめ
ApacheのIPアドレス制限を利用すると、特定の利用者だけがサイトへアクセスできるようになります。
特にテスト環境や管理画面の保護では非常によく利用される設定です。
実務ではBasic認証と組み合わせるケースも多いため、あわせて覚えておくと役立ちます。


コメント