24.6 NMAS HOTPベースのログイン

24.6.1 概要

HOTPは、HMACベースのワンタイムパスワード(OTP)アルゴリズムです。OTPは、1回のログインセッションまたはトランザクションでのみ有効なパスワードです。OTPに関連したセキュリティ攻撃の発生リスクは比較的小さいので、OTPは従来の(静的な)パスワードよりも優れたパフォーマンスを提供します。不正侵入者が、サービスへのログインやトランザクションの実行に使用されたOTPを記録したとしても、そのOTPはすでに1回使用されていて有効ではなくなっているので、そのOTPを使用することはできません。すべてのOTPベースの認証には、OTPサーバとOTPクライアント(ハードウェア/ソフトウェアトークン)が必要です。NMASのOTPベースの認証の実装は、RFC 4226標準に基づきます。これまで個別にサーバに提示されていたNDSパスワードが、OTPに付加されるようになり、すべてのクライアントコンポーネントとそのユーザインタフェースを維持したままでパスワードベースの認証が拡張されました。eDirectoryサーバに対する認証は、LDAPベースのログインを使用することによって、HOTP機能を通して実行されます。

LDAPベースのログイン

前提条件

ログイン方法

HOTP対応ユーザは、NDSパスワードとHOTP値を連結させることによって、LDAPバインドを実行できます。

次に例を示します。

ldapsearch -D cn=user1,o=novell -w secret40338314 -h 164.99.91.165 -p 389 -b   "o=novell" -s sub -LLL dn

メモ:eDirectory 9.0ではこれはデフォルトで設定されます。

NCPベースのログイン

HOTP対応ユーザは、次のユーティリティのいずれかでNDSパスワードとHOTP値を連結させることによって、NCPログインを実行できます。

  • ndslogin

    次に例を示します。

    ndslogin user1.org -h org.com -p secret40338314
    
  • iManager

  • iMonitor

メモ:LDAP認証を実行するiManagerプラグインは、HOTP対応ユーザが使用するとエラーになります。

24.6.2 インストール

サーバのインストール

HOTPサーバモジュールは、NMASサーバコンポーネントの一部です。このサーバモジュールがクライアントから提示されたOTPを検証します。

次の属性をNMAS HOTPサーバ上で使用できます。

  • sasOTPCounter (ユーザ属性ごと)

  • sasOTPEnabled (ユーザ/直接のペアレントコンテナ/パーティションルート/ログインポリシーオブジェクトごと)

  • sasOTPDigits (ユーザ/直接のペアレントコンテナ/パーティションルート/ログインポリシーオブジェクトごと)

  • asOTPLookAheadWindow (ログインポリシーオブジェクトでツリー全体に対して設定されます)

  • sasOTPResync (ユーザ属性あたり9)

nmashotpconfユーティリティのインストール

nmashotpconfユーティリティは、eDirectoryサーバ上でOTP属性を設定する環境設定ユーティリティです。

メモ:HOTPユーティリティは、Linux 64ビットプラットフォームでのみ使用できます。

24.6.3 カウンタの再同期

サーバのカウンタ値はHOTP認証に成功するとインクリメントされ、トークンのカウンタは新しいHOTPがユーザから要求されるたびにインクリメントされます。サーバ上のカウンタ値とトークン上のカウンタは同期していない場合があります。

これを解決するには、ツリー全体の先読みまたは再同期ウィンドウの設定を実施する必要があります。サーバで受信されたHOTPがサーバのカウンタ値に対応していないことが検出された場合は、サーバが再同期ウィンドウ内の次のいくつかのHOTP値を再計算して、それらを受信されたHOTPに照らしてチェックすることができます。一致が確認された場合は、認証が成功して、一致したHOTPに対応するカウンタ値が、サーバカウンタとして設定されます。

認証を成功させるために、サーバカウンタは認証が成功する次のカウンタ値に設定されます。

ツリー全体の再同期ウィンドウの設定は、できるだけ小さくして、攻撃者がHOTP値の再作成を試みる余地を制限する必要があります。クライアントとサーバのカウンタの誤差がツリー全体の再同期ウィンドウの設定を超えている場合は、一時的にユーザ固有の再同期ウィンドウを大きい値に設定してHOTPベースの認証を試みることにより再同期することができます。

HOTPベースの認証を設定するには、nmashotpconfユーティリティを使用する必要があります。詳細については、環境設定のセクションを参照してください。

24.6.4 環境設定

HOTPベースの認証用にeDirectoryユーザをプロビジョニングするには、RFC 4226標準に従って、次の設定手順を実行します。

  • ユーザ/コンテナ/パーティションルート/ログインポリシーオブジェクト(この順序は優先順位と同じになります)に対してHOTPを有効にします。

  • そのユーザに対してHOTP共有秘密鍵とカウンタを設定します。この2つの設定によって、HOTP値が決定されます。

  • ユーザ/コンテナ/パーティションルート/ログインポリシーオブジェクトに対してHOTP値の桁数を設定します。有効な桁数の範囲は6~9です。

  • 再同期ウィンドウを次のように設定します。

    • ログインポリシーオブジェクトでツリー全体の再同期ウィンドウを設定します。

    • ユーザレベルでユーザ固有の再同期ウィンドウを設定します。これは、クライアントとサーバが同期していない場合にのみ必要です。

nashotpconfユーティリティを実行するには、次の手順を実行します。

  1. NMAS HOTPユーティリティを解凍したディレクトリを指定します。

    解凍されたファイルには、32ビットと64ビットのLinuxマシン用のlinuxディレクトリとlinux_x64ディレクトリが含まれています。

    Linuxディレクトリとlinux_x64ディレクトリには、nmashotpconf実行可能ファイルとlibnmasext.soファイルが含まれています。

  2. Linux 32ビットマシン上ではlinux/finalディレクトリに移動し、Linux 64ビットマシン上ではlinux_x64/finalディレクトリに移動します。

  3. ルート認証局証明書をダウンロードして、ローカルに保存します。

    詳細については、ルート認証局または公開鍵証明書のエクスポートを参照してください。

    次に例を示します。

     nmashotpconf -h <host_name> [-p <ssl_port>] -D <login_dn> [-w <password>]
      -e <trusted_cert> -t <cert_type> [-r <resync_window>] [-y
      <user_resync_window>] [-u <hotp_dn> [-o <hotp_options>] [-d digits] [-c
      <counter>] [-s <secret> -f <secret_format>]] 
    

    オプション

    説明

    host_name

    LDAPサーバ名またはサーバのIPアドレスを指定します。

    ssl_port

    LDAPサーバ上のSSLポートを指定します。デフォルトは636です。

    login_dn

    ユーザのDNを指定します。

    パスワード

    ユーザDNのパスワードを指定します。

    trusted_cert

    ルート認証局証明書ファイルを指定します。

    cert_type

    ルート認証局証明書のエンコードタイプを指定します。たとえば、DERはderエンコードファイルを意味し、B64はb64エンコードファイルを意味します。

    encoded file digits

    HOTP値として使用する桁数を指定します。

    メモ:この設定がツリー内のすべてのユーザに適用されます。

    resync_window

    カウンタ再同期先読みウィンドウを指定します。

    user_resync_window

    カウンタユーザ再同期先読みウィンドウを指定します。

    hotp_dn

    HOTP属性を設定しているターゲットDNを指定します。ツリーレベルでHOTPを設定するには、ツリーレベルでHOTPを有効/無効にするか、ツリーレベルで[桁数]を設定してから、「cn=Login Policy,cn=Security」としてDNを指定します。

    hotp_options

    hotp_dnオプションに対してHOTPを有効または無効にします。HOTPを有効にするにはENABLEを指定し、HOTPを無効にするにはDISABLEを指定します。

    counter

    HOTPカウンタ値を指定します。カウンタ値の有効範囲は0~2147483647です。カウンタ値はhotp_dnオプションを通して設定されます。

    hotp_dn secret

    OATH HOTPシークレットを指定します。たとえば、16進形式のシークレットの未加工のバイト値は3132333435363738393031323334353637383930で、対応するASCII/拡張ASCII文字列は12345678901234567890です。

    secret_format

    OATH HOTPシークレットの形式を指定します。

    • STRING: この形式は、ASCII/拡張ASCII文字列に使用されます。たとえば、「12345678901234567890」と指定します。

    • RAW: この形式は、16進形式の未加工のバイト値に使用されます。たとえば、3132333435363738393031323334353637383930の場合は、31が最初の文字の16進値で、32が2つ目の文字の値になります。

    例:

    • ユーザオブジェクトに対してシークレットとカウンタを設定するには、次のコマンドを実行します。

      ./nmashotpconf -h 192.168.1.1 -p 636 -D cn=admin,o=novell -w novell   -e   /var/opt/novell/eDirectory/data/SSCert.der  -t  DER  -u cn=user1,o=novell  -c 0   -s   3132333435363738393031323334353637383930 -f  RAW
      
    • ユーザオブジェクトに対してOTPを有効にするには、次のコマンドを実行します。

      ./nmashotpconf -h 192.168.1.1 -p 636 -D cn=admin,o=novell -w novell   -e   /var/opt/novell/eDirectory/data/SSCert.der  -t  DER  -u cn=user1,o=novell  -o ENABLE 
      
    • ユーザオブジェクトに対してOTPを無効にするには、次のコマンドを実行します。

      ./nmashotpconf -h 192.168.1.1 -p 636 -D cn=admin,o=novell -w novell   -e   /var/opt/novell/eDirectory/data/SSCert.der  -t  DER  -u cn=user1,o=novell  -o DISABLE
      
      

      同様に、コンテナ/パーティションまたはルート/ログインポリシーオブジェクトに対してOTPを有効または無効にすることができます。

    • ユーザオブジェクトに対してOTP桁を設定するには、次のコマンドを実行します。

      ./nmashotpconf -h 192.168.1.1 -p 636 -D cn=admin,o=novell -w novell   -e /var/opt/novell/eDirectory/data/SSCert.der  -t  DER  -u cn=user1,o=novell  -d 6
      

      同様に、ペアレントコンテナ/パーティションルート/ログインポリシーオブジェクトに対してもOTP桁を設定できます。

    • ユーザ再同期ウィンドウを設定するには、次のコマンドを実行します。

      ./nmashotpconf -h 192.168.1.1 -p 636 -D cn=admin,o=novell -w novell   -y 5 -e   /var/opt/novell/eDirectory/data/SSCert.der  -t  DER  -u cn=user1,o=novell  
      
    • カウンタ再同期先読みウィンドウを設定するには、次のコマンドを実行します。

      ./nmashotpconf -h 192.168.1.1 -p 636 -D cn=admin,o=novell -w novell     -r 6          
      

24.6.5 当バージョンの注意事項

ndsconfig addは、HOTP対応管理者ユーザの場合は失敗します。

HOTP対応ユーザの場合は、OTP桁が認証に使用されます。ndsconfigユーティリティは、以降の認証に同じOTP桁を使用するため、ndsconfig addが失敗します。同様に、ndsconfig upgradeも失敗します。

この問題を回避するため、ndsconfig add/upgradeを実行するユーザに対してはHOTPを有効にしないでください。

HOTP対応ユーザとしての読み込み専用レプリカへのログインが失敗する

HOTP対応ユーザとして読み込み専用レプリカに要求を送信することによってLDAPログインを実行すると、LDAPチェーンが実行されません。読み込み専用レプリカは、実際のユーザが存在するサーバには要求を転送しません。レプリカは失敗し、不正なレプリカタイプのエラーが表示されます。

24.6.6 nmashotpconfユーティリティは、ユーザ再同期ウィンドウを変更できません。

ユーザ再同期ウィンドウの値がすでに設定(たとえば、2に)されている場合、その値がnmashotpconfユーティリティを使用して変更されると、次のエラーが表示されます。

ldap_modify_ext_s on HOTP DN failed: error code=19: Constraint violation

エラーの原因の1つは、ユーザ再同期値を変更するために、-o (OTPを有効または無効にするオプション)、-d (OTP桁)、-c (otpcouter)、および-y (user_resync_window)オプションの組み合わせを使用していることです。