2017-10-28 13 views
0

当社の製品には、顧客向けのインターフェイスと内部インターフェイスの2つのインターフェイスがあります。 rmiをループバックなどの特定のインターフェイスでのみ動作させることは可能ですか、またはアクセスを防ぐためにファイアウォールルールを使用する必要がありますか?Java RMIを特定のインタフェースに制限する方法を教えてください。

指定されたインターフェイスからの要求にのみサーバーをバインドさせる方法はありますか?私はサーバー上で設定できるこのプロパティを見つけました。これは外部リクエストを防ぎますか?

-Djava.rmi.server.hostname=127.0.0.1

のrmiregistryが、それはMySQLのバインド・オプションのようにリッスンするインターフェイスを選択させる方法はありますか?私は、これは外部からの要求を防ぐん、サーバー上で設定することができ、このプロパティを発見した Java RMI: How can I restrict RMI method to only be called internally by the client object

+0

これはソケットファクトリを使用して可能です。 https://docs.oracle.com/javase/7/docs/api/java/rmi/server/UnicastRemoteObject.html#UnicastRemoteObject(int,%20java.rmi.server.RMIClientSocketFactory,%20java.rmi.server.RMIServerSocketFactory) – Antoniossss

答えて

1

:?

この質問は関連すると思われるが、私は単純な答えを望んでいますかどのようなIPアドレスプロパティコントロールは、このJVMからエクスポートされたオブジェクトを削除するのスタブに配置されていることを

-Djava.rmi.server.hostname=127.0.0.1 

。これらを 'localhost'設定のクライアントに限定したい場合、これは実際にはうまくいくでしょうが、それは素晴らしい解決策ではありません。

RMIServerSocketFactoryでリモートオブジェクトをエクスポートして、ServerSocketsを作成し、必要な特定のIPアドレスにバインドする必要があります。

rmiregistryには、mysqlのバインドオプションのようにリッスンするインターフェースを選択する方法がありますか?

同意です。 LocateRegistry.createRegistry(int port, RMIServerSocketFactory ssf, RMIClientSocketFactory csf)を経由して、自分でレジストリをエクスポートする必要があります。 csfはもちろんnullでもかまいません。

RMIServerSocketFactoryには、エクスポートするJVMで2つ以上のインスタンスを使用する場合、equals()の分かりやすい実装があることを確認してください。バインドされたIPアドレスが同じである限り、それらは等しいことを意味します。

この質問はそれではない

関連と思われます。

+0

推奨するRMIポートを保護する良い方法はありますか?主な目的は、顧客ネットワークからの悪用を防ぐことです。 – simgineer

関連する問題