Google Authenticator

提供: ArchWiki
2024年9月5日 (木) 18:27時点におけるKusanaginoturugi (トーク | 投稿記録)による版 (古い記事を削除)
ナビゲーションに移動 検索に移動

関連記事

Google Authenticator は、ワンタイムパスコード (OTP) を使用した二段階認証手続きを提供します。この認証方式は、オープン認証イニシアチブ(OATH) によって最初に標準化されました。認証メカニズムは Linux の PAM システムに統合されています。本ガイドでは、このメカニズムのインストールと設定方法を紹介します。

逆の操作(Linux 上で Google Authenticator 互換のコードを生成する方法)については、以下のコード生成を参照してください。

インストール

クライアントプログラム google-authenticator(1) と PAM モジュール pam_google_authenticator.so を提供する libpam-google-authenticator パッケージをインストールします。開発版は google-authenticator-libpam-gitAUR で利用可能です。

設定

このセクションでは、システムの PAM を設定して、SSH およびオプションでデスクトップログインに対して Google Authenticator の OTP 認証を要求する方法を説明します。

ノート: 完全な設定を行うには、シークレットキーのファイルを生成する必要があります。PAM 設定を編集(適用)する前に生成することを検討してください。

SSH

警告: すべての設定を SSH 経由で行う場合、すべてが正常に動作することを確認するまでセッションを閉じないでください。さもないと、ログインできなくなる可能性があります。

通常、リモートログインに対してのみ二要素認証を要求します。対応する PAM 設定ファイルは /etc/pam.d/sshd です。Google Authenticator を全体に適用したい場合は、/etc/pam.d/system-auth を変更する必要がありますが、この場合は非常に慎重に進め、ログインできなくなることを避けてください。 このガイドでは、最も安全な(必ずしも必要ではありませんが)ローカルセッションで /etc/pam.d/sshd を編集します。

UNIX パスワードと OTP の両方を入力するには、pam_google_authenticator.so/etc/pam.d/sshd 内の system-remote-login 行の上に追加します。

auth            required        pam_google_authenticator.so
auth            include         system-remote-login
account         include         system-remote-login
password        include         system-remote-login
session         include         system-remote-login

これにより、OTP が要求された後に UNIX パスワードの入力が求められます。これらのモジュールの順序を変更すると、順序が逆になります。

警告: シークレットキーのファイル(下記参照)を生成しているユーザーのみが SSH を使用してログインできます。

OTP または UNIX パスワードのいずれかでログインを許可するには、次のようにします。

auth            sufficient      pam_google_authenticator.so

/etc/ssh/sshd_config.d/99-archlinux.conf でキーボードインタラクティブ認証を有効にします。

KbdInteractiveAuthentication yes

最後に、sshd.serviceリロードします。

警告: SSH キーペアで認証し、パスワードログインを無効化している場合、OpenSSH はこれを無視します。ただし、OpenSSH 6.2 以降では、AuthenticationMethods を追加して、二要素認証と鍵ベースの認証の両方を許可できます。詳細は OpenSSH#二要素認証と公開鍵を参照してください。

ローカルネットワーク外から接続したときのみ OTP を要求する

場合によっては、ローカルネットワーク外から接続するときにのみ 2FA 機能を有効にしたいことがあります。 これを実現するには、ファイル(例: /etc/security/access-local.conf)を作成し、2FA をバイパスできるネットワークを追加します。

# ローカル IP 範囲のみ許可
+ : ALL : 192.168.20.0/24
# 追加ネットワーク: VPN トンネル IP 範囲(ある場合)
+ : ALL : 10.8.0.0/24
+ : ALL : LOCAL
- : ALL : ALL

次に、/etc/pam.d/sshd を編集し、以下の行を追加します。

#%PAM-1.0
auth [success=1 default=ignore] pam_access.so accessfile=/etc/security/access-local.conf
auth      required  pam_google_authenticator.so
auth      include   system-remote-login
account   include   system-remote-login
password  include   system-remote-login
session   include   system-remote-login

デスクトップログイン

警告: 結果を別のコンソールでテストするまで、セッションからログアウトしないでください。

Google Authenticator の PAM プラグインは、コンソールログインや GDM にも使用できます。/etc/pam.d/login または /etc/pam.d/gdm-password ファイルに次の行を追加するだけです。

auth required pam_google_authenticator.so