web-dev-qa-db-ja.com

TomcatのソースIPによって特定のURLへのアクセスを制限するにはどうすればよいですか?

Tomcat Webアプリケーションで特定のURLへのアクセスを制限したい。特定のパターンに適合するURLへのアクセスは、既知の3つのIPアドレスのみに許可する必要があります。

例えばhttp://example.com:1234/abc/personId

どうすればこれを達成できますか?

14
Randeep

Org.Apache.catalina.filters.RemoteAddrFilterを使用して、保護するURLにマッピングします。設定の詳細については http://Tomcat.Apache.org/Tomcat-7.0-doc/config/filter.html#Remote_Address_Filter を参照してください。

12
Mark Thomas

これをserver.xmlで行うと、次のようになります。

 <Valve
    className="org.Apache.catalina.valves.RemoteAddrValve"
        deny="117.40.83.*,122.224.95.*,119.255.28.*,218.8.245.*,218.85.139.*,219.117.197.*,124.89.39.*,58.18.172.*,180.153.225.*"
        />

(これらは実際のIPアドレスです:所有者、理由はわかります:-|)しかし、ご覧のとおり、それは実際にはイネーブラーではなくブロッカーです。より良い解決策は、Apache HTTPDをDeny AllステートメントとAllow Fromステートメントでその前に置くことです。これにより、サービスへのアクセスに必要な3つのIPアドレスのみを許可できます。

4
user207421

次のようなものを使用してipsをブロックできます。プロキシを使用している場合は、

<Context path="/manager" docBase="manager" reloadable="true" privileged="true" >
  <Valve className="org.Apache.catalina.valves.RemoteIpValve"/>
  <Valve className="org.Apache.catalina.valves.RemoteHostValve" allow="<your IP regex>"/>
</Context>
3
The-Bat

次の理由により、IPアドレスでアクセスを制限しません。

  • そうすることは内部アドレスを言う、例えば。 10.0.0.0/24は、この範囲全体を暗黙的に信頼することを意味します。侵害された場合はどうなりますか?
  • すべての顧客が静的IPアドレスを取得できる、または取得できるわけではありません。一部の顧客にアクセスを許可したい場合を想定しています。
  • プロキシがx-forwarded-forヘッダーをサポートしていないゲートウェイデバイスの背後にいる顧客は、ゲートウェイデバイスのIPのみを取得します。 IPを信頼するすべての顧客をゲートウェイの背後で信頼します。ここでも、一部の顧客にアクセスを許可する場合があります。

代わりに、特定のユーザーのみがアクセスできる呼び出しがあるシステムを実行する必要がある場合は、認証を使用します。SSLクライアント側の証明書は、この目的に非常に適しています。または、 OAuth のようなものを使用できます。

0
user257111