Universal 2nd Factor
Universal 2nd Factor (U2F) はスマートカードと同様のセキュリティ技術に基づいて、専用の USB または NFC デバイスを使用した二要素認証 (2FA) を強化、簡素化するためのオープンスタンダードです。
当初は Google と Yubico が開発し、NXP セミコンダクターズが貢献していましたが、現在は、FIDO アライアンスがホストしています。
U2F および U2F-devices については、Category:Universal 2nd Factor も参照してください。
目次
Web サイトの認証
U2F は、Google、Facebook、Twitter、Github などの主要なサイトでサポートされています。twofactorauth.org または dongleauth.info には他のサイトや設定資料へのリンクがありますのでご確認ください。サポートしている全てのブラウザでは、 libfido2 をインストールするだけでよいでしょう。Yubico はテスト用に demo page を提供しています。
Firefox
Chromium/Chrome
Arch Linux の認証
YubiKey を開発した Yubico 社は、U2F PAM モジュールを開発しました。U2F PAM モジュールは、ログイン時の二番目の要素として、またはパスワードを完全に置き換えるために使用することができます。
PAM モジュールのインストール
このモジュールは、pam-u2f パッケージの一部です。
鍵の追加
鍵は pamu2fcfg
ツールで追加する必要があります:
$ mkdir ~/.config/Yubico $ pamu2fcfg -o pam://hostname -i pam://hostname > ~/.config/Yubico/u2f_keys
U2F キーのボタンをクリックして、鍵を確認します。
複数の鍵を所有している場合は、それらを追加してください
$ pamu2fcfg -o pam://hostname -i pam://hostname -n >> ~/.config/Yubico/u2f_keys
パスワードなしの sudo
/etc/pam.d/sudo
を開いて、以下を追加
auth sufficient pam_u2f.so origin=pam://hostname appid=pam://hostname
1行目の記述します。前述の hostname
は必ず書きかえてください。次に、新しいターミナルを起動し、sudo ls
と入力します。キーの LED が点滅し、それをクリックするとコマンドが実行されます。
GDM ログイン
/etc/pam.d/gdm-password
を開いて追加します。
auth required pam_u2f.so nouserok origin=pam://hostname appid=pam://hostname
既存の auth
行の後に追加します。nouserok
オプションを使用することで、ユーザーがキーを設定していない場合にルールを失敗させることができることに留意してください。これにより、複数のユーザーが U2F キーを使用している場合でも、そのうちの一部のユーザーのみが U2F キーを使用するという設定が可能です。
その他の認証方法
上で説明したように、他のサービスに対しても PAM モジュールを有効にします。例えば、Cinnamon のスクリーンセーバーを保護するには、/etc/pam.d/cinnamon-screensaver
を編集します。
トラブルシューティング
システムから自分自身をロックアウトしてしまった場合は、リカバリーモードまたは USB ペンドライブから起動します。その後、PAM コンフィグの変更を元に戻して再起動します。
OpenSSH
OpenSSH supports FIDO/U2F hardware tokens natively since 8.2. Both the client and server must support the ed25519-sk key types. Generate a security key backed key pair with:
$ ssh-keygen -t ecdsa-sk
Data-at-rest encryption with LUKS
Since version 248, systemd can be use to unlock a LUKS partition using a FIDO2 key.
First, you will need to setup your /etc/crypttab
file, or customize your initramfs
if you wish to unlock your root partition. The full procedure is similar to the use of a TPM chip for unlocking. See Trusted Platform Module#systemd-cryptenroll.
To register the key, you will need to use the systemd-cryptenroll utility. First, run the following command to list your detected keys:
$ systemd-cryptenroll --fido2-device=list
Then you can register the key in a LUKS slot, specifying the path to the FIDO2 device, or using the auto
value :
$ systemd-cryptenroll --fido2-device=/path/to/fido2_device /dev/sdX