Red Hat Training

A Red Hat training course is available for Red Hat JBoss Operations Network

第4章 サーバーエージェント通信の SSL 接続の設定

デフォルトでは、JBoss ON サーバーおよび JBoss ON エージェントは クリアで 相互に通信するため、通信トラフィックはすべて暗号化されず、認証はいずれのエンドも実行されません。
JBoss ON は一部のリソース種別で設定変更を実施できるため、特にサーバーをクリアして実行すると、ネットワークのセキュリティー上の考慮事項が考えられます。JBoss ON は、暗号化または認証なしで実行する必要があります。JBoss ON がテストされている場合や、すべての JBoss ON サーバーおよびエージェントが完全にセキュアなネットワークにデプロイされ、ファイアウォールや VPN によるアクセスに制限され、信頼できる担当者に制限されている場合にのみ実行する必要があります。
JBoss ON は SSL/TLS を使用して、2 つの方法でエージェントとサーバー間の接続をセキュア化します。
  • 暗号化 は、セッション中にエージェントとサーバー間で送信されたデータを特別にエンコードします。
  • 認証 は SSL サーバー証明書およびクライアント証明書を使用して、サーバーに接続する前にエージェントのアイデンティティーを検証します。その逆も同様です。
注記
サーバーが使用する基本的な認証メカニズムがあります。このメカニズムでは、登録済みエージェントの特定および認証に使用されるエージェントにセキュリティートークンを割り当てます。ただし、このトークンメカニズムは、JBoss ON ネットワークを侵入から保護するために強力な認証スキームと見なされないでください。
暗号化の設定は非常にシンプルで、サーバーとエージェント間で適切なトランスポートメカニズムを有効にする必要があります。これにより、攻撃者がデータを傍受したり、中間者攻撃を設定し、正当な JBoss ON サーバーと正当な JBoss ON エージェントとの間で通信またはデータを傍受しないようにします。
認証は、攻撃者が JBoss ON エージェントの「不正な」インストールを防ぎ、JBoss ON システムに登録し、不正エージェントがネットワークにアクセスできるようにすることで、保護のもう 1 つの層を追加します。認証の設定は暗号化のみを使用する場合よりも複雑ですが、特にネットワーク設定に脆弱性がある場合など、追加の保護のために実装することが推奨されます。

4.1. 暗号化の設定

暗号化を設定するために必要なのは、JBoss ON サーバーおよびエージェント設定ファイルで SSL トランスポートコネクターを有効にすることです。SSL には、2 つのトランスポートオプションが sslservlet あり sslsocketます。
JBoss ON サーバーには、暗号化に使用できるデフォルトの証明書があり、エージェントは自己署名証明書を生成することができるため、暗号化のみで追加の SSL 証明書を生成またはインストールする必要はありません。
  1. 最初に、JBoss ON サーバーで SSL 暗号化を有効にします。
    1. JBoss ON サーバーをシャットダウンします。
      serverRoot/jon-server-3.3.0.GA/bin/rhqctl.sh stop
    2. JBoss ON サーバーの serverRoot/jon-server-3.3.0.GA/bin/rhq-server.properties ファイルを開きます。
    3. SSL を使用するよう rhq.communications.connector.* 設定を編集します。認証に推奨される sslsocket トランスポートメソッドを使用するには、rhq.communications.connector.transport メソッドを更新し、ソケットに使用するポート番号を設定し、トランスポートパラメーター設定で指定されているサーブレットを削除します。
      rhq.communications.connector.transport=sslsocket   
      rhq.communications.connector.bind-address=
      rhq.communications.connector.bind-port=55555   
      rhq.communications.connector.transport-params=
      sslservlet トランスポートメソッドを使用するには、メソッドを変更するだけで十分です rhq.communications.connector.transport
      rhq.communications.connector.transport=sslservlet   
      rhq.communications.connector.bind-address=
      rhq.communications.connector.bind-port=
      rhq.communications.connector.transport-params=/jboss-remoting-servlet-invoker/ServerInvokerServlet
    4. 暗号化のみを設定する場合は、証明書ベースの認証が無効になっていることを確認してください。
      rhq.server.tomcat.security.client-auth-mode=false
      rhq.server.client.security.server-auth-mode-enabled=false
    5. 必要に応じて、使用するセキュアなプロトコルを定義します。デフォルトは TLS(通常は問題ありません)ですが、SSL に設定できます。
      rhq.server.tomcat.security.secure-socket-protocol=TLSv1,TLSv1.1,TLSv1.2
      rhq.server.client.security.secure-socket-protocol=TLS
    6. 変更を保存し、JBoss ON サーバーを再起動します。
      serverRoot/jon-server-3.3.0.GA/bin/rhqctl start
    7. 設定で指定された終了ポイントアドレスとポート番号が JBoss ON のサーバーに設定されていることを確認します。
      1. トップメニューの Administration タブをクリックします。
      2. 左側の Topology ボックスで Servers 項目を選択します。
      3. Secure Port 列のポート番号を確認します。
      4. 値が間違っている場合は、サーバーの名前をクリックして編集ページを開きます。
      5. サーバー情報の Edit 下にあるをクリックして、必要に応じて終了ポイントアドレスまたはポートをリセットします。
  2. 次に、エージェントで SSL 暗号化を有効にします。
    注記
    ここでは、エージェント設定ファイルを編集してエージェント設定を編集する方法を説明します。エージェント設定は、エージェント起動スクリプトの高度な設定モードに移動して編集することもできます。
    agentRoot/rhq-agent/bin/rhq-agent.sh --cleanconfig --setup --advanced
    1. エージェントの設定ファイルを開きます。
      vim agentRoot/rhq-agent/conf/agent-configuration.xml
    2. トランスポートプロトコルをに変更し sslsocketます。
      <entry key="rhq.communications.connector.transport"        value="sslsocket" />
    3. サーバーの設定に一致するように、適切なサーバー接続情報を設定します。以下の設定では、sslsocket を使用して、エージェントが server.example.com ポート 55555 の JBoss ON サーバーに接続できるようになりました。
      <entry key="rhq.agent.server.transport" value="sslsocket" />
      <entry key="rhq.agent.server.bind-port" value="55555" />
      <entry key="rhq.agent.server.bind-address" value="server.example.com" />
      <entry key="rhq.agent.server.transport-params" value="" />
      
      
      sslservlet を使用する場合、設定は以下のようになります。
      <entry key="rhq.agent.server.transport" value="sslservlet" />
      <entry key="rhq.agent.server.bind-port" value="7443" />
      <entry key="rhq.agent.server.bind-address" value="server.example.com" />
      <entry key="rhq.agent.server.transport-params" value="/jboss-remoting-servlet-invoker/ServerInvokerServlet" />
    4. 暗号化のみを設定する場合は、証明書ベースの認証が無効になっていることを確認してください。これらのパラメーターはコメントアウトすることも、明示的に認証をオフにするように設定することもできます。
      <entry key="rhq.communications.connector.security.client-auth-mode"       value="none" />
      <entry key="rhq.agent.client.security.server-auth-mode-enabled" value="false" />
    5. 必要に応じて、エージェントの追加プロトコル設定を定義します。これは、サーバーが TLS 以外のトランスポートプロトコルを使用するように設定されている場合に必要です。
      <entry key="rhq.communications.connector.security.secure-socket-protocol" value="TLS" />
      <entry key="rhq.agent.client.security.secure-socket-protocol"   value="TLS" />
    6. --cleanconfig オプションを使用して新しい設定を読み込んで、エージェントを終了し、再起動します。
      agentRoot/rhq-agent/bin/rhq-agent.sh --cleanconfig