デスクトップログインとLinuxユーザー認証¶
はじめに¶
This guide will walk you through the configuration of Linux to use FIDO Universal 2nd Factor, i.e. FIDO U2F with libpam-u2f
and Nitrokey FIDO2.
`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>`_ から入手可能な手順を参照してください。
要求事項¶
Ubuntu 20.04にGnome Display Managerを搭載。
Nitrokey FIDO2 の設定は、`以下の手順で行います。<https://docs.nitrokey.com/fido2/linux>`__.
使い方¶
GUI方式¶
CLIメソッド¶
バックアップユーザーを作成し、root権限を付与する。
これらのコマンドを使って行うことができます。
$ sudo adduser <backup_user> $ sudo usermod -aG sudo <backup_user>
U2Fを1人のユーザーで設定したい場合、ユーザーセッションからロックアウトされても、``<backup_user>``でログインし、メンテナンスを進めることができます。
警告
以下のガイドは、あなたのコンピュータをロックアウトする可能性があります。このようなリスクを認識した上で、まずはセカンダリのコンピューターで以下の手順を使用するか、完全にバックアップを取った後に使用することをお勧めします。
PAM モジュール を設定した後、データにアクセスできなくなる場合があります。
``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
インストール
libpam-u2f
。Ubuntu 20.04では、公式リポジトリから``libpam-u2f``を直接ダウンロードすることができます。
$ sudo apt install libpam-u2f
注釈
クリックすると他のオプションが表示されます
あるいは、
libpam-u2f
を Git から構築することも可能です。ライブラリが正しくインストールされていることを確認するには、次のコマンドを入力します。
$ 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
ディレクトリを準備する。
ホームディレクトリの下に``.config/Nitrokey/``を作成する。
$ mkdir ~/.config/Nitrokey
そして、Nitrokey FIDO2を差し込みます。
準備が完了したら、ログイン時の2要素認証にNitrokey FIDO2を使用するようにコンピュータを設定し、``sudo``の設定を開始します。
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
バックアップ
このステップは任意ですが、Nitrokey FIDOの紛失、盗難、破壊に備えて、バックアップのNitrokeyを用意しておくことをお勧めします。
バックアップ・キーを設定するには、上記の手順を繰り返し、
pamu2fcfg -n
を使用します。これにより、<username>
のフィールドが省略され、出力は次のように``<username>`` のある行に追加することができます。<username>:Zx...mw,04...0a:xB...fw,04...3f
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 [cue_prompt=Please touch the device.] prompt nouserok
Tip
セントラル認証マッピングを使用しているので、``pam_u2f``オプションで使用するファイルの場所を``authfile``に指示する必要があります。
キーの入れ忘れが多い場合``prompt`` オプション make
pam_u2f
printInsert your U2F device, then press ENTER.
となり、Nitrokeyを挿入する機会を与えてくれます。If you would like to be prompted to touch the Nitrokey,
cue
option will makepam_u2f
printPlease touch the device.
message. You can change the message in[cue_prompt=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のプラグを抜き差しし、パスワードを入力すると、同様の画面が表示されます。
使用方法¶
PAMモジュールの修正後は、すぐに設定を試すことができますが、コンピュータを再起動し、Nitrokey FIDO2を抜き差しすることをお勧めします。
このガイドの指示を適切にテストした後(バックアップを設定した後)、次のようにします。``required``や``requisite``の制御フラグの代わりに、``sufficient``のいずれかを使用することをお勧めします。
``required``および``requisite``のフラグは、より厳格なアクセスコントロールを提供し、ログインや設定されたサービスの利用にはNitrokey FIDO2が必要となります。
``PAM``の設定ラインでのコントロールフラグについて、より詳しい情報が必要な場合は、このガイドの最後のセクションを参照して、その違いやそれぞれの使用の意味を理解してください。
PAMモジュール¶
いくつかのPAMモジュールファイルがあり、必要に応じて変更することができます。
``/etc/pam.d/common-auth``のファイルを修正することで、グラフィック・ログインと``sudo``の2要素認証にNitrokey FIDOを使用することができるようになります。注意:``common-auth``は、ファイルの最後に追加の設定行を追加して変更する必要があります。
If you wish to use FIDO U2F authentication solely for Gnome’s graphic login, you might prefer to modify the
/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
はテスト目的で使用しても安全であると考えられている。