Apacheバーチャルホスト内の特定のソースIPへのアクセスを制限する

同じapacheサーバー上にいくつかの名前のバーチャルホストがありますが、そのうちの1つのバーチャルホストに対して、特定のIPアドレスだけがアクセスできるようにする必要があります。

これを行う最良の方法を教えてください。mod_authz_hostsモジュールを見ましたが、バーチャルホストの中でそれを行うことはできないようです。

ソリューション

mod_authz_host`ディレクティブはまたはブロックの中に置く必要があるが、私はApache 2.2のために前者を``の中で使っている:



    Order deny,allow
    Deny from all
    Allow from 127.0.0.1


    ...

参照: https://askubuntu.com/questions/262981/how-to-install-mod-authz-host-in-apache

解説 (0)

Apache 2.4 では、Require IP ディレクティブ を使います。つまり、192.168.0.0/24 ネットワーク (192.168.0.0 から 192.168.0.255 までの範囲) からのマシンだけを許可するには



      Require ip 192.168.0.0/24

    ...

また、localhost マシンにだけアクセスさせたい場合は、特別な Require local directive があります。

以下の条件のいずれかが真であれば、ローカルプロバイダはサーバへのアクセスを許可します:

クライアントのアドレスが127.0.0.0/8に一致する。 クライアントのアドレスが::1である。 クライアントとサーバーのアドレスが同じである。

これは、ローカルホストから発信された接続をマッチさせる便利な方法です:



      Require local

    ...
解説 (4)

バーチャルホスト内でapache 2.2を使用している場合は、以下のディレクティブ(mod_authz_host)を追加してください:

Order deny,allow
Deny from all
Allow from 10.0.0.1

サブネットを指定することもできます

Allow from 10.0.0

Apache 2.4は設定として少し違うようです。 どのバージョンのapacheを使用しているかを指定した方がいいかもしれません。

解説 (4)

Apache 2.4では、承認構成の構文が変更されており、「注文」、「拒否」、「許可」ディレクティブは使用しなくなりました。

これを行う新しい方法は次のとおりです。



        Require ip 192.168.1.0

    ...

新しい構文を使用するその他の例は、Apacheのドキュメントにあります:2.2から2.4にアップグレード

解説 (0)