22.2. ワンタイムパスワード

重要

OTP 認証の IdM ソリューションは、Red Hat Enterprise Linux 7.1 以降を稼働するクライアントのみでサポートされます。
ワンタイムパスワード (OTP) は、1 回の認証セッションのみで有効なパスワードです。これは一度使用すると、無効になります。従来の静的なパスワードとは異なり、認証トークンで生成される OTP は常に変更されます。OTP は、二要素認証の一部として使用されます。
  1. 従来のパスワードを使用したユーザー認証
  2. ユーザーは、認識済みの OTP トークンで生成された OTP コードを入力します。
二要素認証は、従来のパスワードだけを使用する認証に比べると安全であると考えられています。ログイン中に、侵入者により OTP が傍受された場合でも、傍受された OTP は、一旦認証に成功すると使用できなくなるので、侵入者が使用する頃にすでに無効になっています。

警告

現在、IdMの OTP サポートに関係のあるセキュリティーとその他の制限は以下の通りです。
  • 最も重要なセキュリティー制限として、システム全体でリプレイアタックの被害を受けやすくなる点です。レプリケーションは非同期で実行されるので、OTP コードはレプリケーション中に再利用でき、ユーザーは同時に 2 台のサーバーにログインできる可能性があります。ただし、包括的な暗号化があると、この脆弱性を悪用するのは困難です。
  • OTP 認証をサポートしていないクライアント経由では、ticket-granting ticket (TGT) を取得することができません。これは、mod_auth_kerb モジュールまたは Generic Security Services API (GSSAPI) を使用した認証などのユースケースに影響する可能性があります。

22.2.1. IdM でのOTP の機能

22.2.1.1. IdM でサポートされる OTP トークン

ソフトウェアおよびハードウェアトークン

IdM は、ソフトウェアおよびハードウェア両方のトークンをサポートします。

ユーザーおよび管理者が管理するトークン

ユーザーは自身のトークンを、管理者はユーザーの代わりにトークンを管理します。
ユーザー管理のトークン
ユーザーは、トークの作成、編集、削除など、Identity Management でユーザーが管理するトークンを完全に制御できます。
管理者が管理するトークン
管理者は、管理者が管理するトークンをユーザーのアカウントに追加し、ユーザーはこれらのトークンへの読み取り専用アクセスが割り当てられます。ユーザーはトークンの管理または変更パーミッションがなく、設定する必要はありません。
アクティブなトークンが 1 つしかない場合には、削除することも、無効にすることもできない点に注意してください。管理者は、自分のアクティブなトークンが 1 つの場合は削除や無効化はできませんが、別のユーザートークンは、アクティブなトークンが 1 つの場合でも削除または無効化することができます。

サポートされる OTP アルゴリズム

Identity Management には、以下にある、標準の OTP メカニズム 2 つをサポートしています。
  • HMAC ベースのワンタイムパスワード (HOTP) アルゴリズムは、カウンターに基づいています。HMAC は、Hashed Message Authentication Code (ハッシュメッセージ認証コード) を表しています。
  • 時間ベースのワンタイムパスワード (TOTP) アルゴリズムは、時間ベースの移動要素をサポートする HOTP の拡張機能です。

22.2.1.2. 利用可能な OTP 認証方法

OTP 認証を有効化する際に、以下の認証方法から選択できます。
二要素認証 (パスワード + OTP)
この方法では、ユーザーは常に標準のパスワードと OTP コードを入力するように求められます。
パスワード
この方法では、ユーザーは標準のパスワードのみを使用した認証を選択するオプションがあります。
RADIUS プロキシサーバー認証
OTP の検証用に RADIUS サーバーを設定する方法は「商用 OTP ソリューションからの移行」を参照してください。

グローバルおよびユーザー固有の認証方法

グローバルにも、または個別ユーザーにもこれらの認証方法を設定することができます。
  • デフォルトでは、ユーザー固有の認証方法の設定は、グローバルの設定よりも優先されます。認証方法がユーザーに設定されていない場合には、グローバルに定義された方法が適用されます。
  • ユーザー毎の認証方法を無効化することができます。これにより、IdM はユーザー毎の設定を無視して常にグローバルの設定を適用することができます。

複数の認証方法の統合

複数の方法を同時に設定すると、どちらか 1 つが成功すれば認証されます。以下に例を示します。
  • 二要素認証およびパスワード認証を設定すると、ユーザーはコマンドラインを使用する場合にはパスワード (1 つ目の要素) を指定する必要がありますが、OTP (2 つ目の要素) はオプションです。
    First Factor:
    Second Factor (optional):
  • Web UI ではユーザーは両要素を指定する必要があります。

注記

OTP などの特定の認証方法を設定する必要のある個別ホストまたはサービスもあります。一段階要素のみを使用してこのようなホストやサービスに対する認証を試行すると、アクセスが拒否されます。「ユーザーの認証情報をもとにサービスやホストへのアクセス制限」を参照してください。
ただし、RADIUS および他の認証方法が設定されている場合には、例外が少しあります。
  • Kerberos は常に RADIUS を使用しますが LDAP は RADIUS を使用しません。LDAP が認識するのは、パスワードと二要素認証のオプションのみです。
  • 外部の 2 要素認証プロバイダーを使用する場合は、使用しているアプリケーションから Kerberos を使用します。ユーザーがパスワードのみで認証するようにするには、LDAP を使用します。アプリケーションが Apache モジュールと SSSD を活用するようにすることが推奨されます。そうすることで、Kerberos か LDAP のいずれかを設定することができます。

22.2.1.3. GNOME のキーリングサービスサポート

IdM は、OTP 認証と GNOME キーリングサービスを統合します。GNOME キーリング統合では、一段階要素と二段階要素を別に入力する必要があります。
First factor: static_password
Second factor: one-time_password

22.2.1.4. OTP でのオフライン認証

IdM では、オフライン OTP 認証がサポートされますが、オフラインでログインできるようにするには、システムがオンラインの時にユーザーは静的なパスワードと OTP を別に入力して最初の認証を行う必要があります。
First factor: static_password
Second factor: one-time_password
オンラインでのログイン時に両パスワードを個別に入力すると、それ以降のログイン時に中央認証サーバーが利用できない場合でも認証できるようになっています。ユーザーがオフラインで認証を行うと、IdM は第一要素である従来の静的なパスワードだけを求める点に注意してください。
IdM は、First factor のプロンプトで静的なパスワードと OTP を 1 つの文字列として入力できるようにサポートします。ただし、オフラインの OTP 認証とは互換性がない点に注意してください。ユーザーが両要素を単一のプロンプトで入力した場合には、IdM は認証時に常に中央認証サーバに問い合わせる必要があるので、認証時にはシステムがオンラインの状態でなければなりません。

重要

ラップトップなどオフラインで操作するデバイスで OTP 認証を使用する場合は、Red Hat は静的なパスワードと OTP を個別に入力して、オフライン認証を利用可能にすることを推奨します。これを行わないと、システムがオフラインになった後にログインすると IdM により拒否されます。
OTP オフライン認証の恩恵を受けるには、静的と OTP パスワードを個別に入力する以外に、以下の条件も満たすようにしてください。
  • /etc/sssd/sssd.conf ファイルの cache_credentials オプションを True に設定すると、第一要素のパスワードのキャッシュが有効になります。
  • 第一要素の静的パスワードが、/etc/sssd/sssd.confcache_credentials_minimal_first_factor_length オプションで定義されているパスワード長の要件を満たしていること。デフォルトでは、少なくとも 8 文字以上指定する必要があります。オプションに関する情報は、sssd.conf(5) の man ページを参照してください。
/etc/sssd/sssd.confkrb5_store_password_if_offline オプションが true に設定されている場合でも、その時点で OTP がすでに無効になっている可能性があるので SSSD は Kerberos ticket-granting ticket (TGT) の更新は試行しません。このような状況で TGT を取得するには、両要素を使用して認証する必要があります。

22.2.2. OTP 認証の有効化

OTP 関連で利用可能な認証方法に関する詳細は「利用可能な OTP 認証方法」を参照してください。
以下を使用して OTP 認証を有効化します。

Web UI: OTP 認証の有効化

全ユーザーに対してグローバルに認証方法を設定するには、以下を実行します。
  1. IPA ServerConfiguration を選択します。
  2. User Options エリアで、必要な Default user authentication types を選択します。
    ユーザー認証方法

    図22.4 ユーザー認証方法

グローバル設定がユーザー別の設定で上書きされないようにするには、Disable per-user override を選択します。Disable per-user override を選択しない場合には、ユーザー別に設定した認証方法がグローバル設定よりも優先されます。
ユーザーベースで個別に認証方法を設定するには、以下を実行します。
  1. IdentityUsers を選択して、編集するユーザーの名前をクリックします。
  2. Account Settings エリアで、必要な User authentication types を選択します。
    ユーザー認証方法

    図22.5 ユーザー認証方法

コマンドライン: OTP 認証の有効化

全ユーザーに対してグローバルに認証方法を設定するには、以下を実行します。
  1. ipa config-mod --user-auth-type コマンドを実行します。たとえば、グローバル認証方法を二要素認証に設定するには以下を実行します。
    $ ipa config-mod --user-auth-type=otp
    --user-auth-type に入力できる値の一覧については、ipa config-mod --help コマンドを実行します。
  2. ユーザー別の上書きを無効にする、つまりユーザーの設定がグローバル設定を上書きしないようにするには、--user-auth-type=disabled オプションも追加します。たとえば、二要素認証にグローバル認証方法を設定してユーザーの上書きを無効にするには以下を設定します。
    $ ipa config-mod --user-auth-type=otp --user-auth-type=disabled
    --user-auth-type=disabled を設定しない場合には、ユーザー毎に設定した認証方法がグローバル設定よりも優先されます。
指定のユーザーに対して個別に認証方法を設定するには以下を行います。
  • ipa user-mod --user-auth-type コマンドを実行します。たとえば、user が二要素認証を使用するように設定するには以下を実行します。
    $ ipa user-mod user --user-auth-type=otp
複数の認証方法を設定するには、--user-auth-type を複数回追加します。たとえば、パスワードとに要素認証を全ユーザーにグローバルに設定するには、以下を実行します。
$ ipa config-mod --user-auth-type=otp --user-auth-type=password

22.2.3. ユーザー管理のソフトウェアトークンの追加

  1. 標準のパスワードでログインします。
  2. モバイルデバイスに FreeOTP Authenticator アプリケーションがインストールされていることを確認します。FreeOTP Authenticator のダウンロードについては、FreeOTP source page を参照してください。
  3. IdM Web UI またはコマンドラインでソフトウェアトークンを作成します。
    • Web UI でトークンを作成するには、OTP tokens タブで Add をクリックします。管理者としてログインしている場合は Authentication から OTP Tokens tab タブにアクセスできます。
      ユーザー用の OTP トークンの追加

      図22.6 ユーザー用の OTP トークンの追加

    • コマンドラインからトークンを作成するには ipa otptoken-add コマンドを実行します。
      $ ipa otptoken-add
      ------------------
      Added OTP token ""
      ------------------
        Unique ID: 7060091b-4e40-47fd-8354-cb32fecd548a
        Type: TOTP
      ...
      ipa otptoken-add に関する情報は、--help オプションを追加してこのコマンドを実行します。
  4. Web UI またはコマンドラインに QR コードが表示されます。QR コードを FreeOTP Authenticator でスキャンして、モバイルデバイスのトークンを提供します。

22.2.4. ユーザー管理の YubiKey ハードウェアトークンの追加

YubiKey トークなど、プログラム可能なハードウェアトークンは、コマンドラインからのみ追加できます。YubiKey ハードウェアをトークンの所有ユーザーとして追加するには、以下を実行します。
  1. 標準のパスワードでログインします。
  2. YubiKey トークンを挿入します。
  3. ipa otptoken-add-yubikey コマンドを実行します。
    • YubiKey に空のスロットがある場合には、コマンドは、その空のスロットを自動的に選択します。
    • 空のスロットがない場合には --slot オプションを使用して手動でスロットを選択する必要があります。以下に例を示します
      $ ipa otptoken-add-yubikey --slot=2
      これは、選択したスロットを上書きする点に注意してください。

22.2.5. 管理者としてユーザー用のトークン追加

管理者としてソフトウェアトークンを追加するには以下を実行します。
  1. 管理者としてログインしていることを確認します。
  2. モバイルデバイスに FreeOTP Authenticator アプリケーションがインストールされていることを確認します。FreeOTP Authenticator のダウンロードについては、FreeOTP source page を参照してください。
  3. IdM Web UI またはコマンドラインでソフトウェアトークンを作成します。
    • Web UI でトークンを作成するには、AuthenticationOTP Tokens を選択して、OTP トークンの一覧の上部にある Add をクリックします。Add OTP Token フォームで、トークンの所有者を選択します。
      管理者が管理するソフトウェアトークンの追加

      図22.7 管理者が管理するソフトウェアトークンの追加

    • コマンドラインからトークンを作成するには --owner オプションを指定して ipa otptoken-add コマンドを実行します。以下に例を示します。
      $ ipa otptoken-add --owner=user
      ------------------
      Added OTP token ""
      ------------------
        Unique ID: 5303baa8-08f9-464e-a74d-3b38de1c041d
        Type: TOTP
      ...
  4. Web UI またはコマンドラインに QR コードが表示されます。QR コードを FreeOTP Authenticator でスキャンして、モバイルデバイスのトークンを提供します。
管理者として、YubiKey トークンのようなプログラム可能なハードウェアトークンを追加するには、以下の手順に従います。
  1. 管理者としてログインしていることを確認します。
  2. YubiKey トークンを挿入します。
  3. --owner オプションを指定して ipa otptoken-add-yubikey コマンドを実行します。以下に例を示します。
    $ ipa otptoken-add-yubikey --owner=user

22.2.6. 商用 OTP ソリューションからの移行

商用の OTP ソリューションから IdM をネイティブとする OTP ソリューションに、大規模なデプロイメントを移行できるように、IdM では、OTP 確認をサードパーティーの RADIUS サーバーにオフロードする方法をユーザーのサブセットに提供します。管理者は、複数の個別の RADIUS サーバーを含む RADIUS プロキシーのセットを作成します。次にこれらプロキシーセットのひとつをユーザーに割り当てます。ユーザーに RADIUS プロキシーのセットが割り当てられている限り、IdM は他のすべての認識メカニズムを迂回します。

注記

IdM では、サードパーティーシステムでのトークン管理やトークンの同期をサポートしていません。
OTP 確認用の RADIUS サーバーを設定し、ユーザーをプロキシーサーバーに追加するには、以下の手順に従います。
  1. radius のユーザー認証方法が有効になっていることを確認します。「OTP 認証の有効化」を参照してください。
  2. ipa radiusproxy-add proxy_name コマンドを実行して RADIUS プロキシーを追加します。このコマンドにより、必要な情報を入力するように求められます。
  3. ipa user-mod radiususer --radius=proxy_name コマンドを実行して、追加したプロキシーにユーザーを割り当てます。
  4. 必要に応じて、ipa user-mod radiususer --radius-username=radius_user を実行し、RADIUS に送信するユーザー名を設定します。
これで、ユーザー OTP 認証が RADIUS プロキシーサーバーで処理されるようになります。
ユーザーが IdM ネイティブの OTP システムに移行する準備ができたら、そのユーザーへの RADIUS プロキシーの割り当てを削除します。

22.2.7. 現在の認証情報の二要素認証へのプロモート

パスワードと二要素認証の両方を設定しているにも関わらず、パスワードでのみ認証を行った場合には、特定のサービスやホストへのアクセスが拒否される可能性があります (「ユーザーの認証情報をもとにサービスやホストへのアクセス制限」 を参照)。このような場合には、もう一度認証を行うことで、一要素から二要素認証にプロモートしてください。
  1. 画面をロックします。画面ロックのデフォルトのキーボードショートカットは Super key+L です。
  2. 画面のロックを解除します。認証情報を求められたら、パスワードと OTP の両方を使用します。

22.2.8. OTP トークンの再同期