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


19

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

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

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


サーバーに10.0.0.100などのプライベート(ルーティング不可)IPアドレスまたはパブリック(ルーティング可能)IPアドレスを使用していますか?
closetnoc 14年

サーバーにはパブリックIPアドレスがあり、職場のネットワークの外部(自宅など)から接続できます。同僚のコンピューターはすべて、10。*。*。*タイプのローカルIPアドレスを持っています。
Btz 14年

回答:


12

簡単です。メイン設定または仮想設定内で次のように設定します。

<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>の領域は、デフォルトのApacheの動作変更されているAllowすべてのデフォルトではS」をOrder Deny,Allow。次に、Deny from all全員からのアクセスを拒否するように設定します。以下は、(localhost IPアドレス)、(localhost自体)Allow fromからのアクセスを許可するステートメントです。それがすべて標準的なものです。多くの内部システムプロセスからのアクセスが必要なので。127.0.0.1 ::1localhostlocalhost

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

Allow from以下のため192.168だけでなく、10これらの数字が付けられたネットワーク範囲内の任意の/すべてのネットワークアドレスからのアクセスを許可します。

したがって192.168、基本的には、ユーザーが次のようなアドレスを持っている192.168.59.27192.168.1.123、ウェブサイトを見ることができるかを示します。

そして、同様に使用するAllow fromために10、誰かがのIPアドレスを持っている場合という接頭辞分確保10.0.1.2、あるいは10.90.2.3、彼らはコンテンツを見ることができます。

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


Satisfy Anyこの場合、何をすべきでしょうか?私はこのすべてについて何も知りませんが、私のシナリオにそれが存在したとき、私は<Location /path>外部ネットワークからページにアクセスできました(使用しました)。しかし、それを削除すると問題が解決しました。ルールが設定されていてもページにアクセスできるのではないかと少し心配していたので、なぜそうなのかを理解できてうれしいです。
リアムニコール

@liamnicholsここで説明したように、「要件が満たされた場合に要求を許可します(認証またはアクセス)。」
JakeGould

14

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

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

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

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ディレクティブを削除します。


5

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

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

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


-1

私はあなたがあなたのネットワーク設定をどのように持っているかわかりません、しかし、私はより良い答えをしようとするために何かを仮定しています。

DSL接続のある小さなオフィスがあると仮定しましょう。静的なパブリックIPアドレス、または回線、DSLモデム、ファイアウォールに割り当てられたアドレスブロックがあります。これがどのように起こるかの詳細に入ることなく、私は重要な部分に行きます。

NAT(ネットワークアドレス変換)を使用する必要があります。これにより、パブリックIPアドレスをネットワークのWAN(インターネット)側に配置し、LAN側のネットワーク内でプライベートIPアドレス(10.0.0.100など)を使用できます。これは標準的な操作手順です。ネットワーク内でWebサーバーをホストしている場合は、ポート転送またはその他の同様のメカニズムを使用して、WebトラフィックをWebサーバーに向けます。

この標準シナリオでは、内部コンピューターはすべてプライベートIPアドレスを使用します。

同様の標準ネットワーク設定があると仮定すると、コンピューターのIPアドレスをパブリックIPアドレスからプライベートIPアドレスに変更します。ネットワークにはDHCPが設定されており、コンピューターが使用可能なIPアドレスを要求できる場合があります。つまり、IPアドレスを指定する代わりに、DHCPを使用するように選択すると、IPアドレスが割り当てられます。DHCPが利用できない場合は、使用される可能性のあるプライベートIPアドレススペースについて他のコンピューターをチェックし、使用されていないスペース内のIPアドレスを選択する必要があります。ネットワーク設定でこの未使用のIPアドレスを指定できます。これにより、システムがインターネット上で表示されなくなります。


私はそれについて考えましたが、それは実用的な解決策ではありません。そのマシンには外部から見えるようにしなければならないサービスがあり、いずれにせよ数日のうちにWebアプリケーションを再び見えるようにする予定です。数日間だけネットワークレイアウトに革命を起こす意味はありません。しかし、私が取り組むことができるのは、Apache構成のようなものです。
Btz 14年

ファイアウォールがある場合は、そのIPアドレスへのいくつかのポートを閉じることができます。
closetnoc 14年

ファイアウォール設定を使用することもできますが、それは本当にやり過ぎです。Apacheには、IPアドレスおよびその他の関連基準に基づいて拒否または許可する機能が組み込まれています。詳細については私の答えをご覧ください。
JakeGould 14

@JakeGouldファイアウォールは、必ずしも過剰なソリューションではありません。Apacheは本当によく知っています。ただし、ほとんどの優れたファイアウォールには、サーバー自体に負荷をかけずに役立つHTTPフィルタリングオプションがあります。同様に、Apacheは優れていますが、間違いがないわけではありません。同様に、代替ポートアクセスを含むポートアクセスはファイアウォールを使用して操作できるため、一部のWebサービスは公開されたままで、他のWebサービスはLAN内でのみアクセス可能です。
closetnoc
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.