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 を指定するよう求めます。
この手順では、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 パッケージがインストールされています。
# svcadm enable pcsc
このサービスは、pam_pkcs11 モジュールがスマートカードとの通信に使用する pcscd デーモンを起動します。
# cd /etc/security/pam_pkcs11 # cp pam_pkcs11.conf pam_pkcs11.conf.orig
適切なモジュールを pam_pkcs11.conf ファイルに追加します。
# 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; }
# 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; }
このエントリは、証明書を検証できる証明書パラメータを示します。
use_mappers = cn, subject, openssh, null;
サポートされているマッパーの完全なリストは、pam_pkcs11.conf ファイルにあります。
# 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 マップファイルを作成することになります。
mapper cn { debug = true; module = internal; ignorecase = true; mapfile = file:///etc/security/pam_pkcs11/cn_map; }
スマートカードを使用した 2FA 用に PAM を構成する方法で cn_map マップファイルを作成することになります。
# 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; }
# chmod 644 pam_pkcs11.conf
# /usr/lib/pam_pkcs11/pkcs11_inspect
PIN の入力後、ユーザーのマートカードからの X.509 証明書情報が表示されるはずです。サンプル出力については、スマートカードを使用した 2FA 用に PAM を構成する方法のStep 1を参照してください。
次のステップ
スマートカード認証用の PAM の構成を完了するには、スマートカードを使用した 2FA 用に PAM を構成する方法に進みます。
この手順では、スマートカードユーザーを認証するための、pam_pkcs11 モジュールの構成を完了する方法を示します。この手順の例は、米国政府発行の CACKeys の場合の例です。スマートカードユーザーごとにこれらのステップに従う必要があります。
始める前に
スマートカードの X.509 証明書の表示方法を完了しています。
root 役割になる必要があります。詳細は、Oracle Solaris 11.3 でのユーザーとプロセスのセキュリティー保護 の 割り当てられている管理権利の使用を参照してください。
# /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 ...
このファイルを /etc/security/pam_pkcs11/subject_mapping.example からコピーします。
# cd /etc/security/pam_pkcs11 # cp subject_mapping.example subject_mapping
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 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
米国政府によって発行されていないスマートカードは、証明書名の値が異なります。
/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 -> login … many user entries ## Certificate name mapped to the root account DOD CA-3 -> root
# chmod 644 cn_map subject_mapping
# 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 ...
# 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 ...
PAM およびテストの詳細は、Oracle Solaris 11.3 での Kerberos およびその他の認証サービスの管理 の 第 1 章, プラグイン可能認証モジュールの使用を参照してください。