Google Authenticator
関連記事
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 認証を要求する方法を説明します。
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 パスワードの入力が求められます。これらのモジュールの順序を変更すると、順序が逆になります。
OTP または UNIX パスワードのいずれかでログインを許可するには、次のようにします。
auth sufficient pam_google_authenticator.so
/etc/ssh/sshd_config.d/99-archlinux.conf
でキーボードインタラクティブ認証を有効にします。
KbdInteractiveAuthentication yes
最後に、sshd.service
をリロードします。
ローカルネットワーク外から接続したときのみ 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