web-dev-qa-db-ja.com

Apache:仮想ホスト内の特定のソースIPへのアクセスを制限する

同じApacheサーバー上に複数の名前付き仮想ホストがあります。仮想ホストの1つに対して、特定のIPアドレスセットのみがアクセスを許可されるようにする必要があります。

これを行う最良の方法を提案してください。 mod_authz_hostsモジュールを見てきましたが、仮想ホスト内で実行できるようには見えません。

35
frameworksnow

mod_authz_Hostディレクティブは<Location>または<Directory>ブロック内にある必要がありますが、Apache 2.2のように<VirtualHost>内で前者を使用しました:

<VirtualHost *:8080>
    <Location />
    Order deny,allow
    Deny from all
    Allow from 127.0.0.1
    </Location>

    ...
</VirtualHost>

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

43

Apache 2.4の場合、 IPディレクティブが必要 を使用します。したがって、192.168.0.0/24ネットワークからのマシンのみを許可するには(範囲192.168.0.0-192.168.0.255)

<VirtualHost *:80>
    <Location />
      Require ip 192.168.0.0/24
    </Location>
    ...
</VirtualHost>

そして、ローカルホストマシンにアクセスさせたいだけなら、特別な ローカルディレクティブが必要 があります。

次の条件のいずれかに該当する場合、ローカルプロバイダーはサーバーへのアクセスを許可します。

  • クライアントアドレスは127.0.0.0/8と一致します
  • クライアントアドレスは:: 1
  • 接続のクライアントとサーバーの両方のアドレスが同じです

これにより、ローカルホストから発信された接続を照合する便利な方法が可能になります。

<VirtualHost *:80>
    <Location />
      Require local
    </Location>
    ...
</VirtualHost>
23
Jeff Puckett

仮想ホスト内で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のバージョンを指定した方がいいかもしれません。

6
giuliox

Apache 2.4では、許可構成の構文が変更されており、OrderDeny、またはAllowディレクティブは使用されなくなりました。

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

<VirtualHost *:8080>
    <Location />
        Require ip 192.168.1.0
    </Location>
    ...
</VirtualHost>

新しい構文を使用したその他の例は、Apacheのドキュメントに記載されています。 2.2から2.4へのアップグレード

3
vegarasmul