PAM システム構成ファイル

IBM® Verify Gateway for Linux® PAM and AIX® PAM (Pluggable Authentication Modules)を構成する際には、以下のパラメーターを使用できます。

Linux®では、すべての PAM 対応サービスの /etc/pam.d に、サービスと同じ名前のファイルがあります。 例えば、Redhat 7 では、sshd サービス・ファイルの /etc/pam.d/sshd の内容は以下になります。
#%PAM-1.0
auth       required     pam_sepermit.so
auth       substack     password-auth
auth       include      postlogin
...
AIXでは、すべての PAM 対応サービスは /etc/pam.conf ファイルにあります。 例えば、 AIX 7.2 の場合、 /etc/pam.conf ファイルには以下が含まれます。
#
# Authentication
#
authexec      auth     required      pam_aix
dtaction      auth     required      pam_aix
dtsession     auth     required      pam_aix
...
各行の形式は、以下のとおりです。
module_interface control_flag module_name [module_arguments]
注: ポンド記号文字 (#) は、PAM 構成でのコメントの開始を示します。 この文字により、構成で意図しない結果が生じる可能性があります。

モジュール・インターフェース

この pam_ibm_auth.so モジュールでは、 auth の module_interface タイプのみがサポートされます。

モジュール名

モジュール名は pam_ibm_auth.so です。

モジュール引数

以下の例は、引数を含む、PAM モジュールのエントリーを示しています。
auth sufficient pam_ibm_auth.so auth_method=choice-then-otp 
以下の引数が pam_ibm_auth.so モジュールで受容されます。
注: PAM では、引数にスペースが含まれている場合、引数を大括弧で囲む必要があります。 例えば、以下のとおりです。
[otp-prompt=Enter OTP %C- ]
user_env= {name}
下流のPAMモジュール用に、" {name} = {user-json} " を含むPAM環境変数を追加する。 {user-json} の値は、 IBM Verify のユーザー情報を JSON 形式で含む文字列である。 主に、PAMモジュール開発者が IBM PAMモジュールと統合するのを支援するために使用される。
prompt_choice_start= {prompt}
{prompt} ストリングは、 2FA 選択項目のリストの直前に出力されます。 例えば、 {prompt} に「以下のいずれかを選択してください: \n」が含まれていると、次のように表示されます。
Choose one of:
1) user@us.ibm.com
2) 15551234567
3) TOTP
Your choice (1->3):
prompt_choice_end= {prompt}
{prompt} ストリングは、 2FA 選択項目のリストの直前に出力されます。 この {prompt} 内の %T 値は、選択項目の総数を表す数値に置き換えられます。 例えば、 {prompt} に「Your choice (1-> %T):」が含まれている場合、次のように表示されます。
Choose one of:
1) user@us.ibm.com
2) 15551234567
3) TOTP
Your choice (1->3):
prompt_trans_email= {prompt}
prompt_trans_sms= {prompt}
prompt_totp= {prompt}
prompt_email= {prompt}
prompt_sms= {prompt}
prompt_voice= {prompt}
prompt_device_presence= {prompt}
prompt_device_biomertic= {prompt}
これらの引数は、 2FA タイプごとにプロンプト・オプションをカスタマイズします。 以下の置換を適用できます。
  • %I 2FA オプション索引
  • %N 2FA オプション名に関連付けられている値 (例えば、E メール・アドレス)
  • %T 選択項目の総数
例えば、prompt_trans_sms = "%I) Unvalidated SMS %N ¥ n" の場合、次のように表示されます。
Choose one of:
1) user@us.ibm.com
2) Unvalidated SMS 15551234567
3) TOTP
Your choice (1->3):
注: これらのオプションを使用すると、PAM モジュールの引数が非常に長くなり、管理が困難になる可能性があります。 この多くのモジュール引数を /etc/pam_ibm_auth.json ファイルに移動できるようにするには、このファイルの「pam」オブジェクトの下の「additional-args」フィーチャーを参照してください。
device_prompt= {prompt}
設定されている場合、ユーザーが 2FA デバイスで承認する必要があるときに、指定されたメッセージがユーザーに対して表示されます。 SSH でのこれの使用。 には制限があります。 SSH サーバーの中には、メッセージを渡す (入力を求めるプロンプトも出さない) ものもあれば、渡さないものもあります。 デフォルトでは、プロンプトは送信されず、アラートはユーザーのデバイスに依存します。
ユーザー名 {attr_name}

PAMに提供されたユーザー名を、 Verify ユーザーに含まれる属性と一致することに基づいて、 IBM Verify ユーザーにマップする。 例えば、PAMユーザー名をother Usernameと呼ばれる Verify ユーザーカスタム属性に追加することができます。 そのカスタム属性が指定するもの

user_name_attr=urn:ietf:params:scim:schemas:extension:ibm:2.0:User:customAttributes.otherUserName

デフォルトでは、PAMユーザー名に一致する Verify ユーザーを探すために、ユーザー属性 "userName" が使用される。

gecos_match= {regex}
gecos_replace= {replace_format}
これらの引数は、 gecos_field/gecos_separator メソッドの代替として使用されます。 {regex} は、ユーザーの GECOS 値を突き合わせるために使用され、 gecos_replace フォーマットに指定するための値を抽出します。 正規表現について詳しくは、正規表現 (7) のマニュアル・ページを参照してください。

{replace_format} の値は、 Verify ユーザー名の生成に使用される。 {replace_format} 、任意の$N(Nは1~9)は、 {regex} のマッチから、対応する正規表現アトム(pat)に置き換えられる。

例えば、以下のとおりです。
[gecos_match=^([^/\]+)/([^/\]+)/([^/\]+)] [gecos_replace=$3/$1@MyRealm]
注: PAM [arg] メソッドを使用する場合、引数に埋め込まれたすべての] 文字は、¥ を使用して引用符で囲む必要があります。

GECOS フィールドが "Test User/+15551234567/ibm.com" の場合、生成されるユーザーは "ibm.com/Test User@MyRealm" です。

debug
この引数は標準 PAM モジュール・オプションです。 syslog() 呼び出しを使用して、デバッグ情報をシステム・ログ・ファイルに記録します。
nowarn
この引数は標準 PAM モジュール・オプションです。 nowarn オプションにより、パスワード有効期限の警告を含む警告の生成が無効になります。
ibm_auth_config={config-file}
指定がない場合、デフォルトは for Linux および /etc/pam_ibm_auth.json UNIX™ システムです。 このファイルには、 Verify サーバー接続の詳細を持つ IBM Auth API 構成が含まれています。 モジュール設定ファイルを参照してください。
auth_method={auth_method}
この引数はオプションであり、デフォルトは TOTP 検証です。 この引数は、ユーザーを認証するために必要な認証の方式を指定します。 以下の認証方式のリストには、最初にパスワードを受け入れる方式がいくつか含まれます。 これらの方式でのパスワードは、UNIX パスワードではなく、 Verify ユーザー・パスワードを参照します。
注: 以前に開始された PAM モジュール (例えば、 pam_unix.so) にパスワードが指定された場合、そのパスワードは、パスワードを必要とするすべての Verify auth methods で使用されます。 以前に指定したパスワードと Verify パスワードが一致しない場合、認証は失敗します。 この問題は既知の制限です。
表 1. 許容値
説明
パスワード 有効な Verify パスワードが必要です。
password-and-totp Verify パスワードと TOTP 値を 1 つの値で指定する必要があります。 パスワードと TOTP 値のどちらを値の先頭に指定するかと、2 つの値の区切りとして使用する記号を構成できます。 デフォルトの形式は、TOTP:password です。
password-then-totp Verify パスワードを指定する必要があります。正常に指定した場合は、TOTP 値が要求され、検証されます。
totp TOTP 値が求められ、検証されます。
password-then-smsotp Verify パスワードを指定する必要があります。正常に指定した場合は、OTP 値を含む SMS メッセージがユーザーの登録済みモバイル・デバイスに送信されます。 次に、PAM モジュールがユーザーに SMSOTP 値を要求して、検証します。
smsotp SMS による OTP 検証が開始されて、SMS OTP 値が求められ、検証されます。
password-then-emailotp Verify パスワードを指定する必要があります。正常に指定した場合は、OTP 値を含む E メール・メッセージがユーザーに送信されます。 PAM モジュールが EmailOTP 値を要求して、検証します。
emailotp E メールによる OTP 検証が開始されて、PAM モジュールが E メール OTP 値を要求して、検証します。
password-then-choice-then-otp Verify パスワードを指定する必要があります。正常に指定した場合、ユーザーは OTP 登録のいずれかを選択するように求められます。 選択すると、OTP 検証が開始され、ユーザーに OTP 値の入力を求めるプロンプトが出されます。
注:
  • ユーザーの登録済み OTP 方式が 1 つしかない場合、選択ステップはスキップされ、ユーザーはその OTP 値をすぐに要求されます。
  • ユーザーが OTP 登録を行っていない場合は、"reject-on-missing-auth-method" が有効になります。
  • オプションの "add_devices_to_choice" が有効である場合は、デバイスのオプションがリストに追加されます。 追加内容の詳細については、device 認証方式を参照してください。
  • オプションの "transients_in_choice" が有効である場合は、一時的な E メールおよび sms のソースがオプションとしてリストされます。
  • オプションの "voice_in_choice" が有効である場合は、音声 OTP がオプションとしてリストされます。
choice-then-otp ユーザーは OTP 登録の 1 つを選択するように求められます。 選択すると、OTP 検証が開始され、ユーザーに OTP 値の入力を求めるプロンプトが出されます。
注:
  • ユーザーの登録済み OTP 方式が 1 つしかない場合、選択ステップはスキップされ、ユーザーはその OTP 値またはデバイス検証をすぐに要求されます。
  • ユーザーが OTP 登録を行っていない場合は、reject-on-missing-auth-method が有効になります。
  • オプションの "add_devices_to_choice" が有効である場合は、デバイスのオプションがリストに追加されます。 追加内容の詳細については、device 認証方式を参照してください。
  • オプションの "transients_in_choice" が有効である場合は、一時的な E メールおよび sms のソースがオプションとしてリストされます。
  • オプションの "voice_in_choice" が有効である場合は、音声 OTP がオプションとしてリストされます。
password-then-device Verify パスワードを指定する必要があります。正常に指定した場合、ユーザーは電話で IBM Verify アプリを使用して自分自身を検証するように求められます。
装置 ユーザーは電話で IBM Verify アプリを使用して自身を検証することを求められます。 複数のデバイスが使用可能な場合は、ユーザーに選択を求めるプロンプトが出されます。
注: オプション "add_devices_to_choice="は、 fingerprintuserPresenceのどちらを使用するかを決定します。 特定のデバイスに使用できるのは、この 2 つの属性のいずれかのみです。
password-then-transsmsotp Verify パスワードを指定する必要があります。正常に指定した場合、ユーザーは、SMS によって携帯電話に送信された OTP を指定するように求められます。 電話番号は、ユーザー・レコードに設定されている番号です。
transsmsotp ユーザーは SMS によって携帯電話に送信された OTP を指定するように求められます。 電話番号は、ユーザー・レコードに設定されている番号です。
password-then-transemailotp Verify パスワードを指定する必要があります。正常に指定した場合、ユーザーは E メールで送信された OTP を指定するように求められます。 E メール・アドレスは、ユーザー・レコードに設定されているアドレスです。
transemailotp ユーザーは E メールで自分に送信された OTP を指定するように求められます。 E メール・アドレスは、ユーザー・レコードに設定されているアドレスです。
voiceotp ユーザーの電話に対して呼び出しが行われ、音声メッセージによって、ログインの検証に使用する必要がある OTP 値がユーザーに通知されます。
パスワード・テン・ヴォイス・オートピー IBM Verify パスワードが必要です。 正常に提供されると、ユーザーの電話に対して通話が行われ、ログインの検証に使用される OTP 値をユーザーに通知するボイス・メッセージが表示されます。
パスワード・アンド・トットプ・オア・デバイス ユーザーから提供されたパスワードにTOTP値が検出された場合、「password-and-totp」と同等の方法が使用される。 詳しくはpassword-and-totpを参照のこと。

ユーザーから提供されたパスワードにTOTP値が検出されない場合、「password-and-device」と同等の方法が使用される。 詳細については、password-then-deviceを参照のこと。

注:ユーザの実際のパスワードが6桁の数字とセパレータで始まるか終わる場合、RADIUSサーバはそれを埋め込まれたTOTP値と勘違いする可能性がある。 例えば、'password-firstオプションはfalseに設定され、パスワードは6桁の数字とセパレーターで始まる。 同様に、trueに設定され、パスワードがセパレーターと6桁の数字で終わる場合、同じ条件が発生する。 いずれの状況でも、デバイス・プッシュをRADIUS認証の第2要素として使用することはできない。 RADIUSサーバーはこれをTOTP値として解釈し、検証を試みる。 バリデーションは失敗し、認証は拒否される。
"password" が認証方式値の一部でない場合 (例えば、"device")、ローカル・パスワードを認証して 2 要素を行うために libpam_ibm_auth.so モジュールは標準 UNIX/Linux PAM モジュールを前に付けることができます。 また、これはパスワードなしの認証の場合は除外することもできます。
accept_on_missing_auth_method
この引数はオプションです。 設定すると、ユーザーが第 2 要素認証に登録されていない場合、そのユーザーは認証されます。 このオプションを設定せず、ユーザーが第 2 要素認証に登録されていない場合、そのユーザーは認証されません。
otp_prompt={promt_str}
この引数はオプションであり、デフォルトは英語のストリング "Enter OTP %C- " です。 このストリングは、ユーザーが OTP の入力を要求されるときに表示されます。 プロンプトの %C は OTP 相関 (TOTP の場合は空ストリング) に置換されます。 プロンプトの %% は 1 個の % に置換されます。
password_first
この引数はオプションです。 "password-and-totp" 認証方式にのみ影響し、ユーザーが指定する必要があるストリング内のパスワードと TOTP 値の順序がこの引数で決まります。 通常、パスワードは、ストリングの末尾の区切り記号の後に指定されます (totp:password)。 引数が設定される場合は、パスワードはストリングの先頭の区切り記号の前に指定する必要があります (password:totp)。
password_separator={sep_char}
この引数はオプションであり、デフォルトはパスワード区切り記号の : (コロン) です。 "password-and-totp" 認証方式にのみ影響し、TOTP とパスワードの値を区切るために必ず使用する文字を指定します。
verify_method_order={order}
この引数はオプションであり、デフォルトは "fingerprint,userPresence" です。 このオプションで、2 つのどちらが優先されるかを選択します。 デフォルトの順序は、指紋を優先します (存在する場合)。
注: 「add_devices_to_choice」が使用可能になっている場合、 "device" auth_method オプションは、 fingerprint または userPresenceのいずれか 1 つのメソッドのみを使用します。
verify_message={message}
この引数はオプションで、デフォルトは以下のようになります。"Do you approve the request from {hostname}?"ここで、{hostname} は、PAM モジュールが動作しているホスト名に置き換えられます。 "device" auth_method が使用されている場合、ユーザーにアクセスを検証するようにプロンプトが出される際、ユーザーのデバイスにこのメッセージが表示されます。
append={string}
この引数はオプションであり、デフォルトは "" です。 UNIX ユーザー名を Verify ユーザー名にマップするプロセスの終わりに、このストリングが結果の Verify ユーザー名に付加されます。 典型的なユース・ケースは、 Verify ユーザー・ドメインをユーザーに追加することです。例えば、 w3id ユーザー・ドメインの場合は「@www.ibm.com" 」です。
add_devices_to_choice
この引数はオプションであり、デフォルトは "choice-then-otp" および "password-then-choice-then-otp" の認証方式にユーザーのデバイス登録を追加しません。 この引数を設定すると、デバイス登録は 2FA のユーザー選択項目のリストに追加されます。
exempt_group={unix_group_name}
この値はオプションであり、デフォルトは exempt_group なしです。 この引数を設定すると、指定された UNIX グループを使用して、UNIX ユーザー・ログインが 2FA 認証から免除されるかどうかが判別されます。 グループに存在する UNIX ユーザーは除外対象とされ、2FA を求められることはありません。
2fa_group={unix_group_name}
この値はオプションです。 このオプションが設定されている場合、指定されたUNIXグループが、UNIXユーザーのログインに2FAが必要かどうかを判断するために使用される。 このオプションが設定され、UNIXユーザーがグループに属していない場合、ユーザーは2FAのプロンプトを表示されない。
retry={num_retries}
この引数はオプションであり、デフォルトは 3 です。 これは、ユーザーが無効な 2FA 値 (誤った TOTP 値など) を指定した場合にユーザーが実行できる再試行回数を定義します。 また選択ステップでの、使用する OTP タイプの選択の再試行回数も定義します。
failmode_insecure
この値はオプションであり、デフォルトはセキュアな failmode です。 この引数は、 Verify PAM モジュールが Verify サーバーに接続できない場合の動作に影響します。 この引数を設定すると、 Verify サーバーに到達できない場合に 2FA 認証が成功します。 このオプションが設定されていない場合、 Verify サーバーに到達できないと、 2FA を必要とするすべての認証は失敗します。
gecos_field={field_number}
この引数はオプションであり、デフォルトではユーザーの GECOS フィールドを使用しません。 1 から 32 の範囲の値に設定すると、UNIX ユーザーから指定された GECOS フィールドが Verify ユーザー名として使用されます。 付加オプションは、この値に依然として影響を及ぼします。 最初の GECOS フィールドが、フィールド番号 1 として定義されます。
gecos_separator={char}
この引数はオプションであり、デフォルトは , (コンマ) です。 この値は GECOS フィールド分離文字を定義します。
id={pam_module_id}
この引数はオプションであり、デフォルトは "pam_ibm_auth" です。 ユーザーを認証するように構成されている PAM モジュールのセットに複数の Verify PAM モジュールが出現する場合は、各インスタンスに固有 ID を付与する必要があります。 付与しないと、それらのモジュールが相互干渉する可能性があります。
identity_source={id}
この引数はオプションであり、デフォルトではクラウド・ディレクトリー ID ソースを使用します。 この引数を設定することで、ユーザーの認証に使用する ID ソースを指定します。 ユーザーは、構成されている LDAP パススルー ID ソースに照らして認証されます。 構成済みの ID ソースとその ID の集合は、 https://<tenant>/verify/v1.0/authnmethods/passwordに対する GET 要求から取得できます。
ignore_isvalidated
この値はオプションであり、デフォルトは false です。 true に設定すると、PAM モジュールは、関連する 2FA 方式が検証されていない場合でもそれらを使用しようとします。
transients_in_choice
この引数で、OTP を使用した認証に使用される方式のリストに一時的な E メールおよび電話番号が追加されます。
voice_in_choice
この引数で、OTP を使用した認証に使用される方式のリストに音声 OTP が追加されます。
transient_choices={choices}
この引数は、利用できる一時的な方式および選択項目をリストします。 引数の値は、1 つ以上の "emails" および "phoneNumbers" でなければなりません。 選択項目はそれぞれ , (コンマ) で区切られている必要があります。
poll_timeout={seconds}
この引数は、ユーザーが自分のデバイスからログインを検証するための待機時間を指定します。 この時間を超過すると、タイムアウトになってログインは失敗となります。
no_enrollments_in_choice

この引数は、SMS、E メール、TOTP のいずれの登録も選択項目に追加しないことを指定します。 項目を選択可能にするには、transients_in_choice または add_devices_to_choice (あるいはその両方) を構成する必要があります。

id_link_attr= {attr_name}
テナントに複数の ID ソースが定義されていて、それらが ID リンクを使用している場合、この構成項目は、パスワードを検証するユーザー名を識別する「user_name_attr」によって検出されたユーザーの属性の名前を定義します。 {attr_name} 値の例:
  • "urn:ietf:params:scim:schemas:extension:ibm:2.0:user:linkedAccounts.myOnPremIdSource"
  • "emails.type%20eq%20%22work%22%20and%20emails.value"
  • "urn:ietf:params:scim:schemas:extension:ibm:2.0:user:customAttributes.myCustomAttribute"
  • "userName"

選択項目 auth_methods で提供される 2FA メソッドの定義

選択項目 auth_methods に示されている第 2 要素認証タイプを有効または無効にする方法。

表2. 選択 2FA への包含:
2FA タイプ デフォルト 有効化/無効化オプション 説明
TTP smsotp emailotp enabled no_enrollments_in_choice デフォルトでは、時刻、SMS、および E メール・ベースのワンタイム・パスワードが含まれており、それらが存在しないようにするには、明示的に無効にする必要があります。
装置 使用不可 add_devices_to_choice デバイス・プッシュ (生体認証 (指紋) とプレゼンス (デバイス・アプリへのアクセス) の両方) は、デフォルトでは選択項目として無効になっており、必要に応じて明示的に有効にする必要があります。 オプション verify_method_order は、優先順位および使用される優先順位を決定します。
Transsmsotp transemailotp 使用不可 transients_in_choice 一時的 (携帯電話および E メールの未検証のユーザー・アカウント値) は、デフォルトでは選択項目として無効になっており、必要に応じて明示的に有効にする必要があります。 オプション transient_choices= は、どちらの smsotp または emailotp (あるいはその両方) を使用するかを決定します。
voiceotp 使用不可 voice_in_choice 音声コールバック・ベースのワンタイム・パスワードはデフォルトで無効になっており、必要に応じて明示的に有効にする必要があります。 このメソッドを使用可能にするには、ユーザーが明示的にこのメソッドに登録する必要があります。
注: ignore_isvalidated 構成オプションが存在する場合、メソッドがユーザーによって検証されていなくても、totp、smsotp、emailotp、および voiceotp が含まれます。