web-dev-qa-db-ja.com

特定のIPからのリクエストのみを許可する

私は、Apache UNIXをホストしているアプリケーションを使用しており、ユーザーがcitrix環境から(citrixマシンから)アプリケーションのURLにアクセスできるようにしています。

ただし、現在、接続されているすべてのマシンからURLにアクセスできます。 citrixマシンからのみアクセスできるという制限を設けたいと思います。したがって、誰かがそれにアクセスする必要がある場合は、citrixマシンにアクセスする必要があります。

私は以下で試しました:

<Directory /APP>

    Order Deny,Allow

    Deny from all

    Allow from 160.120.25.65

    Allow from 127

</Directory>

うまくいきませんでした。なにか提案を?

Iptablesソリューションで応答する人はほとんどいませんが、これはSolarisにロードされています(LinuxとしてのOSにファイアウォールが組み込まれていません)。

23
Mutant

これはあなたが必要とすることをするはずです:

<Directory /APP>

    Order Allow,Deny

    Allow from 160.120.25.65
    Allow from 127.0.0.0/8

</Directory>

mod_authz_Host 詳細はドキュメント。

49
David Schmitt

実行しているApacheのバージョンは何ですか? IP許可メカニズムは、2.2で導入されたmod_authz_Hostによって提供されるAFAIKです(技術的には2.1)。 2.2がある場合は、 mod_authz_Host を無効にしてコンパイルされていないことを確認してください。

ただし、一般的に言えば、iptablesや他の回答で提案されている他のファイアウォールを使用する方が、より簡単で堅牢なソリューションを見つけることができます。

2
Jarret Hardie

この目的のためにIptablesを提案します。 iptablesにルールを追加します。宛先ポートがApacheマシンのポート番号であり、ソースIPがcritixマシンのIPアドレスである場合、Linuxマシンはそのパケットをドロップします。この方法は、すべてのIPに対して開かれているはずの、マシンのApacheでホストされている他のアプリケーションがない場合に問題を解決します。パースペクティブルールの例は次のとおりです。

iptables -I INPUT 1 -s 160.120.25.65 -d <port_of_Apache_on_your_machine> -j DROP

これで問題が解決するはずです。適切な値に置き換えると、

0