4.4. スマートカード

パスワードベースの認証の代わりに、スマートカードベースの認証があります。ユーザーの認証情報がスマートカードに格納され、特別なソフトウェアやハードウェアを使用して、その情報にアクセスします。スマートカードを使用して認証するには、ユーザーはスマートカードリーダーにスマートカードを設置してから、そのスマートカードの PIN コードを提示する必要があります。

重要

以下のセクションでは、pam_pkcs11 パッケージおよび pam_krb5 パッケージを使用してローカルユーザーに対するスマートカード認証用のシングルシステムの設定方法について説明しています。『7.4 Release Notes』 の 非推奨の機能 で説明しているように、これらのパッケージは現在は非推奨となっていることに留意してください。
スマートカード認証の一元化を設定するには、System Security Services Daemon (SSSD) が提供する強化されたスマートカードの機能を使用します。詳細は、Red Hat Identity Management の 『Linux ドメイン ID、認証、およびポリシーガイド』 にある Identity Management でのスマートカード認証 を参照してください。

4.4.1. authconfig を使用したスマートカードの設定

スマートカードサポートを有効にする オプションを選択すると、スマートカードの設定動作を追加で制御できるようになります。
スマートカード認証のオプション

図4.3 スマートカード認証のオプション

Red Hat Enterprise Linux サーバーおよびワークステーションにおけるスマートカードでのログインはデフォルトでは有効になっておらず、システム設定で有効にする必要があります。

注記

Red Hat Enterprise Linux へのログイン時にシングルサインオンを使用する場合は、以下のパッケージが必要になります。
  • nss-tools
  • nss-pam-ldapd
  • esc
  • pam_pkcs11
  • pam_krb5
  • opensc
  • pcsc-lite-ccid
  • gdm
  • authconfig
  • authconfig-gtk
  • krb5-libs
  • krb5-workstation
  • krb5-pkinit
  • pcsc-lite
  • pcsc-lite-libs

4.4.1.1. UI でのスマートカード認証の有効化

  1. root でシステムにログインします。
  2. ネットワーク用の root CA 証明書をベース 64 形式でダウンロードし、サーバーにインストールします。certutil コマンドを使うと、証明書は適切なシステムデータベースにインストールされます。例を示します。
    [root@server ~]# certutil -A -d /etc/pki/nssdb -n "root CA cert" -t "CT,C,C" -i /tmp/ca_cert.crt

    注記

    このプロセスの後半で authconfig UI にインポートされた証明書が表示されなくても、心配はいりません。UI では証明書は表示されません。認証時に /etc/pki/nssdb/ ディレクトリーから取得されます。
  3. トップメニューで アプリケーション から 諸ツール を選択し、認証 をクリックします。
  4. 高度なオプション タブを開きます。
  5. スマートカードサポートを有効にする チェックボックスをクリックします。
  6. スマートカードでは 2 つの動作が設定可能です。
    • カード削除のアクション では、アクティブセッション中にカードが取り出された時のシステムの対応方法を設定します。無視する オプションの場合、カードが取り出されてもシステムは通常の機能を続けます。ロックする の場合は直ちに画面をロックします。
    • スマートカードログインを要求 のチェックボックスでは、スマートカードがログインで必要かどうかを設定します。このオプションが選択されると、他の認証メソッドはすべてブロックされます。

      警告

      スマートカードを使用してシステムに正常にログインする まで は、このオプションは選択しないでください。
  7. デフォルトでは、証明書が失効となったかどうかを確認するメカニズム (オンライン証明書ステータスプロトコル、OCSP の反応) は、無効になっています。有効期限が切れる前に証明書が失効したかどうかを検証するには、cert_policy ディレクティブに ocsp_on オプションを追加して OCSP のチェックを有効にします。
    1. pam_pkcs11.conf ファイルを開きます。
      vim /etc/pam_pkcs11/pam_pkcs11.conf
    2. cert_policy 行すべてに ocsp_on オプションを追加します。
      cert_policy = ca, ocsp_on, signature;

      注記

      このファイルの解析方法が原因で、cert_policy とイコール記号の間には空白が 必要になります。これがないと、パラメーターの解析が失敗します。
  8. (個人証明書とキーによる設定で) スマートカードが登録されていない場合、スマートカードを登録します。
  9. スマートカードが CAC カードの場合、CAC ユーザーのホームディレクトリーに .k5login ファイルを作成します。.k5login ファイルは、CAC カード上に Microsoft Principal Name を記載するために必要となります。
  10. 以下の行を /etc/pam.d/smartcard-auth/etc/pam.d/system-auth の各ファイルに追加します。
    auth    optional    pam_krb5.so use_first_pass no_subsequent_prompt preauth_options=X509_user_identity=PKCS11:/usr/lib64/pkcs11/opensc-pkcs11.so
    OpenSC モジュールが予想どおりに動作しない場合、coolkey パッケージのモジュール /usr/lib64/pkcs11/libcoolkeypk11.so を使用します。この場合、この問題について Red Hat テクニカルサポートへ問い合わせるか、Bugzilla に報告することを検討してください。
  11. /etc/krb5.conf ファイルを設定します。この設定は、CAC カードか Gemalto 64K カードを使っているかによって異なります。
    • CAC カードの場合、CAC カード使用に関連するすべての root 証明書を pkinit_anchors で指定します。以下の /etc/krb5.conf ファイルで CAC カードを設定する例では、EXAMPLE.COM が CAC カードのレルム名になり、kdc.server.hostname.com が KDC サーバーのホスト名になります。
      [logging]
        default = FILE:/var/log/krb5libs.log
        kdc = FILE:/var/log/krb5kdc.log
        admin_server = FILE:/var/log/kadmind.log
      
      [libdefaults]
        dns_lookup_realm = false
        dns_lookup_kdc = false
        ticket_lifetime = 1h
        renew_lifetime = 6h
        forwardable = true
      
        default_realm = EXAMPLE.COM
      [realms]
        EXAMPLE.COM = {
          kdc = kdc.server.hostname.com
          admin_server = kdc.server.hostname.com
          pkinit_anchors = FILE:/etc/pki/nssdb/ca_cert.pem
          pkinit_anchors = FILE:/etc/pki/nssdb/CAC_CA_cert.pem
          pkinit_anchors = FILE:/etc/pki/nssdb/CAC_CA_email_cert.pem
          pkinit_anchors = FILE:/etc/pki/nssdb/CAC_root_ca_cert.pem
          pkinit_cert_match = CAC card specific information
        }
      
      [domain_realm]
        EXAMPLE.COM = EXAMPLE.COM
        .EXAMPLE.COM = EXAMPLE.COM
      
        .kdc.server.hostname.com = EXAMPLE.COM
        kdc.server.hostname.com = EXAMPLE.COM
      
      [appdefaults]
          pam = {
            debug = true
            ticket_lifetime = 1h
            renew_lifetime = 3h
            forwardable = true
            krb4_convert = false
            mappings = username on the CAC card     Principal name on the card
          }
    • Gemalto 64K カードを設定する以下の /etc/krb5.conf ファイルの場合、EXAMPLE.COM は KDC サーバー上で作成されたレルムになり、kdc-ca.pem は CA 証明書、kdc.server.hostname.com が KDC サーバーのホスト名になります。
      [logging]
        default = FILE:/var/log/krb5libs.log
        kdc = FILE:/var/log/krb5kdc.log
        admin_server = FILE:/var/log/kadmind.log
      
      [libdefaults]
        dns_lookup_realm = false
        dns_lookup_kdc = false
        ticket_lifetime = 15m
        renew_lifetime = 6h
        forwardable = true
      
        default_realm = EXAMPLE.COM
      [realms]
        EXAMPLE.COM = {
          kdc = kdc.server.hostname.com
          admin_server = kdc.server.hostname.com
          pkinit_anchors = FILE:/etc/pki/nssdb/kdc-ca.pem
          pkinit_cert_match = <KU>digitalSignature
          pkinit_kdc_hostname = kdc.server.hostname.com
        }
      
      [domain_realm]
        EXAMPLE.COM = EXAMPLE.COM
        .EXAMPLE.COM = EXAMPLE.COM
      
        .kdc.server.hostname.com = EXAMPLE.COM
        kdc.server.hostname.com = EXAMPLE.COM
      
      [appdefaults]
          pam = {
            debug = true
            ticket_lifetime = 1h
            renew_lifetime = 3h
            forwardable = true
            krb4_convert = false
          }

注記

スマートカードが挿入されると、pklogin_finder ユーティリティーがデバッグモードで実行されている場合、まずログイン ID をカード上の証明書にマッピングし、証明書の有効性についての情報の出力を試みます。
pklogin_finder debug
このコマンドは、スマートカードを使ってシステムにログインする際の問題を診断する上で役立ちます。

4.4.1.2. コマンドラインでのスマートカード認証の設定

システムでスマートカードを使用する際に必要となるのは --enablesmartcard オプションの設定のみです。
[root@server ~]# authconfig --enablesmartcard --update
スマートカードには、デフォルトのスマートカードモジュールの変更、スマートカードが取り出された時のシステムの動作のセッティング、ログイン時にスマートカードを要求するなど、他の設定オプションがあります。
以下のコマンドの値 0 は、スマートカードが取り出された場合、システムがユーザーをロックアウトするように指示します。設定が 1 の場合は、スマートカードが取り出されても、これを無視します。
[root@server ~]# authconfig --enablesmartcard --smartcardaction=0 --update
スマートカード認証が正常に設定されテストが終わると、単純なパスワードベースの認証ではなく、スマートカード認証をユーザーに要求するようにシステムを設定することができます。
[root@server ~]# authconfig --enablerequiresmartcard --update

警告

スマートカードを使用して正常にシステム認証が終了するまで、--enablerequiresmartcard オプションは使用しないでください。終了前に使用すると、ユーザーがシステムにログインできなくなる可能性があります。

4.4.2. Identity Management でのスマートカード認証

Red Hat Identity Management は、IdM ユーザーのスマートカード認証をサポートします。詳細情報は Linux ドメイン ID、認証、およびポリシーガイド を参照してください。

4.4.3. 対応するスマートカード

以下のスマートカードおよびリーダーは、Red Hat Enterprise Linux に対応しています。

スマートカード

  • Athena ASECard Crypto smart, pkcs15-unit
  • ATOS (Siemens) CardOS 5.0
  • Gemalto ID Classic 230 / TOP IM CY2 64kv2
  • Gemalto Cyberflex Access 64k V2c
  • Gemalto GemPCKey USB form factor key
  • Giesecke & Devrient (G&D) SmartCafe Expert 6.0 (SCP03)
  • Giesecke & Devrient (G&D) SmartCafe Expert 7.0 (SCP03)
  • Safenet 330J
  • Safenet SC650 (SCP01)
  • Siemens Card CardOS M4.4
  • Yubikey 4

リーダー

  • HP Keyboard KUS1206 with built in Smart Card reader
  • Omnikey 3121 reader
  • Omnikey 3121 with PID 0x3022 reader
  • Reiner SCT cyberJack RFID komfort reader
  • SCR331 CCID reader