「Universal 2nd Factor」の版間の差分
Kusanaginoturugi (トーク | 投稿記録) (序文の翻訳) |
(→LUKS を使用した保存データの暗号化: 非ルートパーティションを翻訳して追加) |
||
(他の1人の利用者による、間の13版が非表示) | |||
7行目: | 7行目: | ||
U2F および U2F-devices については、[[:Category:Universal 2nd Factor]] も参照してください。 |
U2F および U2F-devices については、[[:Category:Universal 2nd Factor]] も参照してください。 |
||
+ | == Web サイトの認証 == |
||
− | == Authentication for websites == |
||
− | U2F |
+ | U2F は、Google、Facebook、Twitter、Github などの主要なサイトでサポートされています。[https://twofactorauth.org/ twofactorauth.org] または [https://www.dongleauth.info/ dongleauth.info] には他のサイトや設定資料へのリンクがありますのでご確認ください。サポートしている全てのブラウザでは、 {{Pkg|libfido2}} をインストールするだけでよいでしょう。Yubico はテスト用に [https://demo.yubico.com/ demo page] を提供しています。 |
=== Firefox === |
=== Firefox === |
||
19行目: | 19行目: | ||
[[Chromium 設定#U2F 認証]] |
[[Chromium 設定#U2F 認証]] |
||
− | == |
+ | == Arch Linux の認証 == |
+ | YubiKey を開発した Yubico 社は、U2F [[PAM]] モジュールを開発しました。U2F PAM モジュールは、ログイン時の二番目の要素として、またはパスワードを完全に置き換えるために使用することができます。 |
||
− | Yubico, the company creating the YubiKey, develops an U2F [[PAM]] module. It can be used to act as a second factor during login or replace the need for a password entirely. |
||
+ | === PAM モジュールのインストール === |
||
− | === Installing the PAM module === |
||
+ | このモジュールは、{{Pkg|pam-u2f}} パッケージの一部です。 |
||
− | The module is part of the package {{Pkg|pam-u2f}}. |
||
− | === |
+ | === 鍵の追加 === |
+ | 鍵は {{ic|pamu2fcfg}} ツールで追加する必要があります: |
||
− | Keys need to be added with the tool {{ic|pamu2fcfg}}: |
||
$ mkdir ~/.config/Yubico |
$ mkdir ~/.config/Yubico |
||
$ pamu2fcfg -o pam://hostname -i pam://hostname > ~/.config/Yubico/u2f_keys |
$ pamu2fcfg -o pam://hostname -i pam://hostname > ~/.config/Yubico/u2f_keys |
||
+ | U2F キーのボタンをクリックして、鍵を確認します。 |
||
− | Click the button of your U2F key to confirm the key. |
||
+ | {{Note|異なるネットワークの DHCP などが原因で、システムのホスト名が変更された場合、ログインできなくなります。これを防ぐために、上記のオプションを指定し、{{ic|hostname}} を実際のホスト名に置き換えることをお勧めします。}} |
||
− | {{Note|If the hostname of your system changes, e.g. because of DHCP in different networks, you would be unable to login. In order to prevent that, it is recommended to specify the abovementioned options and replace {{ic|hostname}} with the actual hostname.}} |
||
+ | 複数の鍵を所有している場合は、それらを追加してください |
||
− | If you own multiple keys, append them with |
||
$ pamu2fcfg -o pam://hostname -i pam://hostname -n >> ~/.config/Yubico/u2f_keys |
$ pamu2fcfg -o pam://hostname -i pam://hostname -n >> ~/.config/Yubico/u2f_keys |
||
− | === |
+ | === パスワードなしの sudo === |
+ | {{Warning|設定に変更を加える前に、root 権限で別のシェルを開始してください。(例 {{ic|sudo -s}})。このようにすることで、問題が発生した場合に変更を元に戻すことができます。}} |
||
− | {{Warning|Before making any changes to your configuration, start a separate shell with root permissions (e.g. {{ic|sudo -s}}). This way you can revert any changes if something goes wrong.}} |
||
− | + | {{ic|/etc/pam.d/sudo}} を開いて、以下を追加 |
|
auth sufficient pam_u2f.so origin=pam://hostname appid=pam://hostname |
auth sufficient pam_u2f.so origin=pam://hostname appid=pam://hostname |
||
+ | 1行目の記述します。前述の {{ic|hostname}} は必ず書きかえてください。次に、新しいターミナルを起動し、{{ic|sudo ls}} と入力します。キーの LED が点滅し、それをクリックするとコマンドが実行されます。 |
||
− | as the first line. Be sure to replace the {{ic|hostname}} as mentioned above. Then create a new terminal and type {{ic|sudo ls}}. Your key's LED should flash and after clicking it the command is executed. |
||
− | === GDM |
+ | === GDM ログイン === |
− | + | {{ic|/etc/pam.d/gdm-password}} を開いて追加します。 |
|
auth required pam_u2f.so nouserok origin=pam://hostname appid=pam://hostname |
auth required pam_u2f.so nouserok origin=pam://hostname appid=pam://hostname |
||
+ | 既存の {{ic|auth}} 行の後に追加します。{{ic|nouserok}} オプションを使用することで、ユーザーがキーを設定していない場合にルールを失敗させることができることに留意してください。これにより、複数のユーザーが U2F キーを使用している場合でも、そのうちの一部のユーザーのみが U2F キーを使用するという設定が可能です。 |
||
− | after the existing {{ic|auth}} lines. Please note the use of the {{ic|nouserok}} option which allows the rule to fail if the user did not configure a key. This way setups with multiple users where only some of them use a U2F key are supported. |
||
− | {{Note| |
+ | {{Note|この方法は暗号化されたホームパーティションでは動作しません。なぜなら、ログインプロセスが完了する前に復号化が行われず、{{ic|u2f_keys}} ファイルが利用できないからです。この場合、[https://developers.yubico.com/pam-u2f/ official documentation of pam-u2f] で説明されているように、セントラルマッピングファイルを使用してください。}} |
− | === |
+ | === その他の認証方法 === |
+ | 上で説明したように、他のサービスに対しても PAM モジュールを有効にします。例えば、[[Cinnamon]] のスクリーンセーバーを保護するには、{{ic|/etc/pam.d/cinnamon-screensaver}} を編集します。 |
||
− | Enable the PAM module for other services like explained above. For example, to secure the screensaver of [[Cinnamon]], edit {{ic|/etc/pam.d/cinnamon-screensaver}}. |
||
+ | === トラブルシューティング === |
||
− | === Troubleshooting === |
||
+ | システムから自分自身をロックアウトしてしまった場合は、リカバリーモードまたは USB ペンドライブから起動します。その後、PAM コンフィグの変更を元に戻して再起動します。 |
||
− | If you managed to lock yourself out of the system, boot into recovery mode or from a USB pen drive. Then revert the changes in the PAM config and reboot. |
||
== OpenSSH == |
== OpenSSH == |
||
+ | OpenSSH は [https://www.openssh.com/txt/release-8.2 8.2] から FIDO/U2F ハードウェアトークンをネイティブにサポートしています。クライアントとサーバの両方が、ecdsa-sk/ed25519-sk 形式の鍵をサポートしている必要があります。次のコマンドを使用して、セキュリティで裏付けされた鍵ペアを生成します |
||
− | OpenSSH supports FIDO/U2F hardware tokens natively since [https://www.openssh.com/txt/release-8.2 8.2]. Both the client and server must support the ed25519-sk key types. Generate a security key backed key pair with: |
||
+ | * ECDSA 鍵の場合 |
||
− | $ ssh-keygen -t ecdsa-sk |
||
+ | :{{bc|$ ssh-keygen -t ecdsa-sk}} |
||
+ | * Ed25519 鍵の場合 |
||
+ | :{{bc|$ ssh-keygen -t ed25519-sk}} |
||
+ | {{Note|Yubikey を使用している場合、ed25519-sk 形式の鍵にはファームウェアバージョン 5.2.3 が必要です。}} |
||
− | {{Note|If you are using a Yubikey, firmware version 5.2.3 is needed for the ed25519-sk key type.}} |
||
+ | |||
+ | == LUKS を使用した保存データの暗号化 == |
||
+ | |||
+ | バージョン248以降、[[systemd]] は FIDO2 キーを使って [[dm-crypt/システム全体の暗号化|LUKS パーティション]]のロックを解除できるようになりました。 |
||
+ | |||
+ | まず、{{ic|/etc/crypttab}} ファイルを設定するか、または、root パーティションのロックを解除したい場合は {{ic|initramfs}} をカスタマイズする必要があります。全般的な手順は、TPM チップを使ってロックを解除する場合と同様です。[[Trusted Platform Module#systemd-cryptenroll]] を参照してください。 |
||
+ | |||
+ | キーを登録するには、''systemd-cryptenroll'' ユーティリティーを使用する必要があります。まず、以下のコマンドを実行して、検出された鍵をリストアップします: |
||
+ | |||
+ | $ systemd-cryptenroll --fido2-device=list |
||
+ | |
||
+ | 次に、{{ic|auto}} 値 (または、複数ある場合は、{{ic|/dev/hidrawX}} などの FIDO2 デバイスへのパス) を指定して、LUKS スロットにキーを登録できます。 |
||
+ | |||
+ | $ systemd-cryptenroll --fido2-device=/path/to/fido2_device /dev/sdX |
||
+ | |||
+ | === 非ルートパーティション === |
||
+ | |||
+ | 非ルートデータパーティションの場合、[[crypttab]] は次のようになります。 |
||
+ | |||
+ | {{hc|1=/etc/crypttab|2= |
||
+ | data /dev/sd''X'' none fido2-device=auto |
||
+ | }} |
||
+ | |||
+ | これは、暗号化されたパーティションが [[LVM]] で管理される論理ボリュームである場合にも機能します。 |
||
+ | |||
+ | {{hc|/etc/crypttab|2= |
||
+ | data /dev/vg1/data none fido2-device=auto |
||
+ | }} |
2023年11月1日 (水) 18:14時点における最新版
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 は 8.2 から FIDO/U2F ハードウェアトークンをネイティブにサポートしています。クライアントとサーバの両方が、ecdsa-sk/ed25519-sk 形式の鍵をサポートしている必要があります。次のコマンドを使用して、セキュリティで裏付けされた鍵ペアを生成します
- ECDSA 鍵の場合
$ ssh-keygen -t ecdsa-sk
- Ed25519 鍵の場合
$ ssh-keygen -t ed25519-sk
LUKS を使用した保存データの暗号化
バージョン248以降、systemd は FIDO2 キーを使って LUKS パーティションのロックを解除できるようになりました。
まず、/etc/crypttab
ファイルを設定するか、または、root パーティションのロックを解除したい場合は initramfs
をカスタマイズする必要があります。全般的な手順は、TPM チップを使ってロックを解除する場合と同様です。Trusted Platform Module#systemd-cryptenroll を参照してください。
キーを登録するには、systemd-cryptenroll ユーティリティーを使用する必要があります。まず、以下のコマンドを実行して、検出された鍵をリストアップします:
$ systemd-cryptenroll --fido2-device=list
次に、auto
値 (または、複数ある場合は、/dev/hidrawX
などの FIDO2 デバイスへのパス) を指定して、LUKS スロットにキーを登録できます。
$ systemd-cryptenroll --fido2-device=/path/to/fido2_device /dev/sdX
非ルートパーティション
非ルートデータパーティションの場合、crypttab は次のようになります。
/etc/crypttab
data /dev/sdX none fido2-device=auto
これは、暗号化されたパーティションが LVM で管理される論理ボリュームである場合にも機能します。
/etc/crypttab
data /dev/vg1/data none fido2-device=auto