「Pam oath」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
60行目: 60行目:
 
$ oathtool -v --totp -d 6 ''12345678909876543210''
 
$ oathtool -v --totp -d 6 ''12345678909876543210''
   
{{Warning|TOTP モード設定時のエラー {{ic|SHA512}} は開発者が修正していません。Gitlab の[https://gitlab.com/oath-toolkit/oath-toolkit/issues/8 open issue] を参照してください。}}
+
{{Warning|TOTP モード設定時のエラー {{ic|SHA512}} は開発者が修正していません。[https://gitlab.com/oath-toolkit/oath-toolkit/issues/8 Gitlab の open issue] を参照してください。}}
   
 
HOTPでログインする場合:
 
HOTPでログインする場合:

2023年6月8日 (木) 18:25時点における版

OATH Toolkit はワンタイムパスコード (OTP) を使用する2段階認証を実現します。RFC 標準になっている2つの OTP 手法に対応 (HOTP, TOTP)。OTP を生成するアプリケーションは iOS, Android, Blackberry などの端末で使うことができます。Google Authenticator と同じように認証メカニズムは Linux の PAM システムと統合されています。このページではインストールと設定について説明します。

インストール

oath-toolkit パッケージをインストールしてください。

oath の設定

oath のシードは16進数の数字で、ユーザーごとに一意である必要があります。新しいシードを生成するには、以下のコマンドラインを使用します:

$ openssl rand -hex 10
12345678909876543210
ノート: この記事では上記のシードを例として使用しますが、同じシードを実際に設定するときに使ってはいけません

oath はユーザーごとに必要で、設定ファイル /etc/users.oath の中にリンクします。root でファイルを作成して、ユーザーのシードを記述してください:

/etc/users.oath
# Option User Prefix Seed
HOTP/T30/6 user - 1ab4321412aebcw

ファイルは root からしかアクセスできないようにします:

# chmod 600 /etc/users.oath
# chown root /etc/users.oath

PAM の設定

特定のサービスだけで oath を有効にするには、例えば ssh なら /etc/pam.d/sshd ファイルを編集してファイルの先頭に以下の行を追加します:

auth	  sufficient pam_oath.so usersfile=/etc/users.oath window=30 digits=6

これで正しい oath コードを入力したときに認証が通るようになります。認証を必須にして pam スタックの処理を止めるようにしたい場合は以下のように設定します:

auth	  required pam_oath.so usersfile=/etc/users.oath window=30 digits=6

SSH ログインが機能するためには、ファイル /etc/ssh/sshd_config でこれらのオプションが有効になっていることを確認します:

ChallengeResponseAuthentication yes
UsePAM yes

sshd.service再起動して、変更を有効にします。

公開鍵認証やパスワード認証が有効な場合でも、OATH のリクエスト・レスポンスを強制したい場合は、 /etc/ssh/sshd_config に以下を追加します:

AuthenticationMethods publickey,keyboard-interactive:pam
KbdInteractiveAuthentication yes
PasswordAuthentication yes
ヒント: ローカルログインの場合は、/etc/pam.d/login を編集してください。

OATH パスワードを使用したログイン

TOTP でログインする場合:

$ oathtool -v --totp -d 6 12345678909876543210
警告: TOTP モード設定時のエラー SHA512 は開発者が修正していません。Gitlab の open issue を参照してください。

HOTPでログインする場合:

$ oathtool -v -d 6 12345678909876543210

上記の 12345678909876543210 は適当なシードに置き換えてください。以下のような表示がされます:

Hex secret: 1ab4321412aebc
Base32 secret: DK2DEFASV26A====
Digits: 6
Window size: 0
Start counter: 0x0 (0)

820170

最後の数字は実際にログインに使用することができます。また、Base32 secret は qr コードを生成するのに必要な文字列です。qr コードを生成するには qrencode パッケージをインストールして次のコマンドを実行:

qrencode -o user.png 'otpauth://totp/user@machine?secret=DK2DEFASV26A===='

user, machine, DK2DEFASV26A==== は適当な文字列に置き換えてください。生成が完了したら、お好きな画像作成アプリケーションで qrcode を視覚化して使用することができます。FreeOTP を使用して png のスクリーンショットを撮影し、必要になったときに OTP パスを表示するのが一番簡単です。

ノート: The secret key of your users is the most important information in this system. Once you setup a phone to provide OTP, it does have that key. The qr code in that png file does have that key. You need to take extra care of this file. They should only be stored on encrypted medium (Your phone need to be using encryption for any sane level of security). If not even confined in a sandbox like Samsung Knox to prevent third party application to potentially access them.

参照