Linux で YubiKey 5 を使って TOTP 認証する

2024年12月13日 金曜日


【この記事を書いた人】
古賀 勇

IIJ ネットワーク本部アプリケーションサービス部所属。 メールサービスの運用業務に従事し、日々世界の悪と戦う一児の父親。社内 Power Automate エバンジェリスト(自称)。M3AAWG member / openSUSE Users / WIDE Project メンバー。趣味は大喜利。はがき職人。

「Linux で YubiKey 5 を使って TOTP 認証する」のイメージ

IIJ 2024 TECHアドベントカレンダー 12/13の記事です】

近年、Microsoft 365 や Google などを代表する様々な Web サービスをクラウド上で利用できるようになっており、オンラインアカウントのセキュリティがかつてないほど重要性を増しています。また、標準で多要素認証を要求するサービスも増えてきました。

多要素認証を実現する方法として、RFC6238 で標準化されている TOTP (Time-Based One-Time Password Algorithm) が有名で、多くのサービスがこの仕様に準拠しています。

  • 「いやいや、そんなことは知っている、でも面倒なんだよね」
  • 「もし、TOTP アプリを入れたスマホをなくしたり故障したら、二度とログインできなくなってしまうのでは」
  • 「社員にスマホを貸与するほどではないが、多要素認証は要求したい」

などと思ったことはありませんか?

そんなときに YubiKey 5 を使ってはいかがでしょうか。
(参考) https://www.amazon.co.jp/gp/product/B07HBD71HL

Amazon で 1本 1万円程度で購入でき、最大 32個のサービスを登録できます。
また、タイトルで「Linux で」と書きましたが、基本的に Windows でも同じはずです。

ご注意

Amazon で「YubiKey」と検索すると、数字の「5」の付いていない安価なシリーズの製品も出てきますが、それらは本記事で紹介する TOTP には対応していないようですので注意です。

(参考) https://www.yubico.com/yubikey/?lang=ja

Yubico Authenticator のインストール

公式サイトで Linux 向けのバイナリパッケージが配布されていますので、これをダウンロードして実行するだけで OK。
https://www.yubico.com/products/yubico-authenticator/

次のように任意の場所で展開してください。

$ tar zvxf yubico-authenticator-7.1.0-linux.tar.gz
$ cd yubico-authenticator-7.1.0-linux/
$ ./desktop_integration.sh --install
Created file: /home/koga/.local/share/applications/com.yubico.authenticator.desktop

 

初期セットアップと使いかた

先に YubiKey 5 を USB ポートに挿しておきます。GUI のツールを起動したら、あとはすべて UI から設定できます。
先ほどの手順で desktop_integration.sh を実行しておけば、アプリケーションメニュー → ユーティリティ → Yubico Authenticator にあります。(ディストリビューションによって差異はあるかもしれません)

USB ポートに挿した YubiKey 5 を認識していれば、製品名が表示されます。

TOTP は「アカウント」から追加します。

ここでは Google のアカウントで試してみることにします。セキュリティ → 認証システム に進み、画面上のどこかに、予め TOTP の QR コードを表示しておいて、Yubico Authenticator の「QR コードをスキャン」を押すと自動的に取り込んでくれます。優秀。

「タッチが必要」をクリックして ✔ を入れておくと、ワンタイムパスワードを表示する前に物理的なタッチを要求できます。


( “y” の部分が光るので、ここにタッチ)

万が一、YubiKey 5 を USB ポートに挿しっぱなしにした状態でリモートデスクトップ等で PC が乗っ取られたとしても、物理的に指を置けない限り表示されないから安全、手に届くところにあれば 1秒もあればアクセスできるから手間でもない、という理屈です。じつによくできていますね。

「計算」ボタンを押して YubiKey 5 にタッチすると、ワンタイムパスワードが表示されます。Yubico Authenticator ならコピペできるので、よくあるスマホの TOTP アプリのように、いちいちスマホの画面と見比べなくてよくて助かります。

ちなみに、そもそもの YubiKey 5 にアクセスするためのパスワードを設定することができます。これを設定すれば、仮に YubiKey 5 を落としてしまい、誰かがその YubiKey 5 を拾ったとしても、中身にアクセスできないので安全です。

パスワードを設定した状態で YubiKey 5 を挿し直すと、まずパスワードを求められるようになります。これを突破しないと YubiKey 5 には一切アクセスできません。これなら 3段階の認証があることになりますので、より頑丈だ。

なお、IIJ セキュア MX サービスの Web メール「MailTAP」は、本記事で紹介した TOTP に対応しています。二要素認証で不正アクセスを防止し、従業員様が利用するメールセキュリティを強化することができますので、ぜひ利用を検討してみてください。

 

ご注意・バックアッププランの計画

  • 万が一 YubiKey 5 を無くしたり、YubiKey 5 自体が破損・故障すると、リカバリー手段が提供されていないサービスではデータへアクセスできなくなってしまいます。
  • したがって、YubiKey 5 は同じ鍵を保存する目的で(バックアップ用に) 2個以上のセットで購入するのがオススメとされています。
    (参考) https://www.yubico.com/blog/backup-recovery-plan/
  • または、もう一方を IIJ SmartKey のような、標準的な TOTP 対応のスマートフォンアプリに保存しておくでも良いですし、逆にスマートフォンの TOTP アプリをメインで利用することにして YubiKey 5 は大切に保存しておき、万が一スマートフォンを紛失・故障したときの復旧手段として YubiKey 5 を利用しても良さそうです。(おそらく標準的なスマートフォンより長く使えるでしょう)

登録できる TOTP のサービスが 32個もあるので、例えば、家族みんなの鍵をこの 1本の YubiKey 5 にバックアップしておく、といった使いかたもできそうです。

 

トラブルシューティング (スマートカード接続を開けませんでした)

デスクトップ環境によっては、以下のような表示が出て YubiKey 5 を認識するものの鍵が取り出せないことがあります。
以下は TDE (Trinity Desktop Environment) で発生したときのスクリーンショットです。

これは、デスクトップ環境(TDE)経由で起動している、既存の gpg-agent が scdaemon 経由でスマートカードへのアクセスをしていて、Yubico Authenticator と競合しているのが原因のようです。公式のブログでも説明されています。(https://support.yubico.com/hc/en-us/articles/4819584884124-Resolving-GPG-s-CCID-conflicts)

取り急ぎは gpg-agent プロセスを kill してから pcscd を再起動すると開けるようになりますが、恒久的には以下の手順で解消できます。

$ vim ~/.gnupg/scdaemon.conf
 
(一番下に追記して保存)
disable-ccid

PC を再起動して、無事開けるようになることを確認します。

 

Amazon から届く YubiKey 5 には説明書が同梱されておらず、日本語のサポートページもありませんので少々不安になりますが、最初の「Yubico Authenticator」をダウンロードするところさえ間違えなければ 10分ほどでセットアップも完了します。上記の通り、使いかたも極めてカンタン。(公式サイトに別シリーズのアプリもあるので、知らないとそこが少々迷いポイント)

1人あたり、たった 1万円でセキュリティインシデントの対応が減るのだとしたら、十分費用対効果はあるのではないでしょうか。

IIJ Engineers blog読者プレゼントキャンペーン

Xのフォロー&条件付きツイートで、「IoT米」と「バリーくんシール」のセットを抽選でプレゼント!
応募期間は2024/12/02~2024/12/31まで。詳細はこちらをご覧ください。
今すぐポストするならこちら→ フォローもお忘れなく!

古賀 勇

2024年12月13日 金曜日

IIJ ネットワーク本部アプリケーションサービス部所属。 メールサービスの運用業務に従事し、日々世界の悪と戦う一児の父親。社内 Power Automate エバンジェリスト(自称)。M3AAWG member / openSUSE Users / WIDE Project メンバー。趣味は大喜利。はがき職人。

Related
関連記事