web-dev-qa-db-ja.com

ローカルネットワークからのみApache仮想ホストへのアクセスを許可する

管理しているLinuxサーバーにApache 2.2を実行しているWebページがあります。このサーバーは、他のいくつかのサービスのために外部から見ることができます。

特定の仮想ホストがローカルネットワーク内からのみ表示されるようにApacheを構成したいので、組織内の他の人からフィードバックを得るためにWebアプリケーションをデプロイできます。これはAllowディレクティブに関係していると思いますが、私の実験はうまくいきません。

設定ファイルを変更してそれを実現するにはどうすればよいですか?ファイアウォールの構成も変更する必要がありますか?

19
Btz

簡単です。メイン構成または仮想構成内で次のような設定を行うだけです。

<Directory /var/www/path/to/your/web/documents>

  Order Deny,Allow
  Deny from all
  Allow from 127.0.0.1 ::1
  Allow from localhost
  Allow from 192.168
  Allow from 10
  Satisfy Any

</Directory>

<Directory></Directory>ステートメントは基本的に、「これらのルールをこのディレクトリ内のすべてのものに使用します。そして、この例で設定した/var/www/path/to/your/web/documentsを参照する「このディレクトリ」によって、サイトのローカルディレクトリパスに一致するように変更する必要があります。

次に、<Directory></Directory>エリア内で、AllowがすべてデフォルトでOrder Deny,AllowになっているApacheのデフォルトの動作を変更しています。次に、Deny from allを設定して、全員からのアクセスを拒否します。 Allow from(localhost IPアドレス)、localhost(localhost自体)からのアクセスを許可する127.0.0.1 ::1ステートメントを次に示します。それがすべて標準的なものです。 localhostからのアクセスは、多くの内部システムプロセスに必要なためです。

以下はあなたにとって重要なものです。

Allow fromおよび192.16810は、これらの番号が接頭辞として付けられたネットワーク範囲内の任意/すべてのネットワークアドレスからのアクセスを許可します。

したがって、192.168を示すことは、基本的に、ユーザーが192.168.59.27192.168.1.123のようなアドレスを持っている場合、Webサイトを表示できることを意味します。

同様に、Allow fromプレフィックスに10を使用すると、誰かが10.0.1.2または10.90.2.3のIPアドレスを持っている場合でもコンテンツを見ることができます。

世界中のほとんどすべての内部ネットワークは、192.168範囲または10範囲の何かを使用します。外部はありません。したがって、このコンボを使用すると、外部へのアクセスをブロックするという目標を達成できますが、ローカルネットワーク内からのアクセスのみを許可します。

12
JakeGould

この回答に載っている人は、これがApache 2.2に固有のものであることに注意してください。

Apache 2.4はこれらのディレクティブを非推奨にしました。

新しい方法は、モジュールmod_authz_HostおよびRequireディレクティブを使用することです。 ( リンク

Apache 2.4では、次のことを行う必要があります

<Directory /var/www/ncp-web/>
  Require Host localhost
  Require ip 127.0.0.1
  Require ip 192.168
  Require ip 10
</Directory>

、すべてのAllowディレクティブを削除します。

12
nachoparker

仮想Hostディレクティブ内にこのセクションを追加します。

<Location /mypathurl>
    Order deny,allow
    Deny from all
    Allow from 192.168.1.10
</Location>

上記のIPを置き換えます。これは、財務レベルのセキュリティ、FYIには使用しないでください。

5
Chloe