Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

LDAP over TLS 認証

Junos OS は、Junos OS を実行するデバイス(LDAPS クライアント)と LDAPS サーバー間の TLS セキュリティを使用した Junos OS ユーザー ログインの LDAP over TLS(LDAPS)認証および許可をサポートしています。詳細については、このトピックをお読みください。

TLS による LDAP 認証

Junos OS ユーザー認証の概要

Junos OS は、ローカルまたは一元化されたデータベースを使用してログインしようとするユーザーを認証します。Junos OS CLI または RPC を使用してユーザー名とパスワードを設定 したユーザーは、ローカル認証または許可を使用できます。Junos OS リリース 20.2R1 では、Junos OS はユーザー ログイン用の TLS セキュリティー(LDAPS)サポートを備えた LDAP をサポートし、LDAPS クライアントと LDAPS サーバー間のデータのセキュアな転送を保証します。

Junos OS リリース 20.2R1 より前のリリースでは、Junos OS は標準の RADIUS および TACACS プロトコルを介した一元的なユーザー認証と許可をサポートしています。

図 1: 一元化された認証、許可、アカウンティング(AAA)設定一元化された認証、許可、アカウンティング(AAA)設定

Junos OS は、以下のユーザー認証方法をサポートしています。

  • ローカル パスワード認証

  • LDAP over TLS(LDAPS)

  • RADIUS

  • TACACS+

TLS による LDAP 認証のメリット

  • Encryption and data integrity— LDAPS により、ユーザー認証情報が確実に暗号化され、通信のプライバシが維持されます。ユーザーは秘密鍵を使用してデータを暗号化し、秘密鍵を所有している受信者のみが署名者の公開鍵を使用して署名済みデータを暗号化解除できます。これにより、データの整合性が確保されます。

  • Enhanced security—TLS プロトコルにより、データがネットワーク経由で安全に送受信されます。TLS は証明書を使用して、高度なセキュリティを提供する通信の認証と暗号化を行います。

  • Scalability— LDAPS は、信頼性を損なうことなく、パフォーマンスと拡張性を向上させます。この機能を使用してサポートできるユーザーの数に制限はなく、ユーザーが独自の証明書を管理する場合、証明書認証にはクライアントとサーバー間のデータ交換のみが含まれます。

サポートされている機能とサポートされていない機能

  • Junos OS は、ユーザーの認証と許可に対してのみ LDAPS をサポートしています。Junos OS はアカウンティングをサポートしていません。LDAPS経由で実行できます。

  • LDAPS クライアントは、Junos OS の一部として実装および統合されます。ただし、Junos OS 上の LDAPS サーバーの実装はサポートされていません。代わりに、この機能は OpenLdap 2.4.46 サーバーを使用して実装されます。

LDAP の概要

Lightweight Directory Access Protocol(LDAP)は、インターネット プロトコル(IP)ネットワークを介して分散ディレクトリ情報サービスにアクセスし、維持するための標準的なアプリケーション プロトコルです。認証と許可は、次のような豊富な LDAP セキュリティー機能を使用して実行できます。

  • 検索

  • 取得

  • ディレクトリコンテンツの操作

トランスポートレイヤーセキュリティ(TLS)の概要

TLSは、インターネットに暗号化技術を提供するアプリケーションレベルのプロトコルです。ファイル転送、VPN 接続、インスタント メッセージング、VoIP(Voice over IP)など、ネットワーク経由でデータを安全に交換する必要があるアプリケーションに最も広く使用されているセキュリティ プロトコルです。TLS は、LDAPS クライアントと LDAPS サーバー間のデータ転送を保護するために、証明書と秘密鍵交換ペアを使用します。LDAPS は、Junos PKI(公開鍵基盤)から動的に取得されるローカル証明書を使用します。

TLSは、クライアントとサーバー間のデータの安全な転送を効果的に保証し、通信、認証、機密性、データ整合性のプライバシを保証します。証明書の交換、相互認証、暗号ネゴシエーションに TLS プロトコルを使用して、ストリームを改ざんや倫理的ハッキングの可能性から保護できます。

LDAPS 認証の仕組み

Junos OS オペレーターログインにセキュアな LDAPS サポートを提供するために、ユーザーの認証情報と設定は LDAPS サーバーまたは LDAP でサポートされるデータベースのいずれかに保存されます。Junos OS を実行しているデバイス上の LDAPS クライアントは、設定された LDAPS サーバーと通信します。これを実現するために、LDAPS クライアントが実装され、Junos OS を実行するデバイスの一部として統合されます。

図 2 は、LDAPS 認証プロセスを示しています。

図 2: LDAPS認証プロセスLDAPS認証プロセス
  1. リモート ユーザーは、SSH、TELNET、またはその他のログイン ユーティリティを使用して Junos OS を実行しているデバイスにログインします。

  2. LDAPS クライアント(Junos OS を実行するデバイス)は、TLS プロトコル要求を使用して LDAPS 許可サーバーとの TCP 接続を確立します。

  3. クライアントが TLS 応答を受信すると、クライアントとサーバーはそれらの ID を認証します。

  4. LDAPS クライアントは、バインド要求 (binddn および bindpw) を使用して LDAPS サーバーで事前に構成されたプロキシー・アカウントを使用して、それ自体を認証します。

  5. バインド操作が成功すると、LDAPS サーバーは確認応答を LDAPS クライアントに送信します。

  6. その後、LDAPS クライアントは、ユーザーがログインしようとするログイン認証情報を使用して、認証要求を LDAPS サーバーに送信します。

  7. 許可が成功すると、LDAPS クライアントはユーザーにログインが成功したことを通知します。ユーザーの許可データは、後で許可を適用するために使用されるファイルに保存されます。

  8. クライアントは LDAPS サーバーとの接続を閉じます。

TLS による LDAP 認証の設定

LDAP over TLS(LDAPS)とは、LDAPSクライアントとLDAPSサーバー間でTLSセキュリティを備えたJunos OSを実行しているデバイスにアクセスしようとするユーザーを認証する方法です。このトピックには、以下のタスクが含まれます。

認証順序の設定

Junos OS は、以下のユーザー認証方法をサポートしています。ローカルパスワード認証、LDAP over TLS(LDAPS)、RADIUS、TACACS+。

ステートメントを authentication-order 使用して、Junos OS を実行しているデバイスへのユーザー アクセスを検証する際に、Junos OS がさまざまな認証方法を使用する順序に優先順位を付けることができます。認証順序を設定しない場合、デフォルトでJunos OSは設定されたパスワードに基づいてユーザーを確認します。

ユーザーがログインを試み、オプションがldaps構成されている場合authentication-orderは、ユーザーの資格情報が外部 LDAP サーバーに渡されてユーザー検証が行われます。

認証順序を設定するには、階層レベルで authentication-order ステートメントを [edit system] 含めます。

例えば、

次に、認証注文入力オプションを示します。

  • ldaps— セキュア LDAP 認証サーバーを使用してユーザーを検証します。

  • password— ステートメントを階層レベルに含めて、ローカルで設定されたユーザー名とパスワードを authentication-order 使用してユーザーを [edit system login user] 検証します。

  • radiusRADIUS 認証サーバーを使用してユーザーを検証します。

  • tacplus—TACACS+ 認証サーバーを使用してユーザーを検証します。

LDAPS クライアントの設定

クライアントで LDAP 認証を設定するには、以下の手順にしたがってください。

  1. IPv4 または IPv6 サーバー アドレスを設定します。

    たとえば、次の IPv4 または IPv6 アドレスを設定します。

    サーバー・アドレスは、特定の LDAP サーバーに割り当てられ、情報をサーバーにルーティングするために使用される固有の IPv4 または IPv6 アドレスです。

  2. ユーザー・ディレクトリーの基本を指定する LDAP ベース (検索ベース) の識別名を構成します。ディレクトリ内のすべてのエントリーには識別名(DN)があります。DN は、ディレクトリー内のエントリーを一意に識別する名前です。

    たとえば、ドメインが example.com されている場合、構文は dc=example、dc=com になります。

  3. LDAPS クライアントを LDAPS サーバーにバインドするように、識別名 (binddn) を構成します。

    たとえば、ドメインが example.com されている場合、構文は dc=example、dc=com.cn は共通名です。

  4. LDAP( bindpw公開鍵)パスワードを設定します。

    たとえば、パスワードをシークレットとして設定するには、次の手順にしたがってください。

  5. LDAPS を有効にするには、ローカル証明書の名前を指定する必要があります。ローカル証明書および証明機関(CA)の設定については、「デジタル証明書の 設定」を参照してください。TLS 通信に使用するローカル証明書の名前を指定します。

    [オフラインで証明書に署名] を使用して request security pki generate-certificate-request. ローカルデジタル証明書要求を生成し、を使用して request security pki ca-certificate loadデバイスにインストールします。

    たとえば、ローカル証明書の名前を ldap-tls-cert として指定するには、以下の手順にしたがってください。

    注:

    証明書名は、使用して追加されるローカルデジタル証明書にマッピングされたパブリックキーとプライベートキーのペアの名前です。request security pki ca-certificate load

  6. LDAPS クライアントが接続できる LDAPS サーバー上のポートを指定します。

    例えば、LDAPS サーバーのポート番号を 432 に設定するには、以下の手順にしたがってください。

  7. デフォルトでは、Junos OS はデフォルトのルーティング インスタンスを介して LDAPS の認証および許可パケットをルーティングします。LDAPS は、デフォルト以外の VRF インスタンスの管理インターフェイスもサポートしています。

    management-interfaces ステートメントの mgmt_junos オプションを routing-instance 設定すると、管理インスタンスは mgmt_junos 、LDAPS パケットをルーティングします。

    例えば、

LDAPS サーバーの構成

OpenLDAP サーバーは、LDAP および LDAPS のオープン ソース実装の 1 つです。OpenLDAP 2.4.46サーバーを使用して、LDAP over TLS認証および許可機能を実装しました。

注:

最大 2 台の LDAPS サーバーを設定できます。

一般的な OpenLDAP サーバーを設定するには、以下の手順に応じます。

  1. LDAP サーバーのスキーマ・ファイルで、LDAP ユーザー許可パラメーターの属性タイプを定義します。

    一般的な OpenLDAP サーバーの場合、属性は次の nis.schema一部になります。

  2. ステップ 1 の一部として定義されたスキーマ・ファイルを LDAP サーバーの構成ファイルに組み込みます。一般的な OpenLDAP サーバーの場合、スキーマ・ファイル内の属性nis.schemaを定義し、そのファイルにスキーマ・ファイルを組み込むことで、LDAP サーバーに定義をnis.schemaslapd.confロードできます。
  3. LDAP データ交換形式(LDIF)ファイルでユーザー許可パラメーターを設定します。

    例えば、

  4. 実行中の LDAP サーバーにユーザー構成をロードします。一般的な OpenLDAP セットアップでは、次のコマンドを使用して LDIF ファイルをロードできます。

上記の手順を完了すると、どのクライアントも LDIF ファイルに記載されているユーザー名とパスワードを使用してログインできます。

TLS パラメーターの設定

TLS プロトコルにより、データがネットワーク経由で安全に送受信されます。TLS は証明書を使用して通信の認証と暗号化を行います。クライアントは、証明書と公開キーを要求してサーバーを認証します。必要に応じて、サーバーはクライアントから証明書を要求して、相互認証を保証することもできます。

TLS ハンドシェイクを成功させるには、サーバー証明書を検証するために、クライアントにサーバー証明機関(CA)プロファイルが必要です。サーバーは、設定に基づいてクライアント CA を持っている場合とない場合があります。ただし、サーバーがクライアント証明書を要求する場合、サーバーは証明書を検証するクライアント CA を持っている必要があります。その後、公開キーを使用してデータを暗号化し、秘密鍵をそれぞれ暗号化解除します。

CA プロファイルは、2 つのエンドポイント間のセキュアな接続を確立するために、特定の証明書に関連付けられたすべてのパラメーターを定義します。CA プロファイルの設定の詳細については、「 証明機関」を参照してください。

TLS パラメーターを構成するには、以下のタスクを実行する必要があります。

  • セキュリティ公開鍵基盤(PKI)traceoptions を設定します。

  • CA プロファイルを作成します。

  • 証明書の失効をチェックする方法を指定する失効チェックを作成します。

  1. PKI から sylog メッセージを取得する場合は、PKI traceoptions を設定します。
    • 最初のハンドシェイク中にTLS証明書検証からsyslogメッセージをトレースするには、次の手順にしたがってください。

    • syslog メッセージ出力をファイルにトレースするには、以下の手順にしたがってください。

      たとえば、出力をldap_pki ファイルまでトレースするには、次の手順にしたがっています。

  2. CA プロファイルを作成してサーバー証明書を検証します。

    信頼された CA によってルート証明書が発行されます。下位 CA は、ルート CA とエンド エンティティ証明書の間の CA です。ルート CA は自己署名で、下位のすべての CA の直下に署名します。これらの CA は、その下のエンティティ(追加の下位 CA または最終エンティティ証明書)に署名します。

    ルート CA を作成するには、以下の手順にしてください。

    下位 CA を作成するには、以下の手順に従います。

  3. 証明書の失効をチェックする方法を指定する失効チェックを作成します。

LDAPS 認証用のシステム管理パラメーターの設定

この構成の一環として、LDAP 認証ユーザーの管理パラメーターを作成します。

LDAPS 認証ユーザーに異なるユーザー テンプレートとログイン クラスを割り当てることができます。これにより、Junos OSを実行するデバイスに対して、LDAPS認証ユーザーに異なる管理権限を付与できます。デフォルトでは、LDAPS 認証ユーザーはユーザー・テンプレートが remote 構成されている場合に使用し、LDAPS 認証ユーザーはユーザー・テンプレートで指定された関連クラスに remote 割り当てられます。

ユーザー名 remote は Junos OS の特別なケースです。これは、リモート サーバーによって認証されるが、デバイスにローカルで構成されたユーザー アカウントを持っていないユーザーのテンプレートとして機能します。この方法では、Junos OS は、ローカルで定義されたアカウントを持たない認証されたユーザーに、リモート テンプレートのアクセス許可を適用します。リモート テンプレートにマッピングされたすべてのユーザーは、同じログイン クラスです。

Junos OS 設定では、認証が LDAPS サーバーでリモートで実行されるため、ローカル認証パスワードが設定されていないことを除き、ユーザー テンプレートは通常のローカル ユーザー アカウントと同じ方法で設定されます。

LDAPS 認証ユーザーにログイン クラス、アクセス許可、暗号化パスワードを割り当てるには、次の手順を実行します。

  1. ログイン クラスを割り当てます。

    例えば、

  2. ログイン クラスにアクセス許可を割り当てます。LDAPS 認証ユーザーに対するすべての権限または特定の権限を異なるユーザーに割り当てることができます。

    LDAPS 認証ユーザーにすべてのアクセス許可を割り当てるには、以下の手順に基います。

    例えば、

    異なるユーザーにアクセス許可を指定するには、次のいずれかのタスクを実行します。

    • Junos OS 設定で複数のユーザー テンプレートを作成します。

    • LDAPS サーバーに、認証されたユーザーに適用するテンプレートを指定させます。

    Junos OS 設定で複数のユーザー テンプレートを作成します。

    すべてのユーザー テンプレートに異なるログイン クラスを割り当てることができます。

    例えば、

    LDAPS サーバーに、認証されたユーザーに適用するテンプレートを指定させます。

    LDAPS サーバーがどのユーザー テンプレートを適用するかを指定するには、Junos OS デバイスで使用するユーザー テンプレートを示す JUNiperLocalUserName 属性(ベンダー 2636、タイプ 1、文字列)のジュニパー VSA(ベンダー固有の属性)を LDAPS Access-Accept メッセージに含める必要があります。juniperLocalUserName の文字列値は、デバイスで構成されたユーザー テンプレートの名前に対応する必要があります。

    前のステップの例では、文字列は RO、OP、または SU になります。LDAPS サーバーの構成は、使用するサーバーによって異なります。

    juniperLocalUserName 属性が Access-Accept メッセージに含まれていない場合、または文字列にデバイスに存在しないユーザー テンプレート名が含まれている場合、ユーザーは構成されている場合にユーザー テンプレートに remote 割り当てられます。構成されていない場合、ユーザーの認証は失敗します。

    ログイン後、リモートで認証されたユーザーは、ログインに使用されたのと同じユーザー名を保持します。ただし、ユーザーは割り当てられたユーザー テンプレートからユーザー クラスを継承します。

  3. ユーザーに暗号化パスワードを割り当てます。

    ステートメントでパスワードを指定する encrypted-password 必要があります。パスワードにスペースが含まれている場合は、引用符で囲みます。ローカル ルーターで使用される「シークレット」パスワードは、サーバーで使用されているパスワードと一致する必要があります。

    例えば、

ジュニパーネットワークスRADIUSとLDAPのベンダー固有属性

Junos OSは、認証サーバー上のジュニパーネットワークスのRADIUSとLDAPのVSA(ベンダー固有属性)の設定に対応しています。このVSAは、RADIUSまたはLDAPベンダー固有属性にカプセル化され、ベンダーIDはジュニパーネットワークスのID番号2636に設定にされています。

表 1は、設定可能なジュニパーネットワークスVSAの一覧です。

属性の中には、POSIX 1003.2で定義された拡張正規表現を利用できるものもあります。正規表現にスペース、オペレーターまたはワイルドカード文字が含まれる場合は引用符で囲みます。詳細については、以下をご覧ください。

表 1: ジュニパーネットワークスのRADIUSとLDAPのベンダー固有属性

お名前

説明

タイプ

長さ

文字列

Juniper-Local-User-Name

デバイスにユーザーがログインする際にこのユーザーに割り当てられたユーザーテンプレート名を示します。この属性は、Access-Acceptパケットのみで使用されます。

1

≥3

印刷可能なASCII文字を含む、1つまたは複数のオクテット。

Juniper-Allow-Commands

ユーザーのログインクラスのパーミッションビットで承認されたコマンドに加え、ユーザーによるコマンド実行を可能にする拡張正規表現を含みます。この属性は、Access-Acceptパケットのみで使用されます。

2

≥3

拡張正規表現の形式で印刷可能なASCII文字を含む、1つまたは複数のオクテット。

Juniper-Deny-Commands

ユーザーのログインクラスのパーミッションビットで承認されたコマンドを実行するユーザーパーミッションを拒否する拡張正規表現を含みます。この属性は、Access-Acceptパケットのみで使用されます。

3

≥3

拡張正規表現の形式で印刷可能なASCII文字を含む、1つまたは複数のオクテット。

Juniper-Allow-Configuration

ユーザーのログインクラスのパーミッションビットで承認されたステートメントに加えて、ユーザーによる設定ステートメントの表示および変更を可能にする拡張正規表現を含みます。この属性は、Access-Acceptパケットのみで使用されます。

4

≥3

拡張正規表現の形式で印刷可能なASCII文字を含む、1つまたは複数のオクテット。

Juniper-Deny-Configuration

ユーザーのログインクラスのパーミッションビットで承認された設定ステートメントを表示または変更するユーザーパーミッションを拒否する拡張正規表現を含みます。この属性は、Access-Acceptパケットのみで使用されます。

5

≥3

拡張正規表現の形式で印刷可能なASCII文字を含む、1つまたは複数のオクテット。

Juniper-Interactive-Command

ユーザーが入力したインターフェイスコマンドを示しています。この属性は、Accounting-Requestパケットのみで使用されます。

8

≥3

印刷可能なASCII文字を含む、1つまたは複数のオクテット。

Juniper-Configuration-Change

設定(データベース)の変更につながる対話型コマンドを示しています。この属性は、Accounting-Requestパケットのみで使用されます。

9

≥3

印刷可能なASCII文字を含む、1つまたは複数のオクテット。

Juniper-User-Permissions

サーバーが使用する情報を含み、ユーザーパーミッションを指定します。この属性は、Access-Acceptパケットのみで使用されます。

注:

RADIUSまたはLDAPサーバーがJuniper-User-Permissions属性を定義して、maintenanceパーミッションもしくはallパーミッションをユーザーに付与する場合、ユーザーのグループメンバーシップのリストは、UNIXホイールグループをリストに含めることはありません。su rootコマンドの実行などローカルシェルからの一部の操作にはホイールグループメンバーシップのパーミッションが必要です。ただし、ネットワークデバイスがmaintenanceまたはallのパーミッションでローカルユーザーアカウントを定義する際は、UNIXホイールグループへのメンバーシップが自動的にユーザーに付与されます。このため、必要なパーミッションを持つユーザーテンプレートアカウントを作成し、このユーザーテンプレートアカウントを各ユーザーアカウントに関連付けることをお勧めします。

10

≥3

印刷可能なASCII文字を含む、1つまたは複数のオクテット。

文字列は、スペースで区切られたパーミッションフラグのリストです。全体で、各フラグの名前を正確に指定しなければなりません。

アクセス権限レベルの概要」 を参照してください。

Juniper-Authentication-Type

ユーザーの認証に使用される認証方法(LDAPもしくはRADIUSサーバー)を示します。ローカルデータベースを使用してユーザーが認証される場合、属性の値には「local」が表示されます。RADIUSまたはLDAPサーバーを使用してユーザーを認証する場合、属性の値には「remote」が表示されます。

11

≥5

印刷可能なASCII文字を含む、1つまたは複数のオクテット。

Juniper-Session-Port

確立されたセッションの送信元ポート番号を示します。

12

整数のサイズ

整数

Juniper-Allow-Configuration-Regexps(RADIUSのみ)

ユーザーのログインクラスのパーミッションビットで承認されたステートメントに加えて、ユーザーによる設定ステートメントの表示および変更を可能にする拡張正規表現を含みます。この属性は、Access-Acceptパケットのみで使用されます。

13

≥3

拡張正規表現の形式で印刷可能なASCII文字を含む、1つまたは複数のオクテット。

Juniper-Deny-Configuration-Regexps(RADIUSのみ)

ユーザーのログインクラスのパーミッションビットで承認された設定ステートメントを表示、または変更するユーザーパーミッションを拒否する拡張正規表現を含みます。この属性は、Access-Acceptパケットのみで使用されます。

14

≥3

拡張正規表現の形式で印刷可能なASCII文字を含む、1つまたは複数のオクテット。

VSAの詳細については、RFC 2138、RADIUS(リモート認証ダイヤルインユーザーサービス)をご覧ください。