6 ネットワーク接続フィルタの使い方
ネットワーク接続フィルタを使用する利点
接続フィルタは、管理ポートでアクセスを制御する場合に特に便利です。ネットワーク・ファイアウォール構成によっては、接続フィルタを使用して管理アクセスをさらに制限できる場合もあります。一般的には、管理ポートへのアクセスを特定のドメイン内のサーバーやマシンのみに制限するために使用します。たとえ攻撃者がファイアウォール内のマシンにアクセスできた場合でも、許可されたマシンでない限り、管理操作を実行することはできません。
ネットワーク接続フィルタは、プロトコル、IPアドレス、およびDNSノード名に基づいてフィルタ処理するよう構成できる点において一種のファイアウォールです。たとえば、ユーザーの企業のネットワーク外部からの非SSL接続を拒否できます。これにより、インターネット上のシステムからのすべてのアクセスのセキュリティが確保されます。
ネットワーク接続フィルタAPI
接続フィルタ・ルールによって、受け入れられるネットワーク接続数を制限することができます。有効な接続フィルタ・ルールを作成する方法およびフィルタがどのように評価されるかを学習します。
weblogic.security.net
APIパッケージは、ネットワーク接続フィルタを開発するためのインタフェースとクラスを提供します。またこれには、ネットワーク接続フィルタのすぐに使える実装である、ConnectionFilterImpl
クラスが含まれます。ネットワーク接続フィルタAPIに関する参照情報全体は、Oracle WebLogic Server用Java APIリファレンスを参照してください。
この節では、以下のトピックを取り上げます。
接続フィルタのインタフェース
接続フィルタ処理を実装するには、接続フィルタ・インタフェースを実装するクラスを記述します。接続フィルタの実装用に、以下のweblogic.security.net
インタフェースが提供されます。
ConnectionFilterインタフェース
このインタフェースでは、接続フィルタ処理を実装するために使用するaccept()
メソッドが定義されています。接続フィルタ処理を実行するようにサーバーをプログラミングするには、このインタフェースを実装するクラスをインスタンス化し、WebLogic Server管理コンソールでそのクラスを構成する必要があります。このインタフェースは、接続フィルタ処理に関する最低限の実装要件です。
ノート:
このインタフェースのみを実装しても、WebLogic Server管理コンソールを使って、クライアントの接続を制限するフィルタ処理ルールの入力または修正は行えません。その目的のためには、他の方法(WebLogic Server管理コンソールで定義されるフラット・ファイルなど)を使用する必要があります。WebLogic Server管理コンソールを使ってフィルタ処理ルールを入力および修正するには、ConnectionFilterRulesListenerインタフェースも実装する必要があります。ConnectionFilterRulesListenerインタフェースについては、「ConnectionFilterRulesListenerインタフェース」を参照してください。
ConnectionFilterRulesListenerインタフェース
サーバーはこのインタフェースを使って、WebLogic Server管理コンソールの「ConnectionFilterRules
」フィールドで指定したルールが有効であるかどうかを起動中および実行時に判断します。
ノート:
このインタフェースを実装することも、WebLogic Server製品の一部としてすぐにそのまま使えるWebLogic接続フィルタ実装weblogic.security.net.ConnectionFilterImplのみを使用することもできます。
このインタフェースでは、接続フィルタ処理を実装するために使用する2つのメソッドsetRules()
とcheckRules()
が定義されています。ConnectionFilter
インタフェースとともにこのインタフェースを実装すれば、クライアント接続を制限するフィルタ処理ルールを、WebLogic Server管理コンソールを使って入力することができます。
ノート:
WebLogic Server管理コンソールで接続フィルタ処理ルールを入力および編集するためには、ConnectionFilterRulesListenerインタフェースを実装する必要があります。このインタフェースを実装しない場合は、フラット・ファイルなどの他の方法を使用する必要があります。
接続フィルタのクラス
接続フィルタの実装用に、2つのweblogic.security.net
クラスが提供されます。
ConnectionFilterImplクラス
このクラスは、ConnectionFilter
およびConnectionFilterRulesListener
インタフェースのWebLogic接続フィルタ実装です。一度WebLogic Server管理コンソールを使って構成されると、この接続フィルタはデフォルトですべての着信接続を受け入れ、また、サーバーが現在の接続フィルタを取得できるようにする静的なファクトリ・メソッドを提供します。この接続でアクセスを拒否するには、WebLogic Server管理コンソールで接続フィルタ・ルールを入力するだけです。
このクラスは、WebLogic Server製品の一部として提供されます。このクラスを構成して使用するには、「WebLogic接続フィルタの構成」を参照してください。
接続フィルタ・ルールの作成ガイドライン
接続フィルタ・ルールを作成する一定のガイドラインがあります。接続ルールを指定しないと、すべての接続が受け入れられます。
接続フィルタ・ルールは、接続フィルタ処理の実装方法に応じて、フラット・ファイルで記述したり、WebLogic Server管理コンソールで直接入力したりできます。
以下の節では、接続フィルタ・ルールを記述するために必要な情報とガイドラインを説明しています。
接続フィルタ・ルールの構文
接続フィルタ・ルールの構文は以下のとおりです。
-
各ルールは、1行で記述する必要があります。
-
ルールのトークンはスペースで区切る必要があります。
-
シャープ記号(
#
)はコメント文字。シャープ記号から行末までの記述は無視されます。 -
ルールの前後のホワイトスペースは無視されます。
-
ホワイトスペースまたはコメントだけの行はスキップされます。
フィルタ・ルールの形式は、フィルタ・ルールを入力するフィルタ・ファイルを使用するか、WebLogic Server管理コンソールでフィルタ・ルールを入力するかによって異なります。
-
WebLogic Server管理コンソールでフィルタ・ルールを入力する場合、次の形式で入力します。
targetAddress localAddress localPort action protocols
-
フィルタ・ファイルでルールを指定する場合、次の形式で入力します。
targetAddress action protocols
-
targetAddress
では、フィルタ処理を行うシステムを1つ以上指定します。 -
localAddress
では、WebLogic Serverインスタンスのホスト・アドレスを定義します。アスタリスク(*
)を指定すると、すべてのローカルIPアドレスが返されます。 -
localPort
では、WebLogic Serverインスタンスがリスニングしているポートを定義します。アスタリスク(*
)を指定すると、サーバーで利用可能なすべてのポートが返されます。 -
action
では、実行するアクションを指定します。この値は、allow
またはdeny
でなければなりません。 -
protocols
は、一致するプロトコル名のリスト。http
、https
、t3
、t3s
、ldap
、ldaps
、iiop
、iiops
、およびcom
といったプロトコルを指定できます。(giop
、giops
、およびdcom
プロトコル名もサポートされていますが、リリース9.0以降、その使用は非推奨です。同等の機能を持つiiop
、iiops
、および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接続フィルタを使用せず、独自に開発する場合は、weblogic.security.net
パッケージで提供されているアプリケーション・プログラミング・インタフェース(API)を使用できます。
weblogic.security.net
パッケージについては、「ネットワーク接続フィルタAPI」を参照してください。
Oracle WebLogic Serverでカスタム接続フィルタを開発するには、次のステップを実行します。
JavaクライアントまたはWebブラウザ・クライアントがWebLogic Serverインスタンスへの接続を試行する際に接続フィルタ処理を実装すると、WebLogic ServerインスタンスはConnectionEvent
オブジェクトを作成して、接続フィルタ・クラスのaccept()
メソッドに渡します。接続フィルタ・クラスは、ConnectionEvent
オブジェクトを調べて、接続を受け付ける場合はオブジェクトを返し、接続を拒否する場合はFilterException
をスローします。
実装されたクラス(ConnectionFilter
インタフェースのみを実装するクラスと、ConnectionFilter
インタフェースおよびConnectionFilterRulesListener
インタフェースを実装するクラス)は両方とも、クライアント接続に関する情報を収集後に、accept()
メソッドを呼び出す必要があります。ただし、ConnectionFilter
インタフェースだけを実装している場合、収集される情報にはリモートIPアドレスと接続プロトコル(http
、https
、t3
、t3s
、ldap
、ldaps
、iiop
、iiops
、またはcom
)が含まれます。どちらのインタフェースも実装している場合、収集される情報には、リモートIPアドレス、リモート・ポート番号、ローカル・ポート番号、および接続プロトコルが含まれます。