デスクトップログインとLinuxユーザー認証#

(Nitrokey FIDO2 - Linux)

はじめに#

このガイドでは、FIDO Universal 2nd Factor、すなわち libpam-u2fNitrokey FIDO2 によるFIDO U2F を利用する Linux を設定していく手順を説明します。

`Nitrokey Pro 2でパソコンにログインする場合。<https://shop.nitrokey.com/shop/product/nk-pro-2-nitrokey-pro-2-3>`_ Nitrokey Storage 2 および Nitrokey を使用してコンピュータにログインしたい場合。開始 の手順は、` こちら <../../pro/linux/login-with-pam.html>`_ を参照してください。

要求事項#

使い方#

GUI方式#

  1. 左下の Show Applications をクリックし、検索バーに次のように設定を入力します:**

img1
  1. 右のバーを下にスクロールすると Users が表示されます。

img2
  1. Unlock すると、パスワードの入力を要求されます

img3
  1. Administrator を選択し、任意のユーザー名とパスワードを入力してください**。

img4
  1. **ステップ4が終了したら、終了です。

img5

CLIメソッド#

  1. **バックアップユーザーを作成し、root pivileges**を付与する。

これらのコマンドを使って行うことができます。

$ sudo adduser <backup_user>
$ sudo usermod -aG sudo <backup_user>

U2Fを1人のユーザーで設定したい場合、ユーザーセッションからロックアウトされても、``<backup_user>``でログインし、メンテナンスを進めることができます。

警告

以下のガイドは、あなたのコンピュータをロックアウトする可能性があります。このようなリスクを認識した上で、まずはセカンダリのコンピューターで以下の手順を使用するか、完全にバックアップを取った後に使用することをお勧めします。

PAM モジュール を構成した後、データにアクセスできなくなる可能性があります。

  1. ``rules`` **Nitrokey FIDO2 を認識するように設定する。

アンダー /etc/udev/rules.d ダウンロード 41-nitrokey.rules

$ cd /etc/udev/rules.d/
$ sudo wget https://raw.githubusercontent.com/Nitrokey/libnitrokey/master/data/41-nitrokey.rules

そして、``udev``サービスを再起動します。

$ sudo systemctl restart udev
  1. インストール libpam-u2f

Ubuntu 20.04 では、公式リポジトリから libpam-u2f を直接ダウンロードすることが可能です。

$ sudo apt install libpam-u2f

注釈

クリックすると他のオプションが表示されます

  • あるいは、libpam-u2fGit から構築することも可能です。

  • ライブラリが正しくインストールされていることを確認するには、次のコマンドを入力します。

$ file /lib/x86_64-linux-gnu/security/pam_u2f.so

出力は以下のようになります。

/lib/x86_64-linux-gnu/security/pam_u2f.so: \ ELF 64-bit LSB shared object, x86-64, version 1 (SYSV),\ dynamically linked, BuildID[sha1]=1d55e1b11a97be2038c6a139579f6c0d91caedb1, stripped
  1. ディレクトリを準備する

ホームディレクトリの下に``.config/Nitrokey/``を作成する。

$ mkdir ~/.config/Nitrokey

そして、Nitrokey FIDO2を差し込みます。

準備が完了したら、ログイン時の2要素認証にNitrokey FIDO2を使用するようにコンピュータを設定し、``sudo``の設定を開始します。

  1. U2Fの設定ファイルを生成する

設定ファイルを生成するために、pamu2fcfg``に付属するユーティリティーを使用します。便宜上、ユーティリティーの出力を``u2f_keys``の.config/Nitrokey``のファイルに直接書き込みます。まず、Nitrokey FIDO2を(まだ接続していなければ)接続して、以下のコマンドを入力します。

$ pamu2fcfg > ~/.config/Nitrokey/u2f_keys

上のコマンドを実行したら、点滅している間にキーをタッチする必要があります。そうすると、``pamu2fcfg``の出力に、``u2f_keys``が以下のような形式で追加されます。

<username>:Zx...mw,04...0a

なお、出力はもっと長くなりますが、ここでは重要な部分を削除しています。より良いセキュリティのために、また、設定ファイルが生成されたら、``.config/Nitrokey``ディレクトリを``etc/``ディレクトリの下に移動させます。

$ sudo mv ~/.config/Nitrokey /etc

ちなみに

  • ``.config/Nitrokey``の下のファイルは、``u2f_keys``という名前でなければなりません。

  • まず、1人のユーザーで手順をテストすることをお勧めします。この目的のために、前のコマンドでは、``-u``オプションを使って、以下の例のようにユーザーを指定しています。

$ pamu2fcfg -u <username> > ~/.config/Nitrokey/u2f_keys
  • 個々のユーザーの設定については、次のステップでホームディレクトリを指定するか、PAMの設定で``authfile``オプションを含めないようにします。

  1. バックアップ

このステップは任意ですが、Nitrokey FIDOの紛失、盗難、破壊に備えて、バックアップのNitrokeyを用意しておくことをお勧めします。

バックアップ・キーを設定するには、上記の手順を繰り返し、``pamu2fcfg -n``を使用します。これにより、``<username>``のフィールドが省略され、出力は次のように``<username>``のある行に追加することができます。

<username>:Zx...mw,04...0a:xB...fw,04...3f
  1. Pluggable Authentication Moduleの変更 PAM

最後のステップは、``/etc/pam.d/``にあるPAMモジュールファイルの設定です。このガイドでは、``common-auth``のファイルを修正します。このファイルは、すべてのサービスに共通する認証設定を処理するからですが、他のオプションも可能です。以下のコマンドで、このファイルを変更することができます。

$ cd /etc/pam.d
$ sudo $editor common-auth

そして、以下の行を追加します。

#Nitrokey FIDO2 config
auth    sufficient pam_u2f.so authfile=/etc/Nitrokey/u2f_keys cue prompt nouserok

ちなみに

  • セントラル認証マッピングを使用しているので、``pam_u2f``オプションで使用するファイルの場所を``authfile``に指示する必要があります。

  • キーの入れ忘れが多い場合``prompt`` オプション make pam_u2f print Insert your U2F device, then press ENTER. となり、Nitrokeyを挿入する機会を与えてくれます。

  • Nitrokeyをタッチするように促されたい場合。cue オプションでは、pam_u2f print Please touch the device. メッセージを表示します。

  • nouserok` は、ユーザ名とパスワードを使ってログインできることを保証します。

``common-auth``を修正したら、ファイルを保存して終了します。

ターミナルで sudo ls と入力することで、設定をテストすることができます。``Please touch the device.``というメッセージが表示され、ターミナルでも同じように出力されるはずです。

nitrouser@nitrouser:~$ sudo ls
[sudo] password for nitrouser:  Please touch the device.

また、ユーザーセッションからログアウトし、ログバックすることで、設定をテストすることができます。Nitrokey FIDO2の抜き差しを行い、パスワードを入力すると、同様の画面が表示されるはずです。

img6

使用方法#

PAMモジュールの修正後は、すぐに設定を試すことができますが、コンピュータを再起動し、Nitrokey FIDO2を抜き差しすることをお勧めします。

このガイドの指示を適切にテストした後(バックアップを設定した後)、次のようにします。``required``や``requisite``の制御フラグの代わりに、``sufficient``のいずれかを使用することをお勧めします。

``required``および``requisite``のフラグは、より厳格なアクセスコントロールを提供し、ログインや設定されたサービスの利用にはNitrokey FIDO2が必要となります。

``PAM``の設定ラインでのコントロールフラグについて、より詳しい情報が必要な場合は、このガイドの最後のセクションを参照して、その違いやそれぞれの使用の意味を理解してください。

PAMモジュール#

いくつかのPAMモジュールファイルがあり、必要に応じて変更することができます。

  • ``/etc/pam.d/common-auth``のファイルを修正することで、グラフィック・ログインと``sudo``の2要素認証にNitrokey FIDOを使用することができるようになります。注意:``common-auth``は、ファイルの最後に追加の設定行を追加して変更する必要があります。

  • FIDO U2F認証をGnomeのグラフィックログインにのみ使用したい場合は、``/etc/pam.d/gdm-password``を変更するとよいでしょう。

  • また、``/etc/pam.d/sudo``コマンドを使用する際にFIDO U2Fを使用したい場合は、``sudo``ファイルを変更することもできます。

制御フラグ#

ステップ7では、``sufficient``の制御フラグを使用して、Nitrokeyが接続されている場合とそうでない場合のPAMモジュールの動作を決定しました。しかし、以下の制御フラグを使用することで、この動作を変更することが可能です。

  • required。これは最も重要なフラグです。認証を継続するためには、モジュールの結果が成功する必要があります。このフラグは、Nitrokeyにアクセスできない場合、コンピュータからロックアウトされる可能性があります。

  • requisite``required``と似ていますが、特定のモジュールが失敗を返した場合には、制御は直接アプリケーションまたは上位のPAMスタックに戻されます。また、このフラグは、Nitrokeyにアクセスできない場合、コンピュータからロックアウトすることができます。

  • ``sufficient``となります。モジュールの結果は、失敗しても無視されます。``sufficient``のフラグは、テスト目的では安全だと考えられます。

  • optional。このモジュールの成否は、このサービス+タイプに関連するスタック内の唯一のモジュールである場合にのみ重要です。``optional``のフラグは、テスト目的で使用しても安全であると考えられます。

警告

  • ``required``または``requisite``が設定されている場合、U2F認証が失敗すると、全体の認証が失敗することになります。設定されたNitrokey FIDOが差し込まれていない、紛失している、または破壊されている場合に失敗となります。

  • PAMモジュールの設定を誤り、``required``や``requisite``のフラグを使用した場合は、コンピュータへのアクセスを失います。

  • また、セントラル認証マッピングを設定した場合、``sudo``を使用することができなくなります。*また、``required``や``requisite``のフラグを使用していた場合は、使用できなくなります。