次の各セクションでは、NMAS HOTPに関する情報を提供します。
HOTPは、HMACベースのワンタイムパスワード(OTP)アルゴリズムです。OTPは、1回のログインセッションまたはトランザクションでのみ有効なパスワードです。OTPに関連したセキュリティ攻撃の発生リスクは比較的小さいので、OTPは従来の(静的な)パスワードよりも優れたパフォーマンスを提供します。不正侵入者が、サービスへのログインやトランザクションの実行に使用されたOTPを記録したとしても、そのOTPはすでに1回使用されていて有効ではなくなっているので、そのOTPを使用することはできません。すべてのOTPベースの認証には、OTPサーバとOTPクライアント(ハードウェア/ソフトウェアトークン)が必要です。NMASのOTPベースの認証の実装は、RFC 4226標準に基づきます。これまで個別にサーバに提示されていたNDSパスワードが、OTPに付加されるようになり、すべてのクライアントコンポーネントとそのユーザインタフェースを維持したままでパスワードベースの認証が拡張されました。eDirectoryサーバに対する認証は、LDAPベースのログインを使用することによって、HOTP機能を通して実行されます。
NDSD_TRY_NMASLOGIN_FIRST環境変数がtrueに設定されていることを確認してください。
詳細については、『NetIQ eDirectory What’s New Guide』の「How to Make Your Password Case-Sensitive
」のセクションを参照してください。
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ではこれはデフォルトで設定されます。
HOTP対応ユーザは、次のユーティリティのいずれかでNDSパスワードとHOTP値を連結させることによって、NCPログインを実行できます。
ndslogin
次に例を示します。
ndslogin user1.org -h org.com -p secret40338314
iManager
iMonitor
メモ:LDAP認証を実行するiManagerプラグインは、HOTP対応ユーザが使用するとエラーになります。
HOTPサーバモジュールは、NMASサーバコンポーネントの一部です。このサーバモジュールがクライアントから提示されたOTPを検証します。
次の属性をNMAS HOTPサーバ上で使用できます。
sasOTPCounter (ユーザ属性ごと)
sasOTPEnabled (ユーザ/直接のペアレントコンテナ/パーティションルート/ログインポリシーオブジェクトごと)
sasOTPDigits (ユーザ/直接のペアレントコンテナ/パーティションルート/ログインポリシーオブジェクトごと)
asOTPLookAheadWindow (ログインポリシーオブジェクトでツリー全体に対して設定されます)
sasOTPResync (ユーザ属性あたり9)
nmashotpconfユーティリティは、eDirectoryサーバ上でOTP属性を設定する環境設定ユーティリティです。
メモ:HOTPユーティリティは、Linux 64ビットプラットフォームでのみ使用できます。
サーバのカウンタ値はHOTP認証に成功するとインクリメントされ、トークンのカウンタは新しいHOTPがユーザから要求されるたびにインクリメントされます。サーバ上のカウンタ値とトークン上のカウンタは同期していない場合があります。
これを解決するには、ツリー全体の先読みまたは再同期ウィンドウの設定を実施する必要があります。サーバで受信されたHOTPがサーバのカウンタ値に対応していないことが検出された場合は、サーバが再同期ウィンドウ内の次のいくつかのHOTP値を再計算して、それらを受信されたHOTPに照らしてチェックすることができます。一致が確認された場合は、認証が成功して、一致したHOTPに対応するカウンタ値が、サーバカウンタとして設定されます。
認証を成功させるために、サーバカウンタは認証が成功する次のカウンタ値に設定されます。
ツリー全体の再同期ウィンドウの設定は、できるだけ小さくして、攻撃者がHOTP値の再作成を試みる余地を制限する必要があります。クライアントとサーバのカウンタの誤差がツリー全体の再同期ウィンドウの設定を超えている場合は、一時的にユーザ固有の再同期ウィンドウを大きい値に設定してHOTPベースの認証を試みることにより再同期することができます。
HOTPベースの認証を設定するには、nmashotpconfユーティリティを使用する必要があります。詳細については、環境設定のセクションを参照してください。
HOTPベースの認証用にeDirectoryユーザをプロビジョニングするには、RFC 4226標準に従って、次の設定手順を実行します。
ユーザ/コンテナ/パーティションルート/ログインポリシーオブジェクト(この順序は優先順位と同じになります)に対してHOTPを有効にします。
そのユーザに対してHOTP共有秘密鍵とカウンタを設定します。この2つの設定によって、HOTP値が決定されます。
ユーザ/コンテナ/パーティションルート/ログインポリシーオブジェクトに対してHOTP値の桁数を設定します。有効な桁数の範囲は6~9です。
再同期ウィンドウを次のように設定します。
ログインポリシーオブジェクトでツリー全体の再同期ウィンドウを設定します。
ユーザレベルでユーザ固有の再同期ウィンドウを設定します。これは、クライアントとサーバが同期していない場合にのみ必要です。
nashotpconfユーティリティを実行するには、次の手順を実行します。
NMAS HOTPユーティリティを解凍したディレクトリを指定します。
解凍されたファイルには、32ビットと64ビットのLinuxマシン用のlinuxディレクトリとlinux_x64ディレクトリが含まれています。
Linuxディレクトリとlinux_x64ディレクトリには、nmashotpconf実行可能ファイルとlibnmasext.soファイルが含まれています。
Linux 32ビットマシン上ではlinux/finalディレクトリに移動し、Linux 64ビットマシン上ではlinux_x64/finalディレクトリに移動します。
ルート認証局証明書をダウンロードして、ローカルに保存します。
詳細については、ルート認証局または公開鍵証明書のエクスポートを参照してください。
次に例を示します。
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シークレットの形式を指定します。
|
ユーザオブジェクトに対してシークレットとカウンタを設定するには、次のコマンドを実行します。
./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
HOTP対応ユーザの場合は、OTP桁が認証に使用されます。ndsconfigユーティリティは、以降の認証に同じOTP桁を使用するため、ndsconfig addが失敗します。同様に、ndsconfig upgradeも失敗します。
この問題を回避するため、ndsconfig add/upgradeを実行するユーザに対してはHOTPを有効にしないでください。
HOTP対応ユーザとして読み込み専用レプリカに要求を送信することによってLDAPログインを実行すると、LDAPチェーンが実行されません。読み込み専用レプリカは、実際のユーザが存在するサーバには要求を転送しません。レプリカは失敗し、不正なレプリカタイプのエラーが表示されます。
ユーザ再同期ウィンドウの値がすでに設定(たとえば、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)オプションの組み合わせを使用していることです。