スマートカード認証を使えるように macOS を設定する

macOS Sierra 以降では、スマートカード認証で 2 ファクタ認証を強化できます。macOS High Sierra 10.13.2 以降は、スマートカード認証に対応しています。この方法ではスマートカードの使用が必須になり、パスワードを使った認証はすべて無効になります。 

この記事は、スマートカード認証が必要な企業環境において、セキュリティポリシーの設定を担当するシステム管理者を読者として想定しています。

スマートカード限定ログインを有効にする

以下の手順は慎重に実行し、ユーザが確実にコンピュータにログインできるようにしてください。

  1. スマートカードを管理者ユーザアカウントとペアリングするか、属性照合 (Attribute Matching) を設定します。
  2. 厳密な証明書チェックを有効にしている場合は、必須のルート証明書または中間証明書をインストールします。
  3. スマートカードを使って管理者アカウントにログインできることを確かめます。
  4. 「<key>enforceSmartCard</key><true/>」と指定されたスマートカード構成プロファイルをインストールします。後出のスマートカード認証のサンプル構成プロファイルを参考にしてください。
  5. スマートカードを使って引き続きログインできる状態であることを確かめます。

スマートカードのペイロード設定について詳しくは、「Apple 構成プロファイルリファレンス」を参照してください。

スマートカードサービスの利用について詳しくは、「macOS 導入リファレンス」を参照するか、ターミナルを開いて「man SmartCardServices」と入力してください。

 

スマートカード認証を無効にする

コンピュータにインストールされているプロファイルを手動で管理している場合は、2 通りの方法でスマートカード認証のプロファイルを削除できます。システム環境設定の「プロファイル」パネルを使うか、「/usr/bin/profiles」コマンドラインツールを使う方法があります。詳しくは、ターミナルを開いて「man profiles」と入力してください。

クライアントコンピュータがモバイルデバイス管理 (MDM) に登録されている場合は、パスワードベースの認証を復元できます。そのためには、スマートカード限定の制約を有効にするスマートカード構成プロファイルをクライアントコンピュータから削除します。

ユーザがアカウントからロックアウトされる事態を避けるため、スマートカードのペアリングを解除したり属性照合を無効にしたりする前に enforceSmartCard プロファイルを削除してください。ユーザがアカウントからロックアウトされてしまったら、構成プロファイルを削除して問題を解決します。

スマートカード認証を有効にする前にスマートカード限定ポリシーを適用すると、ユーザがコンピュータからロックアウトされる場合があります。この問題を解決するには、以下の手順でスマートカード限定ポリシーを削除します。

  1. Mac の電源を入れて、すぐに「command + R」キーを押して macOS 復元から起動します。Apple ロゴ、回転する地球儀、またはファームウェアパスワードの入力画面が表示されたら、キーから指を放します。
  2. ユーティリティのウインドウで「ディスクユーティリティ」を選択し、「続ける」をクリックします。
  3. ディスクユーティリティのサイドバーで、お使いのボリュームを選択し、メニューバーから「ファイル」>「マウント」の順に選択します (ボリュームがすでにマウントされている場合、このオプションはグレイ表示になります)。入力を求められたら、管理者パスワードを入力します。
  4. ディスクユーティリティを終了します。
  5. メニューバーの「ユーティリティ」メニューから「ターミナル」を選択します。
  6. 構成プロファイルリポジトリを削除します。それには、ターミナルを開いて、以下のコマンドを入力します。
    これらのコマンドの <volumename> の部分は、プロファイル設定がインストールされていた macOS ボリュームの名前に置き換えてください。
    rm /Volumes/<volumename>/var/db/ConfigurationProfiles/MDM_ComputerPrefs.plist
    rm /Volumes/<volumename>/var/db/ConfigurationProfiles/.profilesAreInstalled
    rm /Volumes/<volumename>/var/db/ConfigurationProfiles/Settings/.profilesAreInstalled
    rm /Volumes/<volumename>/var/db/ConfigurationProfiles/Store/ConfigProfiles.binary
    rm /Volumes/<volumename>/var/db/ConfigurationProfiles/Setup/.profileSetupDone
  7. 終わったら、Apple () メニュー >「再起動」の順に選択します。
  8. スマートカード認証を有効にする前に適用されていた構成プロファイルをすべて再インストールします。

 

SSHD (Secure Shell Daemon) をスマートカード認証に対応するように設定する

ユーザはそれぞれのスマートカードを使って、ローカルコンピュータや、正しく設定されたリモートコンピュータに対して SSH で認証できます。以下の手順にそって、コンピュータで SSHD をスマートカード認証に対応するように設定してください。 

「/etc/ssh/sshd_config」ファイルを更新します。

  1. 以下のコマンドを使って「sshd_config」ファイルをバックアップします。
    sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config_backup_`date "+%Y-%m-%d_%H:%M"`
  2. 「sshd_config」ファイルで、「#ChallengeResponseAuthentication yes」を「ChallengeResponseAuthentication no」に、「#PasswordAuthentication yes」を「#PasswordAuthentication no」に変更します。

続いて、以下のコマンドを使って SSHD を再起動します。

sudo launchctl stop com.openssh.sshd

sudo launchctl start com.openssh.sshd

スマートカードを使って SSH セッションを認証したいユーザには、以下の手順を実行してもらいます。

  1. 以下のコマンドを使って、スマートカードから公開鍵を書き出します。
    ssh-keygen -D /usr/lib/ssh-keychain.dylib
  2. 1 つ前の手順で書き出した公開鍵を、ターゲットコンピュータの「~/.ssh/authorized_keys」ファイルに追加します。
  3. 以下のコマンドを使って、「ssh_config」ファイルをバックアップします。
    sudo cp /etc/ssh/ssh_config /etc/ssh/ssh_config_backup_`date "+%Y-%m-%d_%H:%M"`
  4. 「/etc/ssh/ssh_config」ファイルで、行「PKCS11Provider=/usr/lib/ssh-keychain.dylib」を追加します。

ユーザが希望する場合は、さらに以下のコマンドを使って、秘密鍵を ssh-agent に追加できます。

ssh-add -s /usr/lib/ssh-keychain.dylib

 

SUDO コマンドに対してスマートカード認証を有効にする

以下のコマンドを使って「/etc/pam.d/sudo」ファイルをバックアップします。

sudo cp /etc/pam.d/sudo /etc/pam.d/sudo_backup_`date "+%Y-%m-%d_%H:%M"`

その後、「/etc/pam.d/sudo」ファイルの内容をすべて以下のテキストで置き換えます。

# sudo: auth account password session
auth        sufficient    pam_smartcard.so
auth        required      pam_opendirectory.so
auth        required      pam_deny.so
account     required      pam_permit.so
password    required      pam_deny.so
session     required      pam_permit.so

 

LOGIN コマンドに対してスマートカード認証を有効にする

以下のコマンドを使って「/etc/pam.d/login」ファイルをバックアップします。

sudo cp /etc/pam.d/login /etc/pam.d/login_backup_`date "+%Y-%m-%d_%H:%M"`

その後、「/etc/pam.d/login」ファイルの内容をすべて以下のテキストで置き換えます。

# login: auth account password session
auth        sufficient    pam_smartcard.so
auth        optional      pam_krb5.so use_kcminit
auth        optional      pam_ntlm.so try_first_pass
auth        optional      pam_mount.so try_first_pass
auth        required      pam_opendirectory.so try_first_pass
auth        required      pam_deny.so
account     required      pam_nologin.so
account     required      pam_opendirectory.so
password    required      pam_opendirectory.so
session     required      pam_launchd.so
session     required      pam_uwtmp.so
session     optional      pam_mount.so

 

SU コマンドに対してスマートカード認証を有効にする

以下のコマンドを使って「/etc/pam.d/su」ファイルをバックアップします。

sudo cp /etc/pam.d/su /etc/pam.d/su_backup_`date "+%Y-%m-%d_%H:%M"`

その後、「/etc/pam.d/su」ファイルの内容をすべて以下のテキストで置き換えます。

# su: auth account password session
auth        sufficient    pam_smartcard.so
auth        required      pam_rootok.so
auth        required      pam_group.so no_warn group=admin,wheel ruser root_only fail_safe
account     required      pam_permit.so
account     required      pam_opendirectory.so no_check_shell
password    required      pam_opendirectory.so
session     required      pam_launchd.so

 

スマートカード認証のサンプル構成プロファイル

スマートカード認証の構成プロファイルのサンプルを以下に紹介します。この種類のプロファイルに指定される鍵や文字列の種類を確認する際に、参考にしてください。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>PayloadContent</key>
<array>
<dict>
<key>PayloadDescription</key>
<string>Configures smart card-only</string>
<key>PayloadDisplayName</key>
<string>Smart card-only</string>
<key>PayloadIdentifier</key>
<string>com.apple.configprofile.78.</string>
<key>PayloadOrganization</key>
<string>Apple</string>
<key>PayloadType</key>
<string>com.apple.security.smartcard</string>
<key>PayloadUUID</key>
<string>5A15247B-899C-474D-B1D7-DBD82BDE5678</string>
<key>PayloadVersion</key>
<integer>1</integer>
<key>UserPairing</key>
<false/>
<key>allowSmartCard</key>
<true/>
<key>checkCertificateTrust</key>
<false/>
<key>enforceSmartCard</key>
<true/>
</dict>
</array>
<key>PayloadDescription</key>
<string>Smartcard profile.</string>
<key>PayloadDisplayName</key>
<string>Smart card-only</string>
<key>PayloadIdentifier</key>
<string>com.apple.configprofile.77</string>
<key>PayloadOrganization</key>
<string></string>
<key>PayloadRemovalDisallowed</key>
<false/>
<key>PayloadType</key>
<string>Configuration</string>
<key>PayloadScope</key>
<string>system</string>
<key>PayloadUUID</key>
<string>7D34CC86-C707-44D2-9A9F-C5F6E347BD77</string>
<key>PayloadVersion</key>
<integer>1</integer>
</dict>
</plist>

 

公開日: