機械翻訳について

セキュリティ

通信を暗号化するには、組織のサードパーティのCA証明書を構成して、HTTPS経由で接続しているユーザーにOracle Linux Virtualization Managerを識別します。

HTTPS接続にサード・パーティのCA証明書を使用しても、エンジン・ホストとKVMホストの間の認証に使用される証明書には影響しません。 これらは引き続き、Managerによって生成される自己署名証明書を使用します。

HTTP Strict Transport Security (HSTS)を有効にして、プロトコル・ダウングレード攻撃やcookieハイ・ジャックなどの中間者攻撃からwebサイトを保護することもできます。

ノート:

Federal Information Processing Standard (FIPS)への準拠が必要な場合は、Oracle Linux Virtualization Managerデプロイメントに対してFIPSモードを有効にできます。 「Oracle Linux Virtualization Manager: はじめに」「FIPSモードのデプロイメント」を参照してください。

 Oracle Linux Virtualization Manager Apache SSL証明書の置換

開始する前に、認証局(CA)によって発行されたデジタル証明書であるサード・パーティCA証明書を取得する必要があります。 証明書はPEMファイルとして提供されます。 証明書チェーンはルート証明書までの完全なものである必要があります。 チェーンの順序は重要であり、最後の中間証明書からルート証明書まで連なっている必要があります。

注意:

/etc/pkiディレクトリまたはサブディレクトリの権限および所有権は変更しないでください。 /etc/pkiおよび/etc/pki/ovirt-engineディレクトリの権限は、755のデフォルト値として維持する必要があります。

Oracle Linux Virtualization Manager Apache SSL証明書を置換するには:

  1. 新規のサード・パーティCA証明書をホスト全体の信頼ストアにコピーし、信頼ストアを更新します。

    # cp third-party-ca-cert.pem /etc/pki/ca-trust/source/anchors/
    # update-ca-trust export
  2. /etc/pki/ovirt-engine/apache-ca.pemへのシンボリック・リンクを削除します。

    エンジンは、/etc/pki/ovirt-engine/ca.pemにシンボリック・リンクされている/etc/pki/ovirt-engine/apache-ca.pemを使用するように構成されています。

    # rm /etc/pki/ovirt-engine/apache-ca.pem 
  3. CA証明書をManagerのPKIディレクトリにコピーします。

    # cp third-party-ca-cert.pem /etc/pki/ovirt-engine/apache-ca.pem 
  4. 既存の秘密キーと証明書をバックアップします。

    # cp /etc/pki/ovirt-engine/certs/apache.cer /etc/pki/ovirt-engine/certs/apache.cer.bck
    # cp /etc/pki/ovirt-engine/keys/apache.key.nopass /etc/pki/ovirt-engine/keys/apache.key.nopass.bck
  5. 次のコマンドを入力することにより新しいApache秘密キーをManagerのPKIディレクトリにコピーし、プロンプトに応答します。

    # cp apache.key /etc/pki/ovirt-engine/keys/apache.key.nopass
    cp: overwrite /etc/pki/ovirt-engine/keys/apache.key.nopass? y
  6. 次のコマンドを入力することにより新しいApache証明書をManagerのPKIディレクトリにコピーし、プロンプトに応答します。

    # cp apache.cer /etc/pki/ovirt-engine/certs/apache.cer 
    cp: overwrite /etc/pki/ovirt-engine/certs/apache.cer? y
  7. Apache HTTPサーバー(httpd)およびManagerを再起動します。

    # systemctl restart httpd
    # systemctl restart ovirt-engine
  8. 次のパラメータを追加して、新しいトラスト・ストア構成ファイル(または既存のもの)を/etc/ovirt-engine/engine.conf.d/99-custom-truststore.confに作成します。

    ENGINE_HTTPS_PKI_TRUST_STORE="/etc/pki/java/cacerts" 
    ENGINE_HTTPS_PKI_TRUST_STORE_PASSWORD=""  
  9. 既存のWebsocket構成ファイルをバックアップします。

    # cp /etc/ovirt-engine/ovirt-websocket-proxy.conf.d/10-setup.conf /etc/ovirt-engine/ \
    ovirt-websocket-proxy.conf.d/10-setup.conf.bck
  10. 次のパラメータを追加して、/etc/ovirt-engine/ovirt-websocket-proxy.conf.d/10-setup.confのWebsocket構成ファイルを編集します。

    SSL_CERTIFICATE=/etc/pki/ovirt-engine/certs/apache.cer 
    SSL_KEY=/etc/pki/ovirt-engine/keys/apache.key.nopass
  11. ovirt-provider-ovnサービスを再起動します。

    # systemctl restart ovirt-provider-ovn
  12. ovirt-engineサービスを再起動します。

    # systemctl restart ovirt-engine

HTTP Strict Transport Securityの有効化

HTTP Strict Transport Securityを有効にするには、次のステップを実行します。

  1. ovirt-engineサービス・ポート443の場合は、httpdの構成ファイルを作成します。たとえば:
    # cat ovirt-enable-strict-transport-security.conf
    LoadModule headers_module modules/mod_headers.so
    Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains"
    <IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteCond %{HTTPS} off
        RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
    </IfModule>
     
    # systemctl restart httpd
ovirt-imageioサービス・ポートの場合は、_internal/http.pyファイルを変更します:
# vi /usr/lib64/python3.6/site-packages/ovirt_imageio/_internal/http.py
 
class Response:
 
    def __init__(self, con):
        self._con = con
        self.status_code = OK
        self.headers = Headers({"content-length": 0, "Strict-Transport-Security": "max-age=31536000"})     
        self._started = False
 
# systemctl restart ovirt-imageio
 
# curl -s -I -k https://localhost:54323
HTTP/1.1 404 Not Found
server: imageio/2.4.7
date: Wed, 13 Sep 2023 16:56:45 GMT
content-length: 19
Strict-Transport-Security: max-age=31536000
content-type: text/plain; charset=UTF-8
ovirt-provider-ovnサービス・ポートの場合は、server.pyファイルを変更します:
# vi /usr/lib64/python3.6/http/server.py
 
    def send_response(self, code, message=None):
        """Add the response header to the headers buffer and log the
        response code.
 
        Also send two standard headers with the server software
        version and the current date.
 
        """
        self.log_request(code)
        self.send_response_only(code, message)
        self.send_header('Server', self.version_string())
        self.send_header('Date', self.date_time_string())
        # Oracle Bug-33308887: added below header for security scans
        self.send_header("Strict-Transport-Security", "max-age=31536000")     
 
# systemctl restart ovirt-provider-ovn
 
# curl -s -I -k https://localhost:35357
HTTP/1.0 501 Unsupported method ('HEAD')
Server: BaseHTTP/0.6 Python/3.6.8
Date: Wed, 13 Sep 2023 17:34:32 GMT
Strict-Transport-Security: max-age=31536000
Connection: close
Content-Type: application/json
Content-Length: 137
ovirt-websocket-proxyサービス・ポートの場合は、response.pyファイルを変更します。
# vi /usr/lib/python3.6/site-packages/webob/response.py
 
        # Initialize headers
        self._headers = None
        if headerlist is None:
            self._headerlist = []
        else:
            self._headerlist = headerlist
        self._headerlist.append(('Strict-Transport-Security', 'max-age=31536000'))  
                  
# systemctl restart ovirt-websocket-proxy
 
# curl -s -I -k https://localhost:6100
HTTP/1.1 405 Method Not Allowed
Server: WebSockify Python/3.6.8
Date: Wed, 13 Sep 2023 18:31:12 GMT
Strict-Transport-Security: max-age=31536000
Connection: close
Content-Type: text/html;charset=utf-8
Content-Length: 472