管理しているLinuxサーバーにApache 2.2を実行しているWebページがあります。このサーバーは、他のいくつかのサービスのために外部から見ることができます。
特定の仮想ホストがローカルネットワーク内からのみ表示されるようにApacheを構成したいので、組織内の他の人からフィードバックを得るためにWebアプリケーションをデプロイできます。これはAllowディレクティブに関係していると思いますが、私の実験はうまくいきません。
設定ファイルを変更してそれを実現するにはどうすればよいですか?ファイアウォールの構成も変更する必要がありますか?
簡単です。メイン構成または仮想構成内で次のような設定を行うだけです。
<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.168
の10
は、これらの番号が接頭辞として付けられたネットワーク範囲内の任意/すべてのネットワークアドレスからのアクセスを許可します。
したがって、192.168
を示すことは、基本的に、ユーザーが192.168.59.27
や192.168.1.123
のようなアドレスを持っている場合、Webサイトを表示できることを意味します。
同様に、Allow from
プレフィックスに10
を使用すると、誰かが10.0.1.2
または10.90.2.3
のIPアドレスを持っている場合でもコンテンツを見ることができます。
世界中のほとんどすべての内部ネットワークは、192.168
範囲または10
範囲の何かを使用します。外部はありません。したがって、このコンボを使用すると、外部へのアクセスをブロックするという目標を達成できますが、ローカルネットワーク内からのアクセスのみを許可します。
この回答に載っている人は、これが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ディレクティブを削除します。
仮想Hostディレクティブ内にこのセクションを追加します。
<Location /mypathurl>
Order deny,allow
Deny from all
Allow from 192.168.1.10
</Location>
上記のIPを置き換えます。これは、財務レベルのセキュリティ、FYIには使用しないでください。