ヘッダーをスキップ
Oracle® Fusion Middleware Oracle WebLogic Server Security プログラマーズ ガイド
11g リリース 1 (10.3.1)
B55520-01
 

目次
目次

戻る
戻る
 
次へ
次へ
 

7 ネットワーク接続フィルタの使い方

この節では、以下のトピックを取り上げます。

ネットワーク接続フィルタを使用する利点

セキュリティ ロールおよびセキュリティ ポリシーを使うと、WebLogic リソースをドメイン レベル、アプリケーション レベル、およびアプリケーション コンポーネント レベルで保護できます。接続フィルタを使用すると、ネットワーク レベルでアクセスを拒否できます。つまり、ネットワーク接続フィルタは、追加のセキュリティ レイヤを提供します。接続フィルタを使うと、個々のサーバ、サーバのクラスタ、または内部ネットワークにあるサーバ リソースを保護できます。

接続フィルタは、管理ポートでアクセスを制御する場合に特に便利です。ネットワーク ファイアウォール コンフィグレーションによっては、接続フィルタを使用して管理アクセスをさらに制限できる場合もあります。一般的には、管理ポートへのアクセスを特定のドメイン内のサーバやマシンのみに制限するために使用します。たとえ攻撃者がファイアウォール内のマシンにアクセスできた場合でも、許可されたマシンでない限り、管理操作を実行することはできません。

ネットワーク接続フィルタは、プロトコル、IP アドレス、および DNS ノード名に基づいてフィルタ処理するようコンフィグレーションできる点において一種のファイアウォールです。たとえば、ユーザの企業のネットワーク外部からの非 SSL 接続を拒否できます。これにより、インターネット上のシステムからのすべてのアクセスのセキュリティが確保されます。

ネットワーク接続フィルタ API

この節では、weblogic.security.net パッケージについて説明します。この API は、ネットワーク接続フィルタを開発するためのインタフェースとクラスを提供します。またこれには、ネットワーク接続フィルタのすぐに使える実装である、ConnectionFilterImpl クラスが含まれます。詳細については、このリリースの WebLogic Server の「WebLogic クラスの JavaDoc」を参照してください。

この節では、以下のトピックを取り上げます。

接続フィルタのインタフェース

接続フィルタ処理を実装するには、接続フィルタ インタフェースを実装するクラスを記述します。接続フィルタの実装用に、以下の weblogic.security.net インタフェースが提供されます。

ConnectionFilter インタフェース

このインタフェースでは、接続フィルタ処理を実装するために使用する accept() メソッドが定義されています。接続フィルタ処理を実行するようにサーバをプログラミングするには、このインタフェースを実装するクラスをインスタンス化し、Administration Console でそのクラスをコンフィグレーションする必要があります。このインタフェースは、接続フィルタ処理に関する最低限の実装要件です。


注意 :

このインタフェースを実装しただけでは、Administration Console を使ってクライアント接続を制限するフィルタ処理ルールを入力および修正することはできません。他の方法 (Administration Console で定義するフラット ファイルなど) を使ってルールを指定する必要があります。Administration Console を使ってフィルタ処理ルールを入力および修正するには、ConnectionFilterRulesListener インタフェースも実装する必要があります。ConnectionFilterRulesListener インタフェースについては、「ConnectionFilterRulesListener インタフェース」を参照してください。

ConnectionFilterRulesListener インタフェース

サーバはこのインタフェースを使って、Administration Console の [ConnectionFilterRules] フィールドで指定したルールが有効であるかどうかを起動中および実行時に判断します。


注意 :

このインタフェースを実装することも、WebLogic Server 製品の一部としてすぐにそのまま使える WebLogic 接続フィルタ実装 weblogic.security.net.ConnectionFilterImpl のみを使用することもできます。

このインタフェースでは、接続フィルタ処理を実装するために使用する 2 つのメソッド setRules()checkRules() が定義されています。ConnectionFilter インタフェースと共にこのインタフェースを実装すれば、クライアント接続を制限するフィルタ処理ルールを、Administration Console を使って入力することができます。


注意 :

Administration Console で接続フィルタ処理ルールを入力および編集するためには、ConnectionFilterRulesListener インタフェースを実装する必要があります。このインタフェースを実装しない場合は、フラット ファイルなどの他の方法を使用する必要があります。

接続フィルタのクラス

接続フィルタの実装用に、2 つの weblogic.security.net クラスが提供されます。

ConnectionFilterImpl クラス

このクラスは、ConnectionFilter および ConnectionFilterRulesListener インタフェースの WebLogic 接続フィルタ実装です。いったん Administration Console を使ってコンフィグレーションされると、この接続フィルタはデフォルトですべての着信接続を受け入れ、また、サーバが現在の接続フィルタを取得できるようにする静的なファクトリ メソッドを提供します。この接続でアクセスを拒否するには、Administration Console で接続フィルタ ルールを入力するだけです。

このクラスは、WebLogic Server 製品の一部として提供されます。このクラスをコンフィグレーションして使用するには、「WebLogic 接続フィルタのコンフィグレーション」を参照してください。

ConnectionEvent クラス

これは、すべてのイベント ステート オブジェクトが派生する元のクラスです。すべてのイベントは、そのオブジェクト、つまり特定のイベントが最初に発生したオブジェクトであると論理的に見なされるソースを基準に作成されます。新しい ConnectionEvent インスタンスを作成するには、アプリケーションでこのクラスが提供するメソッド (getLocalAddress()getLocalPort()getRemoteAddress()getRemotePort()、および hashcode()) を使用します。

接続フィルタ ルールの作成ガイドライン

この節では、接続ルールの記述方法と評価方法について説明します。接続ルールが指定されていない場合は、すべての接続が受け入れられます。

接続フィルタ ルールは、接続フィルタ処理の実装方法に応じて、フラット ファイルで記述したり、Administration Console で直接入力したりできます。

以下の節では、接続フィルタ ルールを記述するために必要な情報とガイドラインを説明しています。

接続フィルタ ルールの構文

接続フィルタ ルールの構文は以下のとおりです。

  • 各ルールは、1 行で記述する必要がある。

  • ルールのトークンはスペースで区切る必要がある。

  • シャープ記号 (#) はコメント文字。シャープ記号から行末までの記述は無視される。

  • ルールの前後のホワイトスペースは無視される。

  • ホワイトスペースまたはコメントだけの行はスキップされる。

フィルタ ルールの形式は、フィルタ ルールを入力するフィルタ ファイルを使用するか、Administration Console でフィルタ ルールを入力するかによって異なります。

  • Administration Console でフィルタ ルールを入力する場合、次の形式で入力する。

    targetAddress localAddress localPort action protocols
    
  • フィルタ ファイルでルールを指定する場合、次の形式で入力する。

    targetAddress action protocols 
    
    • targetAddress では、フィルタ処理を行うシステムを 1 つ以上指定する。

    • localAddress では、WebLogic Server インスタンスのホスト アドレスを定義する。アスタリスク (*) を指定すると、すべてのローカル IP アドレスが返されます。

    • localPort では、WebLogic Server インスタンスがリスンしているポートを定義する。アスタリスク (*) を指定すると、サーバで利用可能なすべてのポートが返されます。

    • action では、実行するアクションを指定する。この値は、allow または deny でなければなりません。

    • protocols は、一致するプロトコル名のリスト。指定できるプロトコルは、httphttpst3t3sldapldapsiiopiiopscom です (giopgiops、および dcom プロトコル名は、このリリースでもサポートされていますが、リリース 9.0 以降、実際に使用することは推奨されていません。同等のプロトコル名である iiopiiops、および com を使用してください)。


      注意 :

      SecurityConfigurationMBean には、以前の接続フィルタとの互換性を維持するための CompatibilityConnectionFiltersEnabled 属性があります。

    • プロトコルを定義しないと、すべてのプロトコルがルールに一致する。

接続フィルタ ルールの種類

2 種類のフィルタ ルールが認識されます。

  • ファスト ルール

    ファスト ルールは、ホスト名またはネットマスク (オプション) を含む IP アドレスに適用されます。ホスト名が複数の IP アドレスに対応する場合は、複数のルール (順序は不定) が生成されます。ネットマスクは、数値またはドットで区切った 4 つの値の形式で指定できます。次に例を示します。

    dialup-555-1212.pa.example.net 127.0.0.1 7001 deny t3 t3s #http(s) OK
    192.168.81.0/255.255.254.0   127.0.0.1 8001 allow   #23-bit netmask
    192.168.0.0/16   127.0.0.1 8002 deny   #like /255.255.0.0 
    

    ファスト ルールに対してホスト名を指定すると、WebLogic Server インスタンスの起動時に 1 回だけルックアップされます。この方法は、接続時のオーバーヘッドの大幅な削減には有効ですが、ホスト名とアドレスの対応について古い情報をフィルタが取得する可能性があります。数値の IP アドレスを使用することをお勧めします。

  • スロー ルール

    スロー ルールは、ドメイン名の一部に適用されます。一致検査を実行するにはクライアントサイドで接続時の DNS ルックアップが必要なので、スロー ルールはファスト ルールよりかなり遅くなる場合があります。また、スロー ルールは DNS スプーフィング攻撃の対象になる可能性があります。スロー ルールの指定方法は次のとおりです。

    *.script-kiddiez.org 127.0.0.1 7001 deny 
    

    アスタリスクは、パターンの先頭に対してのみ使用できます。ルールの他の位置でアスタリスクを使用すると、パターンの一部として扱われます。アスタリスクはドメイン名の一部として認められていないので、このようなパターンはドメイン名と一致しなくなります。

接続フィルタ ルールの評価方法

クライアントが WebLogic Server に接続すると、記述されている順序でルールが評価されます。一致する最初のルールにより、接続の処理方法が決まります。一致するルールがない場合には、接続は許可されます。

サーバの保護をさらに厳しくし、特定のアドレスからの接続だけを許可するには、最後のルールを次のように指定します。

0.0.0.0/0  *  *  deny

最後のルールをこのように指定すると、それまでのルールで許可されている接続だけが認められて、他の接続はすべて拒否されます。たとえば次のルールを指定したとします。

<Remote IP Address> * * allow https
0.0.0.0/0  *  *  deny

Remote IP Address を持つマシンだけが、接続フィルタを実行する WebLogic Server のインスタンスへのアクセスを許可されます。その他のシステムはすべて、アクセスを拒否されます。


注意 :

デフォルトの接続フィルタの実装では、対象アドレス 0 (0.0.0.0/0) を「ルールはすべての IP アドレスに適用される」という意味であると解釈します。設計上、デフォルトのフィルタはポートやローカル アドレスを評価せず、アクションのみを評価します。デフォルトのフィルタを使用する場合の制限を明確に指定するには、ルールを変更します。

この他に、カスタム接続フィルタを実装する方法もあります。


WebLogic 接続フィルタのコンフィグレーション

WebLogic Server には、そのまま使用できるネットワーク接続フィルタが用意されています。このフィルタは、Administration Console でコンフィグレーションするだけで使用できます。接続フィルタのコンフィグレーションの方法については、『Oracle Fusion Middleware Oracle WebLogic Server のセキュリティ』を参照してください。

カスタム接続フィルタの開発

WebLogic 接続フィルタを使用せず、独自に開発する場合は、weblogic.security.net パッケージで提供されているアプリケーション プログラミング インタフェース (API) を使用できます。この API については、「ネットワーク接続フィルタ API」を参照してください。

WebLogic Server でカスタム接続フィルタを開発するには、次の手順を実行します。

  1. ConnectionFilter インタフェースを実装するクラスを記述します (最低限の要件)。

    または、Administration Console を使用して接続フィルタ処理ルールを入力したり、既存のフィルタ処理ルールを直に編集したりする場合は、ConnectionFilter インタフェースおよび ConnectionFilterRulesListener インタフェースを実装するクラスを記述します。

  2. ConnectionFilter インタフェースだけを実装して手順 1 の最低要件を満たす場合、接続フィルタ処理ルールをフラット ファイルで入力し、ConnectionFilter インタフェースを実装するクラスでそのファイルの場所を定義します。その後、Administration Console を使用して WebLogic Server 内のクラスをコンフィグレーションします。Administration Console でクラスをコンフィグレーションする方法については、『Oracle Fusion Middleware Oracle WebLogic Server のセキュリティ』の「接続フィルタの使用」を参照してください。

  3. 手順 1 で 2 つのインタフェースを定義した場合、Administration Console を使用してクラスをコンフィグレーションし、接続フィルタ処理ルールを入力します。Administration Console でクラスをコンフィグレーションする方法については、『Oracle Fusion Middleware Oracle WebLogic Server のセキュリティ』の「接続フィルタの使用」を参照してください。

Java クライアントまたは Web ブラウザ クライアントが WebLogic Server インスタンスへの接続を試行する際に接続フィルタ処理を実装すると、WebLogic Server インスタンスは ConnectionEvent オブジェクトを作成して、接続フィルタ クラスの accept() メソッドに渡します。接続フィルタ クラスは、ConnectionEvent オブジェクトを調べて、接続を受け付ける場合はオブジェクトを返し、接続を拒否する場合は FilterException を送出します。

実装されたクラス (ConnectionFilter インタフェースのみを実装するクラスと、ConnectionFilter インタフェースおよび ConnectionFilterRulesListener インタフェースを実装するクラス) は両方とも、クライアント接続に関する情報を収集後に、accept() メソッドを呼び出す必要があります。ただし、ConnectionFilter インタフェースだけを実装している場合、収集される情報にはリモート IP アドレスと接続プロトコル (httphttpst3t3sldapldapsiiopiiops、または com) が含まれます。どちらのインタフェースも実装している場合、収集される情報には、リモート IP アドレス、リモート ポート番号、ローカル ポート番号、および接続プロトコルが含まれます。