第1章 Red Hat Directory Server のセキュリティー保護


Red Hat Directory Server を使用して LDAP サービスのセキュリティーを向上させます。たとえば、クライアントと Directory Server 間の接続を暗号化し、暗号化された属性を Directory Server データベースに保存できます。レプリケーション changelog の暗号化、認証の設定、その他のセキュリティータスクの実行も可能です。

1.1. Directory Server への TLS 暗号化接続の有効化

デフォルトでは、Red Hat Directory Server は暗号化なしで LDAP サービスを提供します。セキュリティーを改善するには、Directory Server で TLS を設定して、レプリケーション環境内のクライアントや他のホストを有効にして、暗号化された接続を使用できます。これらのユーザーは、ポート 389 で STARTTLS コマンドを使用し、またはセキュアな接続にポート 636 で LDAPS プロトコルを使用できます。

バインド識別名 (DN) およびパスワード、または証明書ベースの認証を使用して、簡易認証で TLS を使用できます。

Directory Server の暗号化サービスは、Mozilla Network Security Services (NSS) (TLS およびベース暗号化機能のライブラリー) によって提供されます。NSS には、連邦情報処理標準 (FIPS) 140-2 認定であるソフトウェアベースの暗号化トークンが含まれています。

1.1.1. Directory Server への暗号化接続のさまざまなオプション

暗号化された接続を使用して Directory Server に接続するには、以下のプロトコルとフレームワークを使用できます。

LDAPS
LDAPS プロトコルを使用すると、接続は暗号化を使用して開始し、成功または失敗します。ただし、暗号化されていないデータはネットワーク経由で送信されません。このため、暗号化されていない LDAP で STARTTLS を使用する代わりに、LDAPS の使用が推奨されます。
LDAP 上の STARTTLS

クライアントは LDAP プロトコルで暗号化されていない接続を確立し、STARTTLS コマンドを送信します。コマンドに成功すると、それ以降の通信はすべて暗号化されます。

警告

STARTTLS コマンドが失敗し、クライアントが接続をキャンセルしないと、認証情報を含むすべてのデータが暗号化されずにネットワーク上に送信されます。

SASL
Simple Authentication and Security Layer (SASL) フレームワークを使用すると、Kerberos などの外部認証方法を使用してユーザーを認証できます。

1.1.2. Directory Server で NSS データベースをアンロックする方法

Directory Server は、証明書署名要求 (CSR)、秘密鍵、および証明書をネットワークセキュリティーサービス (NSS) データベースに保存します。新規インスタンスをインストールすると、インストーラーは NSS データベースを自動的に作成し、無作為にパスワードで保護します。インストーラーは、このパスワードを以下のファイルに保存します。

  • /etc/dirsrv/slapd-<instance_name>/pwdfile.txt: dsconf tls コマンドは、このファイルを使用して NSS データベースにアクセスします。
  • /etc/dirsrv/slapd-<instance_name>/pin.txt: このファイルには、Directory Server の起動時に NSS データベースを自動的にアンロックするトークンとパスワードが含まれます。

    • インスタンスを起動するたびに、Directory Server が NSS データベースのパスワードを要求するようにするには、このファイルを削除します。
    • パスワードを要求せずにインスタンスを自動的に起動するようにするには、NSS データベースパスワードを変更する場合にこのファイルを保存して更新します。

/etc/dirsrv/slapd-<instance_name>/pin.txt ファイルが存在しない場合は、暗号化を有効にして Directory Server を起動し、NSS データベースにパスワードを設定すると、動作は以下のようになります。

  • systemctl ユーティリティーまたは dsctl ユーティリティーが ns-slapd Directory Server プロセスを開始すると、systemd サービスはパスワードを要求して、自動的に systemd-tty-ask-password-agent ユーティリティーに入力を渡します。

    # dsctl <instance_name> start
    Enter PIN for Internal (Software) Token: (press TAB for no echo)
    Copy to Clipboard Toggle word wrap
  • まれに、ns-slapd Directory Server プロセスが systemctl ユーティリティーまたは dsctl ユーティリティーで開始されず、プロセスがターミナルから切り離されると、ns-slapd は、wall コマンドを使用してすべてのターミナルにメッセージを送信します。

    Broadcast message from root@server (Fri 2021-01-01 06:00:00 CET):
    
    Password entry required for 'Enter PIN for Internal (Software) Token:' (PID 1234).
    Please enter password with the systemd-tty-ask-password-agent tool!
    Copy to Clipboard Toggle word wrap

    パスワードを入力するには、次のコマンドを実行します。

    # systemd-tty-ask-password-agent
    Enter PIN for Internal (Software) Token:
    Copy to Clipboard Toggle word wrap

1.1.3. コマンドラインで Directory Server への TLS 暗号化接続の有効化

TLS による暗号化または証明書ベースの認証を使用するには、Network Security Services (NSS) データベースで証明書を管理する必要があります。インスタンスを作成した際に、dscreate ユーティリティーは /etc/dirsrv/slapd-<instance_name>/ ディレクトリーにこのデータベースを自動的に作成し、強力なパスワードで保護しました。

手順

  1. プライベートキーおよび証明書署名要求 (CSR) を作成します。外部ユーティリティーを使用して作成する場合は、この手順を省略します。

    • ホストが 1 つの名前のみで到達可能である場合は、以下を実行します。

      # dsctl <instance_name> tls generate-server-cert-csr -s "CN=server.example.com,O=example_organization"
      Copy to Clipboard Toggle word wrap
    • 複数の名前でホストにアクセスできる場合は、以下を行います。

      # dsctl <instance_name> tls generate-server-cert-csr -s "CN=server.example.com,O=example_organization" server.example.com server.example.net
      Copy to Clipboard Toggle word wrap

      最後のパラメーターとしてホスト名を指定した場合、このコマンドは DNS:server.example.com, DNS:server.example.net エントリーで SAN (Subject Alternative Name) 拡張を CSR に追加します。

    -s subject パラメーターで指定した文字列は、RFC 1485 に従って有効なサブジェクト名である必要があります。サブジェクトの CN フィールドが必要で、サーバーの完全修飾ドメイン名 (FQDN) の 1 つに設定する必要があります。このコマンドは、/etc/dirsrv/slapd-<instance_name>/Server-Cert.csr ファイルに CSR を保存します。

  2. 認証局 (CA) に CSR を送信し、発行した証明書を取得します。詳細は、CA のドキュメントを参照してください。
  3. CA が発行するサーバー証明書を NSS データベースにインポートします。

    • dsctl tls generate-server-cert-csr コマンドを使用して秘密鍵を作成した場合は、以下を入力します。

      # dsconf <instance_name> security certificate add --file /root/instance_name.crt --name "server-cert" --primary-cert
      Copy to Clipboard Toggle word wrap

      --name _certificate_nickname パラメーターで設定した証明書の名前を書き留めておきます。これは後のステップで必要になります。

    • 外部ユーティリティーを使用して秘密鍵を作成した場合は、サーバー証明書および秘密鍵をインポートします。

      # dsctl <instance_name> tls import-server-key-cert /root/server.crt /root/server.key
      Copy to Clipboard Toggle word wrap

      このコマンドでは、最初にサーバー証明書へのパスを指定してから、秘密鍵へのパスを指定する必要があります。このメソッドは、証明書のニックネームを常に Server-Cert に設定します。

  4. CA 証明書を NSS データベースにインポートします。

    # dsconf <instance_name> security ca-certificate add --file /root/ca.crt --name "Example CA"
    Copy to Clipboard Toggle word wrap
  5. CA 証明書の信頼フラグを設定します。

    # dsconf <instance_name> security ca-certificate set-trust-flags "Example CA" --flags "CT,,"
    Copy to Clipboard Toggle word wrap

    これにより、Directory Server が、TLS による暗号化および証明書ベースの認証に対して CA を信頼するように設定します。

  6. TLS を有効にし、LDAPS ポートを設定します。

    # dsconf <instance_name> config replace nsslapd-securePort=636 nsslapd-security=on
    Copy to Clipboard Toggle word wrap
  7. firewalld サービスで LDAPS ポートを開きます。

    # firewall-cmd --permanent --add-port=636/tcp
    # firewall-cmd --reload
    Copy to Clipboard Toggle word wrap
  8. RSA 暗号ファミリーを有効にし、NSS データベースセキュリティーデバイスおよびサーバー証明書名を設定します。

    # dsconf <instance_name> security rsa set --tls-allow-rsa-certificates on --nss-token "internal (software)" --nss-cert-name Server-Cert
    Copy to Clipboard Toggle word wrap

    デフォルトでは、NSS データベースのセキュリティーデバイスの名前は internal (software) です。

  9. オプション: プレーンテキストの LDAP ポートを無効にします。

    # dsconf <instance_name> security disable_plain_port
    Copy to Clipboard Toggle word wrap
  10. インスタンスの再起動

    # dsctl <instance_name> restart
    Copy to Clipboard Toggle word wrap

検証

  • LDAPS プロトコルを使用して Directory Server への接続を確立します。たとえば、クエリーを実行します。

    # ldapsearch -H ldaps://server.example.com:636 -D "cn=Directory Manager" -W -b "dc=example,dc=com" -x -s base
    Copy to Clipboard Toggle word wrap

    ldap_sasl_bind(SIMPLE): Can’t contact LDAP server (-1) エラーによりコマンドが失敗した場合は、デバッグレベル 1 でコマンドを再実行します。

    # ldapsearch -H ldaps://server.example.com:636 -D "cn=Directory Manager" -W -b "dc=example,dc=com" -x -s base -d 1
    Copy to Clipboard Toggle word wrap

1.1.4. Web コンソールを使用した Directory Server への TLS 暗号化接続の有効化

Web コンソールを使用して TLS 暗号化を設定できます。

前提条件

  • Web コンソールでインスタンスにログインしている。

手順

  1. Server Security Certificate Management Certificate Signing Request に移動し、Create Certificate Signing Request をクリックします。
  2. 証明書署名要求 (CSR)、共通名 (CN)、および組織 (O) の名前を設定します。

    ホストに複数の名前でアクセスできる場合は、Subject Alternative Names フィールドに代替名を設定します。

  3. Create Certificate Signing Request をクリックします。
  4. CSR テキストを表示し、これをコピーします。

    1. 表示する CSR の Node options アイコンをクリックして、View CSR を選択します。
    2. CSR コンテンツをコピーします。
  5. 認証局 (CA) に CSR ファイルを送信し、発行した証明書を取得します。詳細は、CA のドキュメントを参照してください。
  6. CA から証明書を取得したら、Server Security Certificate Management TLS Certificates に移動し、Add Server Certificate をクリックします。
  7. サーバー証明書に一意のニックネームを設定し、発行された証明書をアップロードし、Add Certificate をクリックします。

    後のステップには証明書のニックネームが必要であるため、証明書のニックネームを覚えておいてください。

  8. Server Security Certificate Management Trusted Certificate Authorities に移動し、Add CA Certificate をクリックします。
  9. CA 証明書に一意のニックネームを設定し、CA 証明書ファイルをアップロードし、Add Certificate をクリックします。
  10. オプション: Directory Server インスタンスのインストール時に TLS 暗号化を有効にしなかった場合は、有効にします。

    1. Server Security Settings に移動し、セキュリティースイッチを有効にします。
    2. ポップアップウィンドウで、Enable Security をクリックします。
    3. Security Setting ページで Save Configuration をクリックします。
  11. Security Configuration ページで Server Certificate Name を設定します。

    1. Server Security Security Configuration の順に移動します。
    2. Server Certificate Name ドロップダウンリストでサーバー証明書のニックネームを選択し、Save Configuration をクリックします。
    3. オプション: ドロップダウンリストに証明書のニックネームが表示されない場合は、Security Settings ページを更新して、前の手順を再度実行します。
  12. オプション: 636 以外の LDAPS ポートを使用する場合は、Server Server Settings に移動し、LDAPS ポートを設定して、Save をクリックします。
  13. firewalld サービスで LDAPS ポートを開きます。

    # firewall-cmd --permanent --add-port=636/tcp
    # firewall-cmd --reload
    Copy to Clipboard Toggle word wrap
  14. オプション: Server Security Security Configuration に移動し、Require Secure Connections チェックボックスを選択し、Save Configuration をクリックします。

    Directory Server は、プレーンテキストの LDAP ポートを無効にします。

  15. 右上隅の Actions をクリックし、Restart Instance を選択します。

1.1.5. 証明書の有効期限が切れた場合に Directory Server の挙動の管理

デフォルトでは、暗号化が有効で、証明書の有効期限が切れると、Directory Server は警告をログに記録し、サービスを起動します。この動作を変更するには、nsslapd-validate-cert パラメーターを設定します。以下の値を設定できます。

  • warn: Directory Server が起動し、期限切れの証明書に関する警告を /var/log/dirsrv/slapd-<instance_name>/error ログファイルに記録します。これはデフォルト設定です。
  • on: Directory Server は証明書を検証します。証明書の有効期限が切れると、インスタンスは起動できません。
  • off: Directory Server は証明書の有効期限を検証しません。インスタンスが起動し、警告は記録されません。

前提条件

  • TLS 暗号化を設定している。

手順

  • 以下のコマンドを使用して、nsslapd-validate-cert パラメーターを変更します。

    # dsconf <instance_name> config replace nsslapd-validate-cert=<value>
    Copy to Clipboard Toggle word wrap

1.1.6. NSS データベースのパスワードの変更

ネットワークセキュリティーサービス (NSS) データベースのパスワードを変更できます。たとえば、権限のない人にパスワードが知られるようになったときに変更します。

前提条件

  • 現在の NSS データベースのパスワードを知っている必要がある。

    Directory Server の起動時に自動的にデータベースのロックを解除するためのパスワードファイルを使用している場合は、/etc/dirsrv/slapd-<instance_name>/pin.txt ファイルに、パスワードがプレーンテキストで暗号化されずに保存されている。

手順

  1. 以下のコマンドを使用して NSS データベースのパスワードを変更します。

    # certutil -d /etc/dirsrv/slapd-<instance_name>/ -W
    
    Enter Password or Pin for "NSS Certificate DB":
    Enter a password which will be used to encrypt your keys.
    The password should be at least 8 characters long,
    and should contain at least one non-alphabetic character.
    
    Enter new password:
    Re-enter password:
    Password changed successfully.
    Copy to Clipboard Toggle word wrap
  2. NSS データベースのパスワードを要求せずに、パスワードファイルを使用して Directory Server を自動的に起動する場合は、以前のパスワードを /etc/dirsrv/slapd-<instance_name>/pin.txt 内の新しいパスワードに置き換えます。

    • NSS ソフトウェア暗号モジュールを使用する場合は、以下になります。

      Internal (Software) Token:password
      Copy to Clipboard Toggle word wrap
    • Hardware Security Module (HSM) を使用する場合:

      name_of_the_token:password
      Copy to Clipboard Toggle word wrap

検証

  • パスワードの入力が必要な NSS データベースで操作を実行します。たとえば、インスタンスの秘密鍵をリスト表示します。

    # certutil -d /etc/dirsrv/slapd-<instance_name>/ -K
    certutil: Checking token "NSS Certificate DB" in slot "NSS User Private Key and Certificate Services"
    Enter Password or Pin for "NSS Certificate DB":
    < 0> rsa      72cb03f87381abfbb6b9e78234e2e4502ad1bfc0   NSS Certificate DB:Server-Cert
    Copy to Clipboard Toggle word wrap

    新しいパスワードの入力後にコマンドにより想定される出力が表示される場合には、パスワードの変更に成功しました。

新しいインスタンスの作成すると、インストーラーは /etc/dirsrv/slapd-instance_name/pin.txt ファイルを自動的に作成し、ネットワークセキュリティーサービス (NSS) パスワードを要求せずに Directory Server を起動できるようになります。ただし、このファイルを削除すると再作成できます。

警告

このパスワードはプレーンテキストで保存されます。サーバーがセキュアでない環境で実行している場合は、パスワードファイルを使用しないでください。

前提条件

  • NSS データベースのパスワードを知っている必要がある。

手順

  1. 以下の内容で /etc/dirsrv/slapd-<instance_name>/pin.txt ファイルを作成します。

    • NSS ソフトウェア暗号モジュールを使用する場合は、以下になります。

      Internal (Software) Token:password
      Copy to Clipboard Toggle word wrap
    • Hardware Security Module (HSM) を使用する場合:

      name_of_the_token:password
      Copy to Clipboard Toggle word wrap
  2. ファイルの権限を設定します。

    # chown dirsrv:root /etc/dirsrv/slapd-<instance_name>/pin.txt
    # chmod 400 /etc/dirsrv/slapd-<instance_name>/pin.txt
    Copy to Clipboard Toggle word wrap

検証

  • インスタンスを再起動します。

    # dsctl <instance_name> restart
    Copy to Clipboard Toggle word wrap

    システムが NSS データベースのパスワードを要求しない場合、Directory Server はパスワードファイルを使用します。

1.1.8. Directory Server が使用する CA 証明書の Red Hat Enterprise Linux のトラストストアへの追加

Directory Server で TLS 暗号化を有効にすると、CA が発行した証明書を使用するようにインスタンスを設定します。クライアントが、LDAPS プロトコルまたは LDAP 上の STARTTLS コマンドを使用してサーバーへの接続を確立する場合、Directory Server はこの証明書を使用して接続を暗号化します。クライアントユーティリティーは CA 証明書を使用して、サーバーの証明書が有効であるかどうかを確認します。デフォルトでは、これらのユーティリティーは、サーバーの証明書を信頼していない場合に接続を取り消します。

例1.1 クライアントユーティリティーが CA 証明書を使用しない場合の接続エラーの可能性

  • dsconf

    # dsconf -D "cn=Directory Manager" ldaps://server.example.com:636 config get
    Error: {'desc': "Can't contact LDAP server", 'info': 'error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed (self signed certificate in certificate chain)'}
    Copy to Clipboard Toggle word wrap
  • ldapsearch

    # ldapsearch -H ldaps://server.example.com:636 -D "cn=Directory Manager" -W -b "dc=example,dc=com" -x
    Enter LDAP Password:
    ldap_sasl_bind(SIMPLE): Can't contact LDAP server (-1)
    Copy to Clipboard Toggle word wrap

Red Hat Enterprise Linux でクライアントユーティリティーを有効にして Directory Server が使用する証明書を検証するには、オペレーティングシステムのトラストストアに CA 証明書を追加します。

前提条件

  • ネットワークセキュリティーサービス (NSS) データベースのパスワードを知っている。

    Directory Server インスタンスのインストール時に生成されたパスワードを使用する場合は、/etc/dirsrv/slapd-instance_name/pwdfile.txt ファイルでこのパスワードをプレーンテキストで特定する。

手順

  1. Directory Server が使用する CA 証明書のローカルコピーがない場合は、以下を実行します。

    1. サーバーのネットワークセキュリティーサービス (NSS) データベースで証明書をリスト表示します。

      # certutil -d /etc/dirsrv/slapd-<instance_name>/ -L
      
      Certificate Nickname                       Trust Attributes
                                                 SSL,S/MIME,JAR/XPI
      
      Example CA                                 C,,
      Server-Cert                                u,u,u
      Copy to Clipboard Toggle word wrap
    2. NSS データベースの CA 証明書のニックネームを使用して、CA 証明書をエクスポートします。

      # certutil -d /etc/dirsrv/slapd-<instance_name>/ -L -n "Example CA" -a > /tmp/ds-ca.crt
      Copy to Clipboard Toggle word wrap
  2. CA 証明書を /etc/pki/ca-trust/source/anchors/ ディレクトリーにコピーします。

    # cp /tmp/ds-ca.crt /etc/pki/ca-trust/source/anchors/
    Copy to Clipboard Toggle word wrap
  3. CA 信頼データベースを再構築します。

    # update-ca-trust
    Copy to Clipboard Toggle word wrap

検証

  • LDAPS プロトコルを使用して Directory Server への接続を確立します。たとえば、クエリーを実行します。

    # ldapsearch -H ldaps://server.example.com:636 -D "cn=Directory Manager" -W -b "dc=example,dc=com" -x -s base
    Copy to Clipboard Toggle word wrap
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat