Apache ホスト・IPによるアクセス制限の方法

2013/07/18

Apache 設定方法の説明

記事の概要

Apache の設定ファイルで、ホストまたはIPアドレスでアクセス制限を行うための書き方を紹介します。
また、実際にサンプルを乗せて設定例を紹介します。

IP アドレスの制限では、allow(許可)、deny(拒否)を記述して設定していきます。
また、ApacheではDirectoryやLocation内に記述することで一部のディレクトリやURLのみ拒否することができます。

アクセス制限の設定例

特定のホスト、IPのみ拒否する

まず、前知識として話します。

order allow,deny

上記は、許可したあとに拒否するという意味です。

order deny,allow

ならば、拒否したあとに許可するという意味になります。

allow from all

は、全てを許可するという意味であり、

deny from all

は、全てを拒否するという意味です。

以下では、IPアドレスが999.999.999.999の接続のみを拒否しています。


order allow,deny
allow from all
deny from 999.999.999.999

また、IPアドレスだけでなくホスト名による指定も可能です。
以下では、PbTimes からのアクセスのみ拒否しています。


order allow,deny
allow from all
deny from .pb-times.jp    # PbTimes からのアクセスを拒否

以下のようにすることで、日本と思われるアドレスからのみ拒否することもできます。


order allow,deny
allow from all
deny from .jp #日本と思われるアドレスを拒否

特定のホスト、IPのみ許可する

次は特定のホスト・IPアドレスのみ許可します。
以下の例では、999.999.999.999 のアドレスのみ接続を許可しています。


order deny,allow
deny from all
allow from 999.999.999.999

次はホスト名による制限です。
以下の例では、PbTimes及びローカルからの接続のみを許可しています。


order deny,allow
deny from all
allow from .pb-times.jp    # PbTimes からのアクセスを許可
allow from localhost       # localhost からのアクセスを許可

以下の例では、日本と思われるアドレスのみ許可しています。


order deny,allow
deny from all
allow from .jp #日本と思われるアドレスを許可

アクセス制限をかける箇所を特定する

Direcroty 内に記述することで、特定のディレクトリのみにアクセス制限をかけることができます。
以下の例では、/wp-admin への接続を999.999.999.999のIPアドレスのみ許可しています。


<Direcroty /wp-admin>
  order deny,allow
  deny from all
  allow from 999.999.999.999
</Direcroty>

Location を使用すると特定のアクセス制限のみにアクセス制限をかけることができます。
以下の例は、上記と同様の制限がかかります。


<Location /wp-admin>
  order deny,allow
  deny from all
  allow from 999.999.999.999
</Location>

DirectoryとLocationはよく似ていますが、Directoryは特定のディレクトリに、Locationは特定のURLに対して処理されます。

Locationは、ファイルシステム外のコンテンツにディレクティブを適用するときに 使用してください。

Apacheでアクセス制限をかける際に知っておきたいこと

ホストでアクセス制限をかけるとパフォーマンスが落ちる

IPアドレスで制限をかけるのは問題ないのですが、ホスト名でかけるとパフォーマンスが低下してしまいます。

理由は、Apacheはホスト名をIPアドレスに変換するのでDNS サーバに接続する回数だけパフォーマンスが落ちるのです。

1回のアクセスならよいのですが、画像がたくさんあるページなど、複数アクセスが必要なページなどは要注意です。

Related

Vagrant+Docker+PHP環境で「session.save_path」指定時に、セッションファイルが空になるエラー

ファイル共有でのフォルダの所有者を設定 結論 PHP5.4.28 からセッションファイルのownerはrootもしくはWebサーバのユーザに限るという制限が...

LINEと連携したテイクアウト事前注文システム徹底比較!

目次 テイクアウト予約・注文受付システムのトレンド LINEと連携したテイクアウト事前注文システムの価格表 L.B.B.Cloud テイクイーツ ...

PHPで動画の撮影日を取得

PHPで動画の撮影日を取得 概要 PHPからffprobeコマンドを実行し、動画の撮影日時を取得します。 コード $posted_at = ...

FullCalendarでGoogleカレンダーのようなUIを実装

jQueryプラグインFullCalendarのサンプル 概要 FullCalendarを使用して、GoogleカレンダーのようなUIを実装する使用例を...

PHP Laravel5.2でmulti-auth(複数テーブルでの認証)を実装

Laravel5.2でマルチ認証 概要 LaravelとはPHPの中で今最も伸びているフレームワークです。 処理速度が遅いなどありますが、かなり使い安く拡...

PHP 正規表現でIPアドレス形式の文字列か判定

正規表現でIPアドレスの入力チェック 概要 フォームで入力されたIPアドレスが正当な文字列か判定するためのバリデーション処理を実装します。 基本的...
トップへ戻る