Go to main content
Oracle® Solaris 11.3 での Kerberos およびその他の認証サービスの管理

印刷ビューの終了

更新: 2017 年 3 月
 
 

スマートカード用の PAM の構成

pam_pkcs11 ログインモジュールは、CACKey および Coolkey スマートカード上に存在する証明書である、X.509 証明書ベースのユーザー認証を有効にします。このモジュールは、ネームサービススイッチ (NSS) を使用して PKCS #11 のスマートカードをローカルでアクセス可能な証明書失効リスト (CRL) または Online Certificate Status Protocol (OCSP) のいずれかから管理および検証します。

すべての Oracle Solaris ログインが PAM を経由します。ユーザーに対してスマートカード認証を有効にするには、ユーザーのスマートカードからの情報を PAM ファイルに追加します。

    /etc/security/pam_pkcs11 ディレクトリに、次のファイルを作成または修正します。

  • pam_pkcs11.conf – CACKey または Coolkey 暗号化モジュールを特定し、スマートカードからの一部の情報を含み、マッピングファイルを指します

  • subject_mapping – スマートカードの X.509 証明書の subject をカードのログインユーザー、またはユーザーが引き受けられる root などの追加の役割にマップします

  • cn_map – スマートカードの X.509 証明書名 (CN) をログインユーザーの CN、またはログインユーザーが引き受けられる root などの追加の役割の CN にマップします

続いて、すべてのログインの auth PAM スタックが、2 番目の認証ステップを要求するように修正されます。この 2 番目のステップでは、PKCS #11 ライブラリを使用してスマートカードの X.509 証明書を検証し、ユーザーにスマートカード PIN を指定するよう求めます。

スマートカードの X.509 証明書の表示方法

この手順では、CACKey または Coolkey を暗号化モジュールとして使用するスマートカードを認識するように、pam_pkcs11 を構成します。この構成には、Secure Shell へのスマートカード認証のサポートが含まれます。

この準備のあと、この情報を使用してユーザーのスマートカードアクセスを構成します。

始める前に

root 役割になる必要があります。詳細は、Oracle Solaris 11.3 でのユーザーとプロセスのセキュリティー保護 の 割り当てられている管理権利の使用を参照してください。

Oracle Solaris 11.3 での Secure Shell アクセスの管理 の Secure Shell の OpenSSH 実装をインストールして切り替える方法を完了し、Secure Shell の OpenSSH バージョンを実行しています。ユーザーのスマートカードが入ったスマートカードリーダーは Oracle Solaris システムに接続されています。システムに pcsclite および ccid パッケージがインストールされています。

  1. pcsc サービスをまだ有効にしていない場合は、有効にします。
    # svcadm enable pcsc

    このサービスは、pam_pkcs11 モジュールがスマートカードとの通信に使用する pcscd デーモンを起動します。

  2. pam_pkcs11.conf ファイルを pam_pkcs11.conf.orig にコピーします。
    # cd /etc/security/pam_pkcs11
    # cp pam_pkcs11.conf pam_pkcs11.conf.orig
  3. PAM をスマートカードの CACKey または Coolkey 暗号化モジュールを使用するよう構成します。

    適切なモジュールを pam_pkcs11.conf ファイルに追加します。

    • CACKey を暗号化モジュールとして特定し、サポートします。
      # pfedit pam_pkcs11.conf
      use_pkcs11_module = cackey;

      この行に続いて、CACKey のサポートを追加します。

      # CACKey support
      pkcs11_module cackey {
           module = /usr/lib/$ISA/libcackey.so;
           description = "CACKey";	
           slot_num = 0;
           support_threads = false;
           ca_dir =/etc/security/pam_pkcs11/cacerts;
           crl_dir =/etc/security/pam_pkcs11/crls;
           cert_policy = none;
           crl_policy = none;
        }
    • Coolkey を暗号化モジュールとして特定し、サポートします。
      # cd /etc/security/pam_pkcs11
      # pfedit pam_pkcs11.conf
      use_pkcs11_module = coolkey;

      この行に続いて、Coolkey のサポートを追加します。

      # Coolkey support
      pkcs11_module coolkey {
           module = /usr/lib/$ISA/libcoolkeypk11.so;
           description = "Coolkey";	
           slot_num = 0;
           support_threads = false;
           ca_dir =/etc/security/pam_pkcs11/cacerts;
           crl_dir =/etc/security/pam_pkcs11/crls;
           cert_policy = none;
           crl_policy = none;
        }
  4. 引き続き pam_pkcs11.conf ファイルで use_mappers の定義を見つけて変更します。

    このエントリは、証明書を検証できる証明書パラメータを示します。

    use_mappers = cn, subject, openssh, null;

    サポートされているマッパーの完全なリストは、pam_pkcs11.conf ファイルにあります。

  5. mapper subject 定義を見つけて変更します。
      # Certificate Subject to login based mapper
      # provided file stores one or more "Subject -> login" lines
      mapper subject {
           debug = false;
           module = internal;
           ignorecase = false;
           mapfile = file:///etc/security/pam_pkcs11/subject_mapping;
      }

    スマートカードを使用した 2FA 用に PAM を構成する方法subject_mapping マップファイルを作成することになります。

  6. mapper cn 定義を見つけて変更します。
    mapper cn {
           debug = true;
           module = internal;
           ignorecase = true;
           mapfile = file:///etc/security/pam_pkcs11/cn_map;
      }

    スマートカードを使用した 2FA 用に PAM を構成する方法cn_map マップファイルを作成することになります。

  7. mapper openssh 定義を見つけて変更します。
      # Search public keys from user's $HOME/.ssh/authorized_keys for match
      mapper openssh {
           debug = false;
           module = /usr/lib/pam_pkcs11/$ISA/openssh_mapper.so;
      }
  8. pam_pkcs11.conf ファイルを終了します。
  9. pam_pkcs11.conf ファイルに制限されたアクセス権を設定します。
    # chmod 644 pam_pkcs11.conf
  10. ユーザーのスマートカードの情報を表示できることを確認します。
    1. 端末ウィンドウで、pkcs11_inspect コマンドを実行します。
      # /usr/lib/pam_pkcs11/pkcs11_inspect
    2. プロンプトでユーザーのスマートカード PIN を入力します。

      PIN の入力後、ユーザーのマートカードからの X.509 証明書情報が表示されるはずです。サンプル出力については、スマートカードを使用した 2FA 用に PAM を構成する方法Step 1を参照してください。

次のステップ

スマートカード認証用の PAM の構成を完了するには、スマートカードを使用した 2FA 用に PAM を構成する方法に進みます。

スマートカードを使用した 2FA 用に PAM を構成する方法

この手順では、スマートカードユーザーを認証するための、pam_pkcs11 モジュールの構成を完了する方法を示します。この手順の例は、米国政府発行の CACKeys の場合の例です。スマートカードユーザーごとにこれらのステップに従う必要があります。

始める前に

スマートカードの X.509 証明書の表示方法を完了しています。

root 役割になる必要があります。詳細は、Oracle Solaris 11.3 でのユーザーとプロセスのセキュリティー保護 の 割り当てられている管理権利の使用を参照してください。

  1. ユーザーのスマートカードの情報を表示します。
    # /usr/lib/pam_pkcs11/pkcs11_inspect

    PIN の入力後、ユーザーのマートカードからの X.509 証明書情報が次のように表示されるはずです。

    PIN for token: 
    Printing data for mapper cn:
    LNAME.FNAME.ID
    Printing data for mapper subject:
    /C=US/O=U.S. Government/OU=DoD/OU=PKI/OU=Division/CN=LNAME.FNAME.ID
    Printing data for mapper openssh:
    ssh-rsa AAAAB3NzaC1yc2EAAAA ...
    ... fname.lname@example.org
    Printing data for mapper cn:
    LNAME.FNAME.ID
    Printing data for mapper subject:
    /C=US/O=U.S. Government/OU=DoD/OU=PKI/OU=Division/CN=LNAME.FNAME.ID
    Printing data for mapper openssh:
    ssh-rsa AAAAB3NzaC1yc2EAAAA ... 
    ... fname.lname@example.org
    ...
    Printing data for mapper cn:
    DoD Root CA ...
    ...
    Printing data for mapper subject:
    /C=US/O=U.S. Government/OU=DoD/OU=PKI/CN=DOD Root CA
    
    Printing data for mapper cn:
    DOD CA-30
    
    Printing data for mapper subject:
    /C=US/O=U.S. Government/OU=DoD/OU=PKI/CN=DOD CA-30
    ...
  2. subject_mapping ファイルを作成します。

    このファイルを /etc/security/pam_pkcs11/subject_mapping.example からコピーします。

    # cd /etc/security/pam_pkcs11
    # cp subject_mapping.example subject_mapping
  3. subject_mapping ファイルで、X.509 証明書からのユーザーの subject 値をそれらのログイン名にマップします。

    format 行はマッピング形式を記述します。

    Printing data for mapper subject: の最初のインスタンスに続く行からの値を使用します。例:

    /C=US/O=U.S. Government/OU=DoD/OU=PKI/OU=Division/CN=LNAME.FNAME.ID
    # Mapping file for Certificate Subject
    # format: Certificate Subject -> login
    #
    ## User certificates
    /C=US/O=U.S. Government/OU=DoD/OU=PKI/OU=Division/CN=LNAME.FNAME.ID -> login
    ...
    ## Root certificate authority
    ...

    米国政府によって発行されていないスマートカードは、証明書サブジェクトの値が異なります。


    注 -  root アカウントに一意のスマートカードがある場合は、root をユーザーとして扱い、X.509 証明書からの root の証明書名を root のログイン名にマップします。
  4. (オプション) スマートカードユーザーが root などのほかの役割を引き受けることが許可されている場合、カードからの正しい証明書を正しい識別情報にマップします。
    • この例では、root CA の証明書は、root の役割の証明書になります。

      # pfedit subject_mapping
      # Mapping file for Certificate Subject
      # format: Certificate Subject -> login
      #
      ## User certificates
      ...
      ## Certificate name mapped to the root account
      /C=US/O=U.S. Government/OU=DoD/OU=PKI/CN=DOD CA-3 -> root
    • この例では、root の役割の証明書はルート CA の証明書とは異なります。

      # pfedit subject_mapping
      # Mapping file for Certificate Subject
      # format: Certificate Subject -> login
      #
      ## User certificates
      ...
      ## Certificate name mapped to the root account
      /C=US/O=U.S. Government/OU=DoD/OU=PKI/CN=DOD CA-30 -> root
    • この例では、DOD CA-29 証明書サブジェクトが sysadmin の役割にマップします。

      # pfedit subject_mapping
      # Mapping file for Certificate Subject
      # format: Certificate Subject -> login
      #
      ## User certificates
      ...
      ## Certificate name mapped to the sysadmin role
      /C=US/O=U.S. Government/OU=DoD/OU=PKI/CN=DOD CA-29 -> sysadmin

    米国政府によって発行されていないスマートカードは、証明書名の値が異なります。

  5. cn_map ファイルに CN 値をマップします。
    • /etc/security/pam_pkcs11/cn_map ファイルを作成します。

    • X.509 証明書からのユーザーの証明書名をユーザーのログイン名にマップします。

    • ユーザーが役割になることができる場合は、その役割に適切な証明書名をマップします。

    # pfedit cn_map
    # Mapping file for Certificate Name
    # format: Certificate Name -> login
    #
    ## User certificate names
    LNAME.FNAME.ID -> loginmany user entries
    
    ## Certificate name mapped to the root account
    DOD CA-3 -> root
  6. マッピングファイルに制限されたアクセス権を設定します。
    # chmod 644 cn_map subject_mapping
  7. login PAM 構成ファイルの auth スタックに pam_pkcs11 を最初のモジュールとして追加します。
    # cd /etc/pam.d
    # cp login login.orig
    # pfedit login
    # login service (explicit because of pam_dial_auth)
    #
    ## pam_pkcs11 enables smart card logins
    auth sufficient         pam_pkcs11.so
    auth definitive         pam_user_policy.so.1
    ...
  8. other ファイルを同様に変更します。
    # cp other other.orig
    # pfedit other
    # Default definitions for Authentication management
    # Used when service name is not explicitly mentioned for authentication
    #
    ## pam_pkcs11 enables smart card logins
    auth sufficient         pam_pkcs11.so
    auth definitive         pam_user_policy.so.1
    ...
  9. PAM 構成をテストします。
    1. ローカルデスクトップにログインします。
    2. リモートデスクトップにログインします。
    3. ssh コマンドを使用してログインします。
    4. ローカルコンソールを使用してログインします。

    PAM およびテストの詳細は、Oracle Solaris 11.3 での Kerberos およびその他の認証サービスの管理 の 第 1 章, プラグイン可能認証モジュールの使用を参照してください。